pingcode-health-mcp

pingcode-health-mcp

An MCP server for monitoring PingCode project health, enabling PMs to query project status, sprint progress, and risk items directly from Claude Code.

Category
访问服务器

README

🔍 PingCode 项目健康度监控

让 PM 在 Claude Code 或 IM 群里一眼看清项目状态 —— 聚合、风控、自动告警。

Python License

这是什么?

对接 PingCode Open API,提供两个入口:

入口 场景 实现
MCP Server PM 在 Claude Code 里直接对话查询 fastmcp stdio 模式,5 个工具
IM 机器人 PM 在企微/钉钉群里 @bot 查询 FastAPI + 钉钉 Stream WebSocket

同一套代码、同一份配置,两种输出格式(Markdown 表格 vs 群聊简短消息)。

┌──────────────┐     ┌──────────────────────────┐     ┌──────────────┐
│  Claude Code │────▶│  MCP Server (stdio)      │────▶│              │
│  (PM 本地)   │     │  src/server.py           │     │              │
└──────────────┘     └──────────────────────────┘     │   PingCode   │
                                                       │   Open API   │
┌──────────────┐     ┌──────────────────────────┐     │              │
│  钉钉/企微群 │────▶│  Bot (HTTP + Stream)     │────▶│              │
│  (群里 @bot) │     │  src/bot.py              │     │              │
└──────────────┘     └──────────────────────────┘     └──────────────┘
                            │
                            ▼
                     ┌──────────────┐
                     │  Web 管理后台 │
                     │  :8080/admin │
                     └──────────────┘

功能一览

5 个 MCP 工具

工具 用途
list_pingcode_projects 列出所有项目 "看看有哪些项目"
get_project_health 项目健康度仪表盘 "XX项目 状态怎么样"
get_sprint_status Sprint / 迭代进度 "XX项目 冲刺进度"
get_risk_items 风险项明细 "哪些逾期了"
query_work_items 灵活查询 "张三有哪些未完成的 task"

群机器人能力

  • 在企微/钉钉群里 @机器人 XX项目 健康度 → 自动回复
  • 支持模糊项目名匹配("储能BMS" → 自动找到对应项目)
  • 可选 DeepSeek AI 兜底(规则匹配不上时用自然语言理解)
  • 风险自动推送(red/yellow → 群里弹告警)

Web 管理后台

浏览器打开 http://localhost:8080/admin

  • PingCode 认证配置 + 一键测试连接
  • 健康度阈值、状态标签自定义
  • 通知推送、Bot、隧道、AI 所有配置
  • 保存即时生效,无需重启

快速开始

1. 安装

git clone https://github.com/YOUR_USER/pingcode-health-mcp.git
cd pingcode-health-mcp

# 推荐:使用虚拟环境
python -m venv venv
source venv/bin/activate   # Windows: venv\Scripts\activate

pip install -e .

2. 配置

三种方式任选一种:

# 方式 A: CLI 配置向导(推荐新手)
python -m src.setup

# 方式 B: Web 管理后台(推荐有桌面环境)
python -m src.bot
# → 浏览器会自动打开 http://localhost:8080/admin
# → 在页面上填写 PingCode 凭证,点击"保存配置"

# 方式 C: 手动编辑
cp config.example.yaml config.yaml
# 编辑 config.yaml,填写 pingcode.client_id 和 client_secret

3. 连接 Claude Code

编辑项目根目录的 .claude/mcp.json(或 Claude Code 全局设置):

{
  "mcpServers": {
    "pingcode-health": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "/path/to/pingcode-health-mcp",
      "description": "PingCode 项目健康度监控"
    }
  }
}

重启 Claude Code,就可以直接问 "帮我看看 XX 项目的健康度"。

4. 部署到服务器(Bot 用)

# 上传代码到服务器
scp -r . user@your-server:/opt/pingcode-health/

# SSH 到服务器,运行部署脚本
ssh user@your-server
cd /opt/pingcode-health
sudo bash deploy/setup.sh

# 填写配置后启动
sudo systemctl start pingcode-bot

项目结构

pingcode-health-mcp/
├── README.md
├── pyproject.toml              # 依赖 + 入口点
├── config.example.yaml         # 配置模板
├── .env.example                # 环境变量模板
├── mcp.md                      # 需求文档
├── setup.py                    # CLI 配置向导入口
│
├── src/
│   ├── server.py               # MCP Server — 5 个 tool
│   ├── pingcode_client.py      # PingCode API — OAuth2 认证 + 分页 + 缓存
│   ├── health.py               # 健康度聚合引擎 — 统计 + 风险评级
│   ├── notifier.py             # Webhook 推送 — 企微/钉钉/飞书
│   ├── bot.py                  # Bot HTTP 服务 + Web 管理后台
│   ├── dingtalk_stream_bot.py  # 钉钉 Stream 模式机器人
│   ├── dingtalk_crypto.py      # 钉钉加解密
│   ├── config.py               # 配置管理 — YAML + 环境变量
│   ├── models.py               # 数据模型
│   ├── tunnel.py               # 内网穿透 — cloudflared / ngrok
│   └── setup.py                # CLI 配置向导
│
├── tests/
│   └── test_health.py
│
└── deploy/
    └── setup.sh                # Ubuntu 部署脚本 + systemd

配置参考

配置项 环境变量 config.yaml 必填
Client ID PINGCODE_CLIENT_ID pingcode.client_id
Client Secret PINGCODE_CLIENT_SECRET pingcode.client_secret
Base URL PINGCODE_BASE_URL pingcode.base_url
Webhook URL NOTIFICATION_WEBHOOK_URL notification.webhook_url
通知类型 NOTIFICATION_TYPE notification.type
钉钉 AppKey DINGTALK_APP_KEY bot.dingtalk_app_key
钉钉 AppSecret DINGTALK_APP_SECRET bot.dingtalk_app_secret
AI API Key DEEPSEEK_API_KEY ai.api_key
监听端口 PORT bot.port

常见问题

Q: PingCode Client ID / Secret 在哪找? 登录 PingCode 开放平台 → 应用管理 → 创建"自研应用" → 选择 OAuth2 client_credentials 模式 → 复制凭证。

Q: 钉钉回调 URL 验证失败? 确保事件订阅和消息接收都切换为 Stream 模式(不要混用 HTTP 模式),且"开发管理" Tab 中没有残留的 HTTP 地址配置。

Q: MCP Server 连不上? 检查 config.yaml(或环境变量)中 client_idclient_secret 是否已填写。运行 python -m src.setup 可诊断。

Q: 内网 Bot 怎么让企微/钉钉回调到?config.yaml 中设置 tunnel.enabled: true,Bot 启动时自动启动 cloudflared / ngrok 隧道。

Q: 需要监控多个项目的健康度? list_pingcode_projects 列出所有项目 → 用 project_id 逐个查,或让 AI 批量调用。

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选