GDP MCP工具
用于Grubhub数据平台操作的MCP(模型上下文协议)服务器。18个服务类别的40多种工具。适用于Claude Code、VS Code、Cursor、JetBrains或任何兼容MCP的客户端。
快速入门(5分钟)
1.克隆并设置虚拟环境
# Ask your team lead for the repo URL, or use:
git clone https://github.com/asuar16/gdp-mcp-tools.git
cd gdp-mcp-tools
# macOS / Linux
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Windows (PowerShell)
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -r requirements.txt2.配置凭据
cp .env.example src/.env编辑 src/.env 凭你的证件。看 凭证 在......下面
3.配置您的MCP客户端
添加 .mcp.json 在 任何回购 您需要这些工具的位置:
macOS/Linux:
{
"mcpServers": {
"gdp-tools": {
"type": "stdio",
"command": "/absolute/path/to/gdp-mcp-tools/venv/bin/python",
"args": ["/absolute/path/to/gdp-mcp-tools/src/server.py"]
}
}
}窗户:
{
"mcpServers": {
"gdp-tools": {
"type": "stdio",
"command": "C:\\path\\to\\gdp-mcp-tools\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\gdp-mcp-tools\\src\\server.py"]
}
}
}4.连接VPN并开始使用
所有工具都需要VPN。先连接,然后使用任何MCP客户端。
______________________________________________________________________
从任何Repo使用
已经建立了gdp mcp工具?以下是如何在1分钟内将其添加到新的仓库中:
第一步:找到你的路
cd ~/path/to/gdp-mcp-tools
echo "Python: $(pwd)/venv/bin/python"
echo "Server: $(pwd)/src/server.py"第二步:创建 .mcp.json 在您的新仓库中
cd ~/path/to/your-new-repo
cat > .mcp.json MCP tools appear in Copilot/AI sidebarGemini CLI:
cd ~/path/to/your-new-repo
gemini
# Tools auto-load from .gemini/settings.json反重力:
Open project -> Tools auto-load from mcp_config.json就是这样 .mcp.json 告诉任何MCP客户端在哪里找到服务器。新仓库中不需要安装——一切都从 gdp-mcp-tools/.
示例:添加到事件集市、ods_data或任何仓库
{
"mcpServers": {
"gdp-tools": {
"type": "stdio",
"command": "/Users/yourname/gdp-mcp-tools/venv/bin/python",
"args": ["/Users/yourname/gdp-mcp-tools/src/server.py"]
}
}
}适用于任何回购——事件集市、ods_data,甚至非GDP项目。
______________________________________________________________________
客户端设置
克劳德代码(命令行界面/桌面/网络)
添加 .mcp.json 到您的项目根目录:
{
"mcpServers": {
"gdp-tools": {
"type": "stdio",
"command": "/absolute/path/to/gdp-mcp-tools/venv/bin/python",
"args": ["/absolute/path/to/gdp-mcp-tools/src/server.py"]
}
}
}VS代码/光标
添加 .vscode/settings.json:
{
"mcp.servers": {
"gdp-tools": {
"type": "stdio",
"command": "/absolute/path/to/gdp-mcp-tools/venv/bin/python",
"args": ["/absolute/path/to/gdp-mcp-tools/src/server.py"]
}
}
}谷歌反重力
添加 ~/.gemini/antigravity/mcp_config.json (或项目级别 .gemini/settings.json):
macOS/Linux:
{
"mcpServers": {
"gdp-tools": {
"command": "/absolute/path/to/gdp-mcp-tools/venv/bin/python",
"args": ["/absolute/path/to/gdp-mcp-tools/src/server.py"]
}
}
}窗户:
{
"mcpServers": {
"gdp-tools": {
"command": "C:\\path\\to\\gdp-mcp-tools\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\gdp-mcp-tools\\src\\server.py"]
}
}
}要在配置更改后重新加载:使用 管理MCP服务器>查看原始配置 在Antigravity UI中,或重新启动。
Gemini CLI
添加 ~/.gemini/settings.json (全球)或 .gemini/settings.json (项目层面):
macOS/Linux:
{
"mcpServers": {
"gdp-tools": {
"command": "/absolute/path/to/gdp-mcp-tools/venv/bin/python",
"args": ["/absolute/path/to/gdp-mcp-tools/src/server.py"]
}
}
}窗户:
{
"mcpServers": {
"gdp-tools": {
"command": "C:\\path\\to\\gdp-mcp-tools\\venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\gdp-mcp-tools\\src\\server.py"]
}
}
}要重新加载:运行 /mcp reload 在Gemini CLI中,或重新启动。
JetBrains(IntelliJ/PyCharm)
设置>工具>MCP服务器>添加:
- 姓名:
gdp-tools - 命令:
/absolute/path/to/gdp-mcp-tools/venv/bin/python - Args:
/absolute/path/to/gdp-mcp-tools/src/server.py
任何MCP客户端(stdio传输)
/path/to/gdp-mcp-tools/venv/bin/python /path/to/gdp-mcp-tools/src/server.py从stdin读取JSON-RPC,将响应写入stdout,记录到stderr。
______________________________________________________________________
凭证
复制 .env.example 到 src/.env 并填写:
| 凭证 | 必填 | 如何获取 |
|---|---|---|
USERNAME | 是 | 您的LDAP用户名(如果未设置,则从$USER自动检测到) |
JENKINS_TOKEN | 是 | Jenkins>配置文件>配置>API令牌 |
OKTA_PASSWORD | 是 | 您的Okta登录密码 |
PRESTO_PASSWORD | 是 | Trino集群密码(询问团队负责人) |
JIRA_PERSONAL_TOKEN | 是 | Jira>个人资料>个人访问令牌 |
JIRA_USERNAME | 是 | 您的@grubhub.com电子邮件 |
GITHUB_TOKEN | 可选 | GitHub>设置>开发者设置>PAT(repo+read:org,GrubhubProd的SSO) |
REDASH_API_KEY | 可选 | dev-redash.gdp.data.grubhub.com>配置文件>API密钥 |
SLACK_MCP_XOXC_TOKEN | 可选 | Slack浏览器DevTools>网络>从请求复制 |
DD_API_KEY | 可选 | DataDog>组织设置>API密钥 |
PAGERDUTY_USER_API_KEY | 可选 | PagerDuty>用户设置>API令牌 |
DATAHUB_TOKEN | 可选 | DataHub用户界面>设置>访问令牌 |
______________________________________________________________________
工具目录
数据平台(13个工具)
| 工具 | 说明 |
|---|---|
sync_table | 将prod表同步到dev |
jenkins_deploy_branch | 将Git分支部署到dev |
jenkins_deploy | 部署版本以进行生产 |
jenkins_integrate | 整合公关 |
jenkins_start_cluster / stop_cluster | EMR集群管理 |
jenkins_validate_schedule | 验证schedule.json |
azkaban_run_flow | 执行阿兹卡班流程 |
azkaban_monitor | 监控执行直至完成 |
azkaban_status | 检查执行状态 |
azkaban_cancel | 取消运行执行 |
azkaban_flows | 列出项目中的流程 |
azkaban_list_executions | 列出最近执行的死刑 |
trino_query | 在dev/preprod/prod上执行SQL |
可观察性(7个工具)
| 工具 | 说明 |
|---|---|
list_emr_clusters / describe_emr_cluster | EMR集群信息 |
spark_app_details / spark_stage_details | Spark历史服务器 |
get_flow_logs | 通过SSH记录Azkaban的执行日志 |
vpn_connect / vpn_status / vpn_disconnect | F5 VPN管理 |
s3_list_partitions / s3_list_batch_ids | S3数据检查 |
分析(7个工具)
| 工具 | 说明 |
|---|---|
pv_failure_summary | 光伏框架失效分析 |
pv_analyze_metric | 深潜指标调查 |
pv_investigate_root_cause | 根本原因追踪 |
pv_generate_report | HTML报告生成 |
backfill_plan / backfill_fire / backfill_list_jobs | 回填管理 |
calculate_sync_plan / check_sync_status | 智能同步规划 |
协作(10个工具)
| 工具 | 说明 |
|---|---|
jira_search / jira_get_issue / jira_create_issue | Jira问题 |
jira_transition_issue / jira_add_comment | Jira工作流程 |
slack_post / slack_read_message / slack_read_thread / slack_search | 松弛 |
github_list_prs / github_read_pr / github_comment_pr / github_update_pr | GitHub PR |
get_pr_discussions | 公关讨论话题 |
数据目录(7个工具)
| 工具 | 说明 |
|---|---|
datahub_search / datahub_get_dataset | DataHub元数据 |
datahub_get_lineage / datahub_get_column_lineage | DataHub沿袭 |
datahub_whoami | DataHub 验证 |
redash_run_query / redash_create_query / redash_update_query | Redash查询 |
redash_create_visualization / redash_clone_query | 红灰 |
create_branded_google_doc / convert_md_to_branded_html | 谷歌文档 |
______________________________________________________________________
文件结构
gdp-mcp-tools/
README.md # This file
TOOLS.md # Detailed tool reference
requirements.txt # Python dependencies
.env.example # Credential template (copy to src/.env)
.mcp.json.example # MCP client config template
.gitignore
src/
server.py # FastMCP entry point (stdio transport)
auth.py # Shared auth (Jenkins, Azkaban, Trino, Jira)
.env # Your credentials (gitignored, never committed)
tools/
jenkins_tools.py # Deploy, sync, integrate, cluster ops
scheduler_tools.py # Azkaban flows, monitor, cancel
trino_tools.py # SQL queries (dev/preprod/prod)
emr_tools.py # EMR cluster list/describe
s3_tools.py # S3 partition listing
backfill_tools.py # Backfill planning + execution
sync_plan_tools.py # Smart sync planning
spark_tools.py # Spark History Server
flowlogs_tools.py # Azkaban log retrieval via SSH
pv_tools.py # PV failure analysis
vpn_tools.py # VPN connect/disconnect/status
jira_tools.py # Jira issue management
slack_tools.py # Slack messaging
github_tools.py # GitHub PR operations
pr_tools.py # PR discussion threads
google_doc_tools.py # Branded Google Doc creation
datahub_tools.py # DataHub lineage/search
redash_tools.py # Redash query/viz management
scripts/ # Utility scripts (not MCP tools)
datadog_wrapper.sh # DataDog MCP wrapper
pagerduty_wrapper.sh # PagerDuty MCP wrapper
google_workspace_wrapper.sh
create_redash_queries.py
config/
config.json # Tool configuration______________________________________________________________________
故障排除
| 问题 | 修复 |
|---|---|
ModuleNotFoundError: No module named 'mcp' | pip install mcp[cli] 在venv |
PRESTO_HOST must be set | 检查 src/.env 存在正确的值 |
Connection timed out | 先连接VPN(vpn_connect 工具或手册) |
Azkaban login failed | 检查OKTA_PASSWORD是否为最新 |
Jenkins 401 | 重新生成JENKINS_TOKEN |
Jira 401 | 重新生成JIRA_PERSONAL_TOKEN |
DNS resolution failed | VPN已断开,请重新连接 |
| 客户端中未显示工具 | 重新启动MCP客户端。检查 .mcp.json 路径是绝对的。 |
| Windows路径问题 | 使用 \\ JSON路径中,或正斜杠 / |
