MCP server giving LLMs read-only access to your Dataedo data catalog metadata.
199
A Model Context Protocol (MCP) server that exposes a Dataedo data catalog to MCP-compatible AI clients. The server lets LLMs answer questions about your live metadata - tables, columns, lineage, glossary terms, business domains, data products - without giving them write access to the catalog.
First, install the Dataedo MCP server with your client.
Standard config works in most of the tools:
{
"mcpServers": {
"dataedo": {
"command": "npx",
"args": ["-y", "dataedo-mcp"],
"env": {
"BACKEND_API_URL": "https://your-dataedo-instance.example.com",
"DATAEDO_PAT": "your-personal-access-token"
}
}
}
}
Use the Claude Code CLI to add the Dataedo MCP server:
claude mcp add dataedo \
-e BACKEND_API_URL=https://your-dataedo-instance.example.com \
-e DATAEDO_PAT=your-personal-access-token \
-- npx -y dataedo-mcp
Or add the standard config block to .mcp.json in your project root (or to the global config).
Follow the MCP Connect to local MCP servers guide and use the standard config above.
Go to Cursor Settings → MCP → Add new MCP Server, then click Edit and paste the standard config above (BACKEND_API_URL and DATAEDO_PAT go in the env block).
Use the Copilot CLI to interactively add the Dataedo MCP server:
/mcp add
Alternatively, edit ~/.copilot/mcp-config.json and add the standard config block above (with type: "local" and tools: ["*"]).
Stdio mode is configured via two environment variables:
| Variable | Required | Description |
|---|---|---|
BACKEND_API_URL | yes | Root URL of your Dataedo instance, e.g. https://dataedo.example.com — without the /api suffix (the server appends /api/... itself) |
DATAEDO_PAT | yes | Personal Access Token used for all backend calls. Treat like a password. |
Generate a PAT in your Dataedo instance: profile page → Personal Access Tokens → create token. The token is shown once — copy it into your client config. It grants the same read access as your user account (store it carefully), expires after 180 days by default, and can be revoked from the same page at any time.
The server can also run as a long-lived HTTP service for remote MCP clients. Authentication is the same PAT, sent by each client as an Authorization: Bearer <token> header — no OAuth setup, no Azure AD, no server-side credentials. Example (Claude Code):
claude mcp add --transport http dataedo https://mcp.yourdomain.com/mcp \
--header "Authorization: Bearer ${DATAEDO_PAT}"
The npm package only ships stdio - for the HTTP deployment and per-client configuration, see CONFIGURATION.md.
Missing required environment variable: DATAEDO_PAT
The client didn't pass the env var to the spawned process. Double-check the env block in your client config.
Tools don't appear in the client
npx -y dataedo-mcp with env vars set) and check stderr for errors.401 Unauthorized from tool calls
The PAT is missing, expired, or invalid. Generate a new one and update the config.
ECONNREFUSED / network errors
BACKEND_API_URL is wrong or unreachable from your machine. Test with curl -I $BACKEND_API_URL.
search
DATA_SET, REPORT, TERM, BUSINESS_DOMAIN, DATA_DOMAIN, DATA_SOURCE, LOOKUP, PROGRAM, DATA_PRODUCT. Use this first to find object IDs for other tools.input (string, optional): Search phrase. Multiple words contribute to ranking.group (string, optional): Limit to a single object group. Returns up to 50 results per group when set, or 10 per group when omitted.limit (number, optional): Result cap, 1–100.search_details
COLUMN, REPORT_FIELD, PROGRAM_INPUT. Separate from search because the underlying tables are large; uses prefix-matching FTS only.input (string, optional): Search phrase.group (string, optional): One of COLUMN, REPORT_FIELD, PROGRAM_INPUT.limit (number, optional): Result cap, 1–100.list_tables
id (number): Database or report instance ID.search (string, optional): Filter by name.objectType (string, optional): Filter by type, e.g. TABLE, VIEW, REPORT, PROCEDURE, SQL_QUERY.page (number, optional): Page number, default 1.pageSize (number, optional): Page size, default 100.get_table
id (number): Table ID.get_column
id (number): Column ID.get_relationships
id (number): Table ID.list_procedures
id (number): Database ID.search (string, optional): Filter by name.objectType (string, optional): Filter by type.page (number, optional): Page number, default 1.pageSize (number, optional): Page size, default 100.get_procedure
id (number): Procedure ID.id (number): Database ID.get_report_instance
id (number): Report instance ID.list_reports
id (number): Report instance ID.search (string, optional): Filter by name.page (number, optional): Page number, default 1.pageSize (number, optional): Page size, default 100.get_report
id (number): Report ID.get_lineage
{ nodes, edges, truncated }. Use to answer "what feeds X" / "what depends on X". When truncated is true, raise maxDepth or nodeLimit, or re-query from a more specific node.objectType (string): e.g. TABLE, VIEW, REPORT, PROCEDURE, SQL_QUERY.object_id (integer): Object ID from search or other tools.direction (string, optional): upstream, downstream, or both (default).maxDepth (integer, optional): BFS hops, 1–20. Default 3.nodeLimit (integer, optional): Cap on total nodes, 1–1000. Default 50.get_column_lineage
objectType (string): column or parameter.id (number): Column or parameter ID.direction (string): upstream, downstream, or both.get_glossary
id (number): Glossary ID.get_glossary_entries
objectType (string): The object's type, e.g. TABLE, VIEW.id (number): The object ID.get_term
id (number): Term ID.get_term_linked_objects
id (number): Term ID.get_domain_overview
id (number): Domain ID.get_area_overview
id (number): Area ID.get_data_product
id (number): Data product ID.Content type
Image
Digest
sha256:c369b48c8…
Size
59.8 MB
Last updated
about 2 months ago
docker pull dataedo/mcp