Sign inSign up

dataedo/mcp

By dataedo

•Updated about 2 months ago

MCP server giving LLMs read-only access to your Dataedo data catalog metadata.

Image
0

199

dataedo/mcp repository overview

⁠Dataedo MCP

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.

⁠Key Features
  • Read-only by design. All 21 tools are annotated read-only; the server never mutates the catalog.
  • Live metadata. Every call hits your Dataedo instance directly - no stale snapshots, no extraction step.
  • Token-efficient responses. Search and list endpoints return compact, paginated results tuned for LLM context windows.
  • Permission-aware. Lineage, domain, and area responses honor the caller's view permissions on the backend.
⁠Requirements
  • Node.js 20 or newer
  • A reachable Dataedo instance
  • A Personal Access Token (PAT) for that instance
  • Claude Desktop, Claude Code, Cursor, or any other MCP client
⁠Getting started

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"
      }
    }
  }
}
Claude Code

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).

Claude Desktop

Follow the MCP Connect to local MCP servers⁠ guide and use the standard config above.

Cursor

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).

Copilot CLI

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: ["*"]).

⁠Configuration

Stdio mode is configured via two environment variables:

VariableRequiredDescription
BACKEND_API_URLyesRoot URL of your Dataedo instance, e.g. https://dataedo.example.com — without the /api suffix (the server appends /api/... itself)
DATAEDO_PATyesPersonal Access Token used for all backend calls. Treat like a password.
⁠Personal Access Token

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.

⁠Self-hosting (HTTP mode)

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⁠.

⁠Troubleshooting

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

  • Restart the client after changing config.
  • Verify the config file path - Claude Desktop logs the active path on startup.
  • Run the server manually (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.

⁠Tools
Search
  • search

    • Description: Search the catalog by name, title, or description across 9 object groups: DATA_SET, REPORT, TERM, BUSINESS_DOMAIN, DATA_DOMAIN, DATA_SOURCE, LOOKUP, PROGRAM, DATA_PRODUCT. Use this first to find object IDs for other tools.
    • Parameters:
      • 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.
    • Read-only: true
  • search_details

    • Description: Search detail-level objects - columns, report fields, procedure parameters - across COLUMN, REPORT_FIELD, PROGRAM_INPUT. Separate from search because the underlying tables are large; uses prefix-matching FTS only.
    • Parameters:
      • input (string, optional): Search phrase.
      • group (string, optional): One of COLUMN, REPORT_FIELD, PROGRAM_INPUT.
      • limit (number, optional): Result cap, 1–100.
    • Read-only: true
Tables & columns
  • list_tables

    • Description: List tables in a database or report instance. Paginated; supports name and type filtering.
    • Parameters:
      • 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.
    • Read-only: true
  • get_table

    • Description: Get full details for a table - columns, description, schema, parent database.
    • Parameters:
      • id (number): Table ID.
    • Read-only: true
  • get_column

    • Description: Get full details for a single column - data type, description, custom fields.
    • Parameters:
      • id (number): Column ID.
    • Read-only: true
  • get_relationships

    • Description: Foreign-key relationships for a table - answers "how does this table connect to others".
    • Parameters:
      • id (number): Table ID.
    • Read-only: true
Stored procedures
  • list_procedures

    • Description: List procedures in a database. Paginated; supports name and type filtering.
    • Parameters:
      • 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.
    • Read-only: true
  • get_procedure

    • Description: Get full details for a stored procedure or function.
    • Parameters:
      • id (number): Procedure ID.
    • Read-only: true
Databases
  • get_database
    • Description: Get full details for a database.
    • Parameters:
      • id (number): Database ID.
    • Read-only: true
Reports
  • get_report_instance

    • Description: Get full details for a reporting instance.
    • Parameters:
      • id (number): Report instance ID.
    • Read-only: true
  • list_reports

    • Description: List reports under a report instance. Paginated; supports name filtering.
    • Parameters:
      • 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.
    • Read-only: true
  • get_report

    • Description: Get full details for a single report.
    • Parameters:
      • id (number): Report ID.
    • Read-only: true
Lineage
  • get_lineage

    • Description: Returns the upstream/downstream lineage subgraph for an object as { 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.
    • Parameters:
      • 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.
    • Read-only: true
  • get_column_lineage

    • Description: Column-level lineage - trace how a column or procedure parameter is derived, or which downstream columns depend on it.
    • Parameters:
      • objectType (string): column or parameter.
      • id (number): Column or parameter ID.
      • direction (string): upstream, downstream, or both.
    • Read-only: true
Glossary & terms
  • get_glossary

    • Description: Get full details for a glossary.
    • Parameters:
      • id (number): Glossary ID.
    • Read-only: true
  • get_glossary_entries

    • Description: Glossary/business terms linked to a specific object. Use to surface business context for a table, view, report, etc.
    • Parameters:
      • objectType (string): The object's type, e.g. TABLE, VIEW.
      • id (number): The object ID.
    • Read-only: true
  • get_term

    • Description: Get full details for a glossary term - name, definition, status.
    • Parameters:
      • id (number): Term ID.
    • Read-only: true
  • get_term_linked_objects

    • Description: Data objects linked to a glossary term - answers "which tables/columns use this business term".
    • Parameters:
      • id (number): Term ID.
    • Read-only: true
Domains & data products
  • get_domain_overview

    • Description: Domain overview - description, workflow status, areas, linked terms, linked assets. Areas are filtered by the caller's permissions.
    • Parameters:
      • id (number): Domain ID.
    • Read-only: true
  • get_area_overview

    • Description: Area overview - description, workflow status, parent domain, child areas, linked terms, linked assets.
    • Parameters:
      • id (number): Area ID.
    • Read-only: true
  • get_data_product

    • Description: Data product overview - title, description, type, workflow status, linked assets, and a data quality summary (validity score and validity ratio).
    • Parameters:
      • id (number): Data product ID.
    • Read-only: true

Tag summary

Content type

Image

Digest

sha256:c369b48c8…

Size

59.8 MB

Last updated

about 2 months ago

docker pull dataedo/mcp