--- title: "Data Access MCP Server" slug: "data-access-mcp-server" description: "Query data from any Dataddo source directly in Claude, Cursor, Gemini, Mistral, and other AI clients through the Dataddo Data Access MCP server." updated: 2026-10-05T08:51:47Z published: 2026-10-05T08:51:47Z canonical: "docs.dataddo.com/data-access-mcp-server" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.dataddo.com/llms.txt > Use this file to discover all available pages before exploring further. # Data Access MCP Server 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)](https://modelcontextprotocol.io), an open standard that AI clients such as Claude, ChatGPT, 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](/docs/data-access-mcp-server#supported-ai-clients). Data Access vs. Control Dataddo runs two MCP servers. The **Data Access MCP server** (this article) reads your data. The [Control MCP Server](/docs/control-mcp-server) manages the Dataddo platform itself. Both use OAuth with your Dataddo account, but they have different endpoints. ## Server Details | | | | --- | --- | | **Endpoint URL** | `https://headless.dataddo.com/mcp-data` | | **Transport** | Streamable HTTP | | **Authentication** | OAuth 2.1 with your Dataddo account. Authorization server: `https://identity.dataddo.com`. Your client opens a Dataddo sign-in page the first time it connects. | | **Scopes** | `mcp:read` | | **Data scope** | Only the flows or Contexts attached to an AI destination or AI Model in the Dataddo account you sign in with | | **Rate limits** | Monitor the `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Retry-After` response headers. | ## Authentication The server follows the MCP authorization specification, so most clients need only the endpoint URL. The client discovers everything else on its own: 1. The client calls the endpoint without a token and receives HTTP 401 with a pointer to the server's protected resource metadata (`https://headless.dataddo.com/.well-known/oauth-protected-resource/mcp-data`). 2. The metadata names `https://identity.dataddo.com` as the authorization server. 3. The client registers itself (Dynamic Client Registration, or a Client ID Metadata Document) and opens the Dataddo sign-in page in your browser. 4. You sign in and approve access. The client receives an access token and a refresh token and uses them on every request. | OAuth detail | Value | | --- | --- | | Authorization endpoint | `https://identity.dataddo.com/v1/oauth/authorize` | | Token endpoint | `https://identity.dataddo.com/v1/oauth/token` | | Revocation endpoint | `https://identity.dataddo.com/v1/oauth/revoke` | | Registration endpoint | `https://identity.dataddo.com/v1/oauth/register` | | Grant types | `authorization_code`, `refresh_token` | | PKCE | Required, `S256` | | Client authentication | None (public clients) | ## How It Works The server does not expose your whole account. It exposes only the data you explicitly attach to an AI destination: 1. You create an **authorizer** for your AI client. 2. 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. 1. Your AI client connects to the endpoint, and you sign in with your Dataddo account. 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 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 | Setup guide | | --- | --- | | Claude (web and desktop) | [Claude](/docs/claude) | | Claude Code | [Claude](/docs/claude#claude-code) | | ChatGPT (Developer mode) | [ChatGPT](/docs/chatgpt) | | Cursor | [Cursor](/docs/cursor) | | Google Gemini CLI | [Google Gemini](/docs/gemini-cli) | | Le Chat by Mistral AI (requires workspace administrator) | [Mistral](/docs/le-chat-mistral-ai) | ### Other MCP Clients Any MCP client that supports the **Streamable HTTP** transport and MCP OAuth authorization can connect with the endpoint URL alone. A typical configuration looks like this: ``` { "mcpServers": { "dataddo": { "url": "https://headless.dataddo.com/mcp-data" } } } ``` The exact key names (`url`, `httpUrl`, `serverUrl`) differ between clients. Check your client's MCP documentation. ## Security Considerations - **Your Dataddo sign-in is the access boundary.** A connected client can read the data of every flow or Context attached to an AI destination or AI Model in the account you signed in with. - **Keep data sets apart with separate destinations or AI Models.** Attach only the flows or Contexts a given team should see. - **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](/docs/pii-exclusion-and-hashing) on the source so sensitive columns never enter the flow. - **Revoke access** by removing the connector in your AI client. The client's tokens stop working once they are revoked or expire. - AI assistants can misinterpret results. Check `data_status` and `known_gaps` before acting on an answer. ## Troubleshooting - **The sign-in page does not open.** Your client may not support MCP OAuth. Use a client from the list above. - **The client asks for a token or a custom header.** Leave authentication on OAuth and connect with the endpoint URL only. - **The client cannot connect.** Verify the URL is exactly `https://headless.dataddo.com/mcp-data` and that your client supports the Streamable HTTP transport. SSE-only clients are not supported. - **A flow or Context is missing.** Attach it to an AI destination or AI Model in the account you signed in with, 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-After` header indicates when you can retry. Need help? Contact us at [support@dataddo.com](mailto:support@dataddo.com). ## Related Articles - [Control MCP Server](/docs/control-mcp-server) - [Data Delivery to AI & Agents](/docs/data-delivery-to-ai-agents) - [PII Exclusion and Hashing](/docs/pii-exclusion-and-hashing) - [Metadata Inclusion](/docs/metadata-inclusion) - [Data Destinations Overview](/docs/overview-destinations) ## Related - [Claude](/claude.md) - [Google Gemini](/gemini-cli.md) - [Mistral](/le-chat-mistral-ai.md) - [ChatGPT](/chatgpt.md) - [Cursor](/cursor.md)