使用说明
ds-mcp
模型上下文协议(MCP)服务器,将我们的分析Redshift数据转化为OpenAI代理的一流工具。
它作为子进程启动,注册表感知实用程序,并将JSON结果流式传输回任何符合MCP的客户端(CLI、FastAPI后端或其他代理)。
特性
- AnalyticsLeader包装器 –重复使用内部
threevictors.dao.redshift_connector用于认证访问。 - 基于FastMCP的服务器 –使用stdio传输的轻量级异步实现。
- 刀具目录 –描述表、检查模式、预览行、执行有界SQL和运行提供程序监控帮助程序(
get_top_site_issues,analyze_issue_scope). - 可配置表 –通行证
--table <schema.table>反复限制代理可以看到的内容。 - 安全默认值 –仅选择强制加自动
LIMIT任意SQL的行为。
安装
cd ds-agentic-workflows/ds-mcp
python -m venv .venv && source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt # mcp[cli], pandas, boto3, redshift-connector …
pip install -e . # optional editable install
在仓库级别设置您的AWS配置文件/凭据和OpenAI密钥 env.sh 在运行任何东西之前。AnalyticsReader期望VPN+AWS SSO访问分析Redshift环境(例如。, aws sso login --profile 3VDEV).
运行服务器
# From ds-mcp/
python -m ds_mcp.server --name "Analytics Server"
# Limit tools to specific tables
python -m ds_mcp.server --name "Provider Audit" \
--table prod.monitoring.provider_combined_audit \
--table local.analytics.market_level_anomalies_v3
通过调用时 agent_core.AgentExecutor 或 scripts/run_mcp_server.sh,包装器会自动获取资源 env.sh 并注射 PYTHONPATH 因此,该包装无需安装即可使用。
暴露的工具
| 工具 | 目的 |
|---|---|
describe_table(table_name) |
表元数据的信息模式查找。 |
get_table_schema(table_name) |
具有类型、可空性和默认值的列定义。 |
read_table_head(table_name, limit=50) |
预览前N行(跨数据库工作)。 |
query_table(query, limit=1000) |
执行带有强制限制的SELECT/WITH语句。 |
get_top_site_issues(target_date?) |
比较今天与上周/每月的提供商问题。 |
analyze_issue_scope(providercode?, sitecode?, target_date?, lookback_days=7) |
按地理位置、行程类型、客舱、服务水平等细分供应商/现场问题。 |
每个工具返回JSON(DataFrame orient='records'),上游代理以结构化答案的形式呈现。
直接使用AnalyticsLeader
from ds_mcp.core.connectors import AnalyticsReader
reader = AnalyticsReader()
df = reader.read_table_head('prod.monitoring.provider_combined_audit', limit=10)
issues = reader.get_top_site_issues('20251109')
scope = reader.analyze_issue_scope(providercode='QL2', sitecode='QF', lookback_days=14)
扩展服务器
- 添加新的辅助方法
AnalyticsReader对于您需要的任何自定义SQL。 - 将它们注册到
src/ds_mcp/server.py使用@mcp.tool()装饰师。 - 碰撞
EXPOSED_TOOLS/allowed_tools在消费代理中使它们可用。
MCP二进制文件保持与传输无关,因此任何理解模型上下文协议的客户端都可以立即使用新功能。