Skip to content
Raw Markdown
5 min

Connect and ask from an MCP client

Cassis works with any client that supports remote MCP servers over Streamable HTTP. Add one server URL, authenticate, and the agent answers from your context with the SQL attached.

Prerequisites: a Cassis account (a demo account counts) and an MCP-compatible client.

Add the server

The endpoint is the same in every client: https://app.getcassis.com/mcp/, using Streamable HTTP. Add it as a remote MCP server. If the client supports MCP OAuth, it opens a browser for sign-in. A non-interactive client can use an API key as a bearer token instead.

Here are the exact steps for three common clients:

bash
claude mcp add --transport http cassis https://app.getcassis.com/mcp/

Or commit a project-scoped config, which carries no secret and works for everyone on the repo:

.mcp.json
{
"mcpServers": {
  "cassis": {
    "type": "http",
    "url": "https://app.getcassis.com/mcp/"
  }
}
}

Settings, then Connectors, then Add custom connector. Paste https://app.getcassis.com/mcp/.

Settings, then MCP, then Add new MCP server. Paste https://app.getcassis.com/mcp/, transport HTTP.

With OAuth, the client stores and refreshes the token after you sign in. If your account moves to another organization, the next token refresh asks you to reconnect.

Terminal · your repository
$ claude mcp add --transport http cassis https://app.getcassis.com/mcp/
Added HTTP MCP server cassis to local config
$ claude
cassis · authentication required, opening browser…
app.getcassis.com
Authorize Claude Code
Signed in as you. Claude Code will be able to ask questions, read project status and the source schema, and triage issues on your projects.
Authorize Cancel
✓ cassis · connected

Check the connection

Ask your client something that makes it call Cassis:

Which Cassis projects can you see?

The agent calls list_projects and returns the projects your Cassis account can reach.

Ask a real question

Type it as you would to a colleague:

Claude Desktop · Cassis (MCP)
Which product categories had the highest delivered GMV last year?
Plan awaiting approval
Rank product categories by delivered GMV in the most recent full calendar year in the data, returning the top categories with their GMV in EUR.
Assumptions
· “Last year” means the most recent full calendar year in the data
· Category means PRODUCTS.CATEGORY, not department
· Return the top 10
Uses STALLORA.ORDER_ITEMS, STALLORA.ORDERS, STALLORA.PRODUCTS · business_volume
Approve the plan to run it, or tell me which assumption to change.
Yes, run it.
The top delivered-GMV categories are led by bed_bath_table (€6.96M), followed by watches_gifts (€6.76M) and health_beauty (€6.57M).
sql: SELECT category, SUM(delivered_gmv_eur) ... ORDER BY delivered_gmv_eur DESC LIMIT 10
objects_used: STALLORA.ORDER_ITEMS, STALLORA.ORDERS, STALLORA.PRODUCTS
rows: 10 · ontology_version: 3

MCP client example

User: Which product categories had the highest delivered GMV last year?

Plan awaiting approval: Rank product categories by delivered GMV in the most recent full calendar year in the data, returning the top categories with their GMV in EUR.

  • “Last year” means the most recent full calendar year in the data.
  • Category means PRODUCTS.CATEGORY, not department.
  • Return the top 10.

User: Yes, run it.

Answer: The top delivered-GMV categories are led by bed_bath_table (€6.96M), followed by watches_gifts (€6.76M) and health_beauty (€6.57M). The response also contains SQL, ten rows, objects used, and the pinned context version.

The client renders the plan in the conversation. When Cassis needs your decision, correct or approve the assumptions before it runs. The answer includes SQL, results when the project has a live warehouse, provenance, and the published context version. Presentation differs by client; the response contract is in ask_question.

How it behaves

Ask normally
The client chooses ask_question; you do not need to write tool calls.
Decisions wait
A question with a genuine fork returns a plan and waits for your approval. Reply with a correction when an assumption is wrong.
Follow-ups keep context
Same chat, new question. The chat stays pinned to the context version it started on.
Rate the conversation
Tell the agent whether the answers helped and why. It records your rating and reason with submit_feedback without asking anything new, and the rating shows in the chat in the web app. See submit_feedback.
Answers come from the published context
Not from a colleague’s branch, and not from an unmerged pull request. get_project_status says which version you are on.

What the agent cannot reach

An MCP agent can ask questions, rate a conversation, inspect project status and the warehouse schema, and triage detected issues. It cannot read or edit the context; that work happens in a repository checkout.

An agent that changes definitions uses a checkout and opens a pull request: Curate a git-managed project. The full list is the capability matrix.

Non-interactive agents and CI use an API key instead. A scheduled job or a custom agent that cannot open a browser sends a long-lived key as a bearer token to the same endpoint. See API keys.