Skip to content

Installation & configuration

Install

The MCP server ships with the YData SDK — installing the SDK adds a ydata-mcp-server console script to the environment's bin/:

pip install ydata-sdk

Which environment?

Install into the Python environment your MCP client will launch the server from — and note the full path to that environment's ydata-mcp-server script (e.g. /path/to/env/bin/ydata-mcp-server). Every client configuration in Connecting a client points its command at that path, since MCP clients don't inherit your shell's PATH.

The server communicates over stdio — it's meant to be launched by an MCP client as a subprocess, not run interactively. To explore it interactively during development, use the MCP Inspector instead:

fastmcp dev inspector /path/to/ydata/mcp/server.py

Configure connections

Connector access is configured through named profiles in a JSON file, never through tool arguments. Set the YDATA_MCP_CONNECTIONS environment variable (in the client's env block — see Connecting a client) to the file's path. Tools then reference a connection purely by name — the file is never read by, or exposed to, the MCP client, so no hostname, bucket name, or credential ever flows through the AI model's context.

Each profile needs a type plus that connector's own constructor fields. A minimal file with a single local-filesystem connection:

{
  "local": { "type": "local" }
}

One example profile per supported type:

{
  "prod_s3": {
    "type": "s3",
    "access_key_id": "AKIA...",
    "secret_access_key": "...",
    "aws_region": "eu-central-1"
  },
  "prod_gcs": {
    "type": "gcs",
    "project_id": "my-gcp-project",
    "key_path": "/path/to/service-account.json"
  },
  "prod_azure_blob": {
    "type": "azure_blob",
    "account_name": "mystorageaccount",
    "account_key": "..."
  },
  "local_disk": {
    "type": "local"
  },
  "prod_postgres": {
    "type": "postgresql",
    "username": "app_user",
    "password": "...",
    "database": "app_db",
    "hostname": "db.internal.example.com",
    "port": 5432,
    "schema": "public"
  },
  "prod_mysql": {
    "type": "mysql",
    "username": "app_user",
    "password": "...",
    "database": "app_db",
    "hostname": "db.internal.example.com",
    "port": 3306
  },
  "prod_snowflake": {
    "type": "snowflake",
    "username": "app_user",
    "password": "...",
    "database": "app_db",
    "hostname": "myaccount.snowflakecomputing.com",
    "warehouse": "COMPUTE_WH",
    "schema": "PUBLIC"
  },
  "prod_azure_sql": {
    "type": "azure_sql",
    "username": "app_user",
    "password": "...",
    "database": "app_db",
    "hostname": "myserver.database.windows.net",
    "port": 1433
  },
  "prod_bigquery": {
    "type": "bigquery",
    "project_id": "my-gcp-project",
    "key_path": "/path/to/service-account.json"
  },
  "prod_databricks_lakehouse": {
    "type": "databricks_lakehouse",
    "host": "https://my-workspace.cloud.databricks.com",
    "access_token": "dapi...",
    "staging_credentials": {
      "access_key_id": "AKIA...",
      "secret_access_key": "..."
    },
    "cloud": "aws",
    "catalog": "main",
    "schema": "default"
  },
  "shared_databricks_data": {
    "type": "databricks_unity_catalog",
    "profile": "/path/to/delta-sharing-config.share"
  }
}

Every field beyond type is passed straight through to that connector's own constructor — see the supported connectors documentation for what each accepts.

An unknown connection name in a tool call raises a clear error listing what is configured, so a typo is immediately visible in the conversation.

Configure LLM providers (optional)

Six tools call out to an LLM — generate_document, generate_document_dataset, generate_document_from_template, generate_qa_pairs, generate_llm_schema, and generate_llm_synthetic_data. They resolve provider credentials the same way connections do: named profiles in a separate JSON file, pointed to by the YDATA_MCP_LLM_CONFIG environment variable. Skip this file entirely if you won't use those tools.

{
  "providers": {
    "anthropic": {
      "model": "claude-opus-4-6",
      "subscription_key": "sk-ant-..."
    },
    "openai": {
      "model": "gpt-5",
      "subscription_key": "sk-..."
    }
  }
}

Supported provider names are openai, anthropic, gemini, and workbench.

No default provider — by design

Every LLM-backed tool requires an explicit provider argument on each call. There is no default or "active" provider: the caller always states which one to use, and an unconfigured name raises an error listing the providers that are actually configured.

Verify

With the client configured (next page), ask it something like "list the connections the ydata MCP server has" — it should call list_connections and report the names and types from your connections file, and test_connection can health-check any of them.