使用说明
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.txt
2.配置凭据
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 << 'EOF'
{
"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"]
}
}
}
EOF
将路径替换为步骤1中的实际路径。
步骤3:开始你的AI编码会话
克劳德代码:
cd ~/path/to/your-new-repo
claude
# GDP tools will auto-connect. Try: "check vpn status"
VS代码/光标:
Open the repo folder -> MCP tools appear in Copilot/AI sidebar
Gemini 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路径中,或正斜杠 / |