Labsco
MCP SERVER · OFFICIAL PROJECT

Teradata

by Teradata

Ask a Teradata system questions in plain language — profile a table, chase who is consuming the warehouse, trace object lineage, chart a result — without writing the SQL first.

Relational SQL DatabasesVerified
Summary
It answers the questions a warehouse team actually gets asked, not just "run this SQL".

Who is burning the CPU, which tables are joined together in practice, what breaks if this view changes, which columns are full of nulls — each of those is a tool rather than a query someone has to write, and the lineage family runs in Python so it needs no stored procedures installed. Two settings shape a deployment: the profile decides which families a client even sees, keeping an analyst's tool list away from DBA and security tooling, and the row limits are what stop a careless select from filling the context window.

What it is

Teradata's own server for its database, grouped into families: base exploration, data quality, DBA and capacity, security, dependency graph analysis, charting, SQL workload clustering and RAG. Which families load is set by a profile.

What you get
  • Exploration without SQL: base_databaseList, base_tableList, base_tablePreview, base_columnDescription, base_columnMetadata with exact Teradata type codes and character sets, and base_tableDDL
  • base_readQuery runs SQL you supply, bounded by DEFAULT_ROW_LIMIT and a hard MAX_ROW_LIMIT so a result set cannot flood the context; base_saveDDL writes an object's DDL to a .sql file
  • Data profiling as its own family: qlty_columnSummary across every column at once, qlty_univariateStatistics for one, plus missing values, rows with missing values, negative values, distinct categories and standard deviation
  • base_tableAffinity shows which tables co-occur in the same queries — the JOIN relationships nobody documented — and base_tableUsage reports which objects are actually queried and by whom
  • DBA coverage: dba_databaseSpace, dba_tableSpace and dba_systemSpace, dba_resusageSummary by time, application and workload, dba_flowControl for throttling events, dba_userDelay for queue waits, dba_sessionInfo, dba_featureUsage, dba_databaseVersion, and the SQL run against a table or by a user
  • Security answers: sec_userDbPermissions, sec_rolePermissions and sec_userRoles
  • Dependency graph analysis in pure Python, no stored procedures: graph_traceLineage with wildcards, graph_findRootObjects, graph_connectedComponents, graph_detectCycles, graph_bfsLevels, and graph_analyseDatabase running all of them on one shared edge set
  • Charts drawn straight from a table — plot_line_chart, plot_pie_chart, plot_polar_chart and plot_radar_chart read the table themselves rather than taking pre-fetched rows
  • SQL workload optimisation: sql_Execute_Full_Pipeline clusters high-usage queries, with sql_Analyze_Cluster_Stats and sql_Retrieve_Cluster_Queries for reading the results
  • rag_Execute_Workflow answers a question against document context as a single call
  • Custom tools, prompts and semantic-layer cubes defined in YAML in a config directory, and hooks that intercept tool calls for monitoring, audit or rate limiting
Requirements

A Teradata system and uv. It runs as uvx teradata-mcp-server, with the connection in DATABASE_URI in teradata://username:password@host:1025/database form; LOGMECH selects TD2, LDAP, KRB5 or JWT, and TD_POOL_SIZE, TD_MAX_OVERFLOW and TD_POOL_TIMEOUT tune the pool. PROFILE decides which tool families load — all by default — and CONFIG_DIR points at a directory of YAML for custom tools and profiles. MCP_TRANSPORT switches between stdio and streamable-http, with MCP_HOST and MCP_PORT; AUTH_MODE is none or basic, with its own cache TTL and rate limits. Whatever the database account is allowed to do bounds everything above.

Setup effort

One command plus a key — uvx teradata-mcp-server, then supply credentials