Teradata MCP 服务器模板
概述
Teradata MCP 服务器是一个开源项目,我们欢迎通过拉取请求做出贡献。
我们提供三套工具和相关的帮助提示
td_base_工具:
execute_read_query - 运行读取查询
execute_write_query - 运行写入查询
read_table_DDL - 返回显示表结果
read_database_list - 返回所有数据库的列表
read_table_list - 返回数据库中的表列表
read_column_description - 返回表中列的描述
read_table_preview - 返回表中的列信息和 5 行
read_table_affinity - 获取通常一起使用的表
read_table_usage - 测量给定模式中用户对表和视图的使用情况
prompt_general-针对数据库创建 SQL 查询
prompt_table_business_description - 生成表的业务描述
prompt_database_business_description - 根据表生成数据库的业务描述
td_dba_工具:
read_user_sql_list - 返回用户最近执行的 SQL 列表
read_table_sql_list - 返回表的最近执行的 SQL 列表
read_table_space - 返回 CurrentPerm 表空间
read_database_space - 返回数据库的分配空间、已用空间和已用百分比
read_database_version - 返回数据库版本信息
read_resuage_summary - 获取每个工作负载类型和查询复杂性存储桶按工作日和小时划分的 Teradata 系统使用情况摘要指标。
read_flow_control - 按天和小时获取 Teradata 系统流量控制指标
read_feature_usage - 获取用户功能使用情况指标
read_user_delay - 获取 Teradata 用户延迟指标。
prompt_table_archive - 为数据库表创建表存档策略。
prompt_database_lineage - 创建数据库中表的定向沿袭图。
td_数据质量工具:
missing_values - 返回具有缺失值的列名列表
negative_values - 返回具有负值的列名列表
distinct_categories - 返回列中的类别列表
standard_deviation - 返回列的平均值和标准差
您可以在custom_tools.yaml文件或任何以_tools.yaml结尾的文件中定义自定义“查询”工具。只需指定工具名称、描述和要执行的 SQL 查询即可。目前不支持任何参数。
测试目录包含一个用于测试工具的简单 ClientChatBot 工具。
环境设置
步骤 1 - 假设您已在本地计算机上安装了 uv 软件包,则环境已搭建完毕。uv 的安装说明可在https://github.com/astral-sh/uv找到。
步骤 2 - 使用以下命令克隆 mcp-server 存储库
在 Windows 上
在 Mac/Linux 上
步骤 3 - 您需要更新 .env 文件
将 env 文件重命名为 .env
数据库 URI 将具有以下格式 teradata://username:password@host:1025/databasename,使用 ClearScape Analytics Experience https://www.teradata.com/getting-started/demos/clearscape-analytics
用户名需要更新
密码需要更新
Teradata 主机需要更新
数据库名称需要更新
需要有 LLM 凭证才能使 /test/pydanticaiBedrock.py 代码正常运行
SSE 设置
SSE :布尔值,用于确定您的服务器是否将使用 SSE 传输(SSE = True)或 stdio 传输(SSE=False)
SSE_HOST:服务器的 IP 地址,默认值为 127.0.0.1
SSE_PORT:服务器可访问的端口地址,默认为8001
示例 .env 文件
使用 MCP Inspector 测试您的服务器
步骤 1 - 启动服务器,在终端中输入以下内容
注意:如果您在 Windows 计算机上运行此程序并收到 npx、npm 或 node.js 错误,请从此处安装所需的 node.js 软件: https://github.com/nodists/nodist
步骤 2 - 打开 MCP 检查器
您应该打开检查工具,转到http://127.0.0.1:6274
点击工具
点击列表工具
点击 read_database_list
点击运行
测试其他工具,每个工具都应该有一个成功的结果
Control+c 在终端中停止服务器
运行服务器
您可以使用以下命令运行服务器: uv run teradata-mcp-server
使用 stdio 将服务器添加到代理
选项 1 - pydanticai 聊天机器人
步骤 1 - 确认 .env 文件中的 SSE 标志已设置为 False
第 2 步 - 修改 ./test/ClientChatBot.py 脚本以指向您安装服务器的位置,您需要修改以下行
步骤 3 - 运行 ./test/ClientChatBot.py 脚本,这将与有权访问 MCP 服务器的代理创建一个交互式会话。从终端执行。
要求代理列出数据库
要求代理列出数据库中的表
要求代理显示数据库中的所有对象
向代理询问需要针对表运行 SQL 的问题
输入“quit”退出。
选项 2 - ADK 聊天机器人
步骤 1 - 确认 .env 文件中的 SSE 标志已设置为 False
第 2 步 - 从终端进入 teradata_mcp_server/test 目录。
步骤 3 - 打开ADK Web 服务器
步骤 4 - 与 td_agent 聊天
选项 3 - mcp_chatbot
步骤0-修改测试目录中的server_config.json,确保路径正确。
步骤 1 - 确认 .env 文件中的 SSE 标志已设置为 False
第 2 步 - 从终端进入 teradata_mcp_server 目录并运行 mcp_chatbot
步骤 3 - 通过输入 /prompts 列出提示
步骤 4 - 运行提示来描述数据库
使用 stdio 向 Visual Studio Code Co-pilot 添加工具
确认 .env 文件中的 SSE 标志已设置为 False
在 VS Code 中,“显示并运行命令”
选择“MCP:添加服务器”
选择“Command Stdio”
在命令中输入“uv”运行
输入服务器名称作为 ID
设置.json文件应该打开
修改目录路径并确保它指向安装服务器的位置
添加参数,使其看起来像:
注意:您需要修改系统参数中的目录路径,该路径必须是完整路径。您可能还需要在命令中使用 uv 的完整路径。
您可以从 settings.json 文件中启动服务器,也可以“MCP:启动服务器”
使用 SSE 向 Visual Studio Code Co-pilot 添加工具
确认 .env 文件中的 SSE 标志已设置为 False
您需要从终端启动服务器
在 VS Code 中,“显示并运行命令”
选择“MCP:添加服务器”
选择“HTTP 服务器发送事件”
输入服务器位置的 URL,例如http://127.0.0.1:8001/sse
输入服务器名称作为 ID
选择用户空间
设置.json文件应该打开
添加参数,使其看起来像:
在 settings.json 文件中,或者您可以“MCP:启动服务器”
将 MCP 服务器添加到 Claude Desktop
您可以将此服务器 Claude 桌面添加到您的claude_desktop_config.json配置文件中:
注意:您需要修改系统参数中的目录路径,该路径必须是完整路径。您可能还需要在命令中使用 uv 的完整路径。
注意:这要求uv在您的系统路径中可供 Claude 使用或在您的系统上全局安装(例如,对于 Mac OS 用户,uv 使用brew安装)。
使用 mcpo 将工具公开为 REST 端点
您可以使用mcpo将此 MCP 工具公开为与 OpenAPI 兼容的 HTTP 服务器。
例如,使用 uv: uvx mcpo --port 8001 --api-key "top-secret" -- uv run teradata-mcp-server
您的 Teradata 工具现在可以作为本地 REST 端点使用,查看文档并在http://localhost:8001/docs上进行测试
使用带有 Open WebUI 的服务器
Open WebUI是一个用户友好的自托管 AI 平台,旨在完全离线运行,支持各种 LLM 运行器,例如 Ollama。它提供了一种通过直观的 GUI 与 LLM 和 MCP 服务器交互的便捷方式。它可以使用mcpo组件与此 MCP 服务器集成。
首先按照上面部分所述运行 mcpo。
通过http://localhost:8080访问用户界面。要添加 MCP 工具,请前往“设置”>“工具”>“添加连接”,然后输入您的 mcpo 服务器连接信息(例如, localhost:8001 ,如果您在 mcpo 部分执行了命令行,则密码为top-secret )。
您应该能够在右侧的聊天控制阀部分看到工具并让您的模型使用它。