baic-dl-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BAIC_UI_URL | Yes | The URL of the BAIC UI. | |
| BAIC_TRANSPORT | No | Transport mode: 'stdio' (default) or 'http'. | stdio |
| BAIC_USER_NAME | Yes | The username used to authenticate with the BAIC platform. | |
| BAIC_BACKEND_URL | Yes | The URL of the BAIC backend. | |
| BAIC_USER_PASSWD | Yes | The password used to authenticate with the BAIC platform. | |
| BAIC_USER_MGMT_URL | Yes | The URL of the BAIC user management service. | |
| BAIC_ALLOW_DESTRUCTIVE | No | Set to 'true' to allow destructive operations (delete pipeline, delete golden SQL, delete knowledge cluster). | false |
| BAIC_ALLOW_AUTO_APPROVE | No | Reserved for chaining the pipeline review gate automatically. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_sourcesA | List configured data sources (source connections), one page at a time. source_type: RELATIONAL_DB (default), DOCUMENT, CONVERSATION, NOSQL, or "" for all. Returns source_id (usable everywhere a source id is needed), name, engine type, and the account/database/schema so you can tell which sources can share a knowledge cluster. Paged: read |
| get_sourceB | Full detail for one source, including its connection config (secrets masked). |
| list_connector_typesA | The connector engines this platform supports. There is no server endpoint for this; the list is fixed in the frontend. |
| create_snowflake_sourceA | Create a new Snowflake source connection. authentication_type: "default" (username+password), "oauth", or "keypair". Only "oauth" has been confirmed against the live API; if a create fails on this field, that is the most likely cause. |
| create_postgres_sourceA | Create a new Postgres source connection. connection_url is a full JDBC URL, e.g. jdbc:postgresql://host:5432/dbname?sslmode=require Postgres config differs from Snowflake: one JDBC URL + schema, no account or warehouse. |
| list_destinationsA | List destinations - the vector stores or warehouses that ingestion writes into. Needed to pick a destination_id for import_source_metadata. Paged: read |
| list_available_tablesA | List the tables a source exposes, before importing any of them. This is the Import Source table picker - use it to choose what to ingest. |
| import_source_metadataA | Crawl a source's metadata into a new knowledge base. Asynchronous: returns a task_id plus the new knowledge_base_id. Poll with get_ingestion_task. destination_id is required - get one from list_destinations. This writes embeddings into that destination, so pick a destination you own. |
| import_and_waitA | Import a source's metadata into a knowledge base and wait for it to finish. Convenience wrapper over import_source_metadata + get_ingestion_task. Returns the knowledge_base_id and the final status; if it is still running when timeout_s elapses the import continues server-side and you can keep polling get_ingestion_task. Writes embeddings into destination_id, so use a destination you own. |
| get_ingestion_taskA | Check the status of a metadata import started by import_source_metadata. |
| list_knowledge_basesA | List knowledge bases (KBs) - the metadata imported via Data Ingestion, one page at a time. Each row links a KB to its source, so use this to go from a source name to a knowledge_base_id. status SUCCESS means metadata was crawled successfully. Paged, and this is the big one: a deployment can hold thousands of KBs. Read |
| list_kb_tablesA | List the tables inside a knowledge base, one page at a time. Paged: read |
| get_table_detailsA | Table descriptions and column-level detail for one or more tables. Batches - pass several table names in one call. include_profiles adds full profiling stats, which are large. Paged over An empty This tool is for exploring a schema. It is not a validation step for generated SQL; do not call it to check SQL before saving a pipeline. |
| get_table_relationshipsC | Discovered foreign-key style relationships between tables in a knowledge base. |
| list_golden_sqlA | List the Golden SQL examples attached to a knowledge base. Paged: read |
| add_golden_sqlA | Save a SQL query as a Golden SQL example on a knowledge base. Use the description to record the question the query answers - that is what makes it useful to the agents later. |
| delete_golden_sqlA | Delete a Golden SQL example. Requires BAIC_ALLOW_DESTRUCTIVE=true. |
| get_kb_instructionsA | Read the instructions attached to a knowledge base, with all versions. |
| update_kb_instructionsA | Overwrite the active instructions on a knowledge base. Replaces, does not append. |
| list_knowledge_clustersA | List knowledge clusters (KCs) - the groupings of knowledge bases used by the agents. Paged: read |
| get_knowledge_clusterA | KC detail: member knowledge bases, their engines, and the KC instructions. knowledge_base_ids here is what the agent tools need, so fetch this before asking questions if you want to inspect the context first. |
| get_kc_instructionsA | Read a knowledge cluster's instructions, with all versions. Note: a KC can have an empty active version while an older version holds the real
content, so |
| update_kc_instructionsA | Overwrite a knowledge cluster's active instructions. Replaces, does not append. High leverage: these instructions steer the SQL the Data Engineering agent generates - grain, dedup keys, null handling, dialect, idempotency. Verified to change the output. |
| create_knowledge_clusterA | Create a knowledge cluster from knowledge bases, optionally with instructions. Refuses knowledge bases that would need federation - all structured KBs must share one engine and one account, because the platform cannot query across them. Unstructured (document) KBs are exempt. |
| check_kc_federationB | Check whether a set of knowledge bases could legally share one knowledge cluster. |
| delete_knowledge_clusterB | Delete a knowledge cluster. Requires BAIC_ALLOW_DESTRUCTIVE=true. |
| discover_tablesA | Ask the Data Discovery agent which tables and columns are relevant to a question. Fast (~15s) and the best starting point before writing SQL. Returns the relevant tables, their join relationships, and a per-table column shortlist. |
| ask_data_analystA | Ask the Data Analyst agent a question about a knowledge cluster.
execute_query mirrors the UI's "Run SQL" toggle and defaults to true, which is almost always what is wanted: a question about data wants an answer, not a query. Only pass false when the user explicitly asks for the SQL without running it. Each attempt takes roughly 40-60s. Pass session_id to continue a conversation. When executing, an empty result is retried up to max_attempts times, because the same question intermittently produces SQL that returns no rows. If every attempt comes back empty the result carries an execution_warning - an empty result is indistinguishable from a failed execution on this platform, so do not tell the user "there is no data". |
| generate_pipeline_sqlA | Ask the Data Engineering agent to write pipeline SQL. Branch on
Pass save_to_version_id (the pipeline's version_id) so that if SQL arrives on this turn it is saved without a round trip.
Do not validate generated SQL against table metadata, and do not summarise it. |
| approve_table_selectionA | Confirm the table selection and generate the SQL. Step 2 of 2. keep_tables and all_offered_tables take fully-qualified DB.SCHEMA.TABLE names;
all_offered_tables is the PREFERRED: pass save_to_version_id (the pipeline's version_id) and the SQL is generated and
saved in this single call. You get back a Do not validate the generated SQL. It is produced by the platform's own engineering agent from the knowledge cluster's metadata and instructions; it does not need checking against table metadata, and calling get_table_details or list_kb_tables to verify it is wasted work. Report the saved receipt and stop. Without save_to_version_id you get |
| list_pipelinesA | List data pipelines, optionally only those in one knowledge cluster. Paged: read |
| create_pipelineA | Create a data pipeline. source_id and knowledge_base_id identify where the pipeline writes; knowledge_cluster_id supplies the context the agent reasons over. Returns the pipeline id and its first version id, both needed to save SQL. |
| get_pipeline_sqlA | Read a pipeline's saved SQL and visual pipeline graph. Defaults to the active version. |
| save_pipeline_sqlA | Save SQL and/or the visual pipeline graph onto a pipeline version. Write-only. This is a plain write. Do NOT do any of the following around it:
Pass the Returns a compact receipt - saved flag, byte count, graph node count, version - and deliberately not the SQL body. Confirm the receipt in one line and stop. Use get_pipeline_sql only if the SQL itself is genuinely needed later. Partial update: passing only sql leaves an existing graph untouched. |
| delete_pipelineC | Delete a pipeline. Requires BAIC_ALLOW_DESTRUCTIVE=true. |
| whoamiA | Confirm connectivity and show which environment, tenant, and user are in play. Call this first in a session. Everything is environment-specific - hosts, ids, how much data exists - so never assume which deployment you are pointed at; the backend_url identifies it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prepmonk/baic-dl-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server