The Data Access MCP server lets AI assistants and agents query the data Dataddo extracts for you, directly from a conversation. It is built on the Model Context Protocol (MCP), an open standard that AI clients such as Claude, Cursor, Gemini, and Le Chat use to discover and call external tools.
You ask in plain language, and the model queries your data in business terms (customers, invoices, deals). Dataddo keeps the data fresh, stores it in SmartCache, and serves it together with its metadata: technical metadata such as data freshness, and business metadata such as what each table and column means. You do not write any code, and you do not operate a storage layer.
This article describes the server itself. For step-by-step setup in a specific client, see the AI destination articles listed in Supported AI Clients.
Dataddo runs two MCP servers. The Data Access MCP server (this article) reads your data. The Control MCP Server manages the Dataddo platform itself. They use different endpoints and different authentication.
Server Details
| Endpoint URL | https://headless.dataddo.com/mcp-data |
| Transport | Streamable HTTP |
| Authentication | Dataddo API token, sent on every request as Authorization: Bearer <YOUR_DATADDO_TOKEN> |
| Data scope | Only the flows or Contexts attached to a destination or AI Model whose authorizer uses the token |
| Rate limits | Monitor the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Retry-After response headers. |
How It Works
The server does not expose your whole account. It exposes only the data you explicitly attach to an AI destination:
- You generate a Dataddo API token.
- You create an authorizer for your AI client that uses the token.
- You attach data to it:
- On the Data Anywhere and Enterprise plans, you create an AI destination (for example, Claude) and attach one or more flows to it.
- On the Data to AI plan, you create an AI Model and attach one or more Contexts to it. A Context is data that Dataddo keeps ready to query.
- Your AI client connects to the endpoint with the token. When the model needs data, Dataddo serves it from SmartCache and returns the rows together with their freshness and business metadata.
Data appears after the attached flows or Contexts run for the first time.
A Semantic Layer, Not a SQL Endpoint
The server is a semantic layer. The model asks for entities and fields by name, with filters, grouping, date grains, and predefined metrics. Dataddo never accepts SQL from the model. This keeps queries within what the semantic model defines and prevents the model from running arbitrary statements against your data.
A flow or Context can be available but not yet queryable. The model can see it as soon as it is attached, but it can query it only after a semantic model covers it. list_flows reports this for each one.
Available Tools
| Tools | Purpose |
|---|---|
list_flows, describe_flow |
See which flows are available with this token and what each one holds. |
list_models, list_entities, describe_entity, search, sample_values |
Find the business entities, fields, relationships, and metrics that can be queried. |
query |
Query an entity by field names, with filters, grouping, date grains, and predefined metrics. |
data_status, known_gaps |
Check how fresh the data is and which questions the data cannot answer. |
refresh, report_problem |
Request fresh data for an entity, or report an answer that looks wrong. |
A typical conversation starts with list_flows or list_entities to find the data, continues with describe_entity to learn its fields and metrics, and ends with query. data_status lets the model tell you how current the answer is.
Supported AI Clients
Each AI client is a destination (or AI Model) in Dataddo. Follow the article for your client:
| Client | Status | Setup guide |
|---|---|---|
| Claude (web and desktop) | Supported where the Request headers option is available in the custom connector dialog | Claude |
| Claude Code | Supported | Claude |
| Cursor | Supported | Cursor |
| Google Gemini CLI | Supported | Google Gemini |
| Le Chat by Mistral AI | Supported (requires workspace administrator) | Mistral |
| ChatGPT | Not yet supported. ChatGPT custom connectors cannot send a static Bearer token. | ChatGPT |
Other MCP Clients
Any other MCP client that supports the Streamable HTTP transport and can send a custom Authorization header can connect. Use the endpoint URL and your token. A typical configuration looks like this:
{
"mcpServers": {
"dataddo": {
"url": "https://headless.dataddo.com/mcp-data",
"headers": {
"Authorization": "Bearer <YOUR_DATADDO_TOKEN>"
}
}
}
}
The exact key names (url, httpUrl, serverUrl) differ between clients. Check your client's MCP documentation.
Security Considerations
- The token is the access boundary. Anyone who holds the token can read the data of every flow or Context attached through an authorizer that uses it. Treat it like a password.
- Use one token per destination or AI Model to keep data sets apart. For example, give the marketing team's Claude destination a different token than the finance team's.
- Exclude or hash PII before it reaches the model. Once a model has seen a value, you cannot take it back. Use PII Exclusion and Hashing on the source so sensitive columns never enter the flow.
- Revoke leaked tokens immediately under Settings > Security > API Tokens, then create a new one and update the authorizer.
- AI assistants can misinterpret results. Check
data_statusandknown_gapsbefore acting on an answer.
Troubleshooting
- Authentication error (HTTP 401). The request reached the server without a valid token. Check that the header is exactly
Authorization: Bearer <YOUR_DATADDO_TOKEN>and that the token has not been revoked. - The client cannot connect. Verify the URL is exactly
https://headless.dataddo.com/mcp-dataand that your client supports the Streamable HTTP transport. SSE-only clients are not supported. - A flow or Context is missing. Attach it to a destination or AI Model whose authorizer uses the same token the client sends, then let it run.
- A flow or Context is listed but cannot be queried. It is available, but no semantic model covers it yet.
- Stale data. Review the flow schedule. Dataddo serves the most recent data it has stored.
- Rate limit errors. The
X-RateLimit-Retry-Afterheader indicates when you can retry.
Need help? Contact us at support@dataddo.com.