MCP-连接Azure板和汇流
模型上下文协议 (MCP) 服务器,将 Azure Boards 和 Confluence API 显示为 MCP 兼容 AI 助手(Claude Code、Perplexity 等)的工具。
建筑
Claude Code / Perplexity
│
│ HTTPS
▼
Cloudflare Edge (WAF + Tunnel)
│
│ HTTP
▼
nginx (SSL termination) ── container mcp-nginx
│
│ HTTP proxy
▼
MCP Server (Express + MCP SDK) ── container mcp-server :3005
│
├── Azure DevOps API (PAT)
└── Confluence API (API Token)先决条件
- Docker e Docker编写
- 已配置域的 Cloudflare 帐户
- 具有工作项目读取权限的 Azure DevOps PAT
- 大西洋API代币(汇流)
配置
1. 环境变量
创建文件 .env 从模板:
cp .env.template .env填写变量 :
# Azure DevOps
AZURE_DEVOPS_ORG_URL=https://dev.azure.com/sua_organizacao
AZURE_DEVOPS_PROJECT=nome_do_projeto
AZURE_DEVOPS_PAT=seu_pat
AZURE_DEVOPS_TEAM=nome_da_equipa
# Confluence
CONFLUENCE_URL=https://sua-empresa.atlassian.net
CONFLUENCE_USER=email@exemplo.com
CONFLUENCE_API_TOKEN=seu_token
# Cloudflare Tunnel
CLOUDFLARE_TUNNEL_TOKEN=token_do_tunnel_cloudflare
# Token de segurança para a WAF rule do Cloudflare
CLAUDFLARE_SECURE_TOKEN_RULE=Bearer 要生成安全令牌:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"2.Cloudflare隧道
- 访问 Cloudflare零信任 → 网络→ 隧道→ 创建隧道
- 选择 Cloudflare隧道 并将令牌复制到
CLOUDFLARE_TUNNEL_TOKEN
- 嗯 公共主机名添加 :
| 价值 | |
|---|---|
| 子域名 | mcp (或其他) |
Domain 你的域名 |类型| HTTP | |URL| mcp-server:3005 |
3. 通过WAF保护(Cloudflare)
在 Cloudflare 仪表板 → 您的域名 → 安全→ WAF → 自定义规则→ 创建规则:
- 表达:
not any(http.request.headers["authorization"][*] contains "Bearer ")- 行动:阻止
这将阻止所有在边缘没有正确令牌的请求到达服务器之前。
部署
docker compose up -d要检查日志:
docker compose logs -f要在代码更改后重建:
docker compose up -d --build mcp-server我们没有困惑
- Acede ao困惑→ 设置→ MCP服务器 → Add
- Prenche:
| 价值 | |
|---|---|
| URL | https://mcp./mcp |
| 传输 | 流式HTTP |
| 身份验证 | API密钥 |
| API密钥 | Bearer |
- 保存并激活服务器 。
Uso no Claude代码
添加到 ~/.claude/settings.json:
{
"mcpServers": {
"azure-boards-connector": {
"type": "http",
"url": "http://localhost:3005/mcp"
}
}
}本地访问不需要身份验证 。WAF 规则仅适用于通过 Cloudflare 的请求。
可用工具
Azure板
| 工具 | 描述 |
|---|---|
getTasks | 活动tarefas的层次列表(史诗→用户故事→任务) |
getTaskDescription 特定任务的详细信息,描述和评论。 | |
getChildTasks 父亲任务的女儿 | |
countAllTasks 在项目中创建的任务总数 | |
getTasksByType 按类型过滤的任务: Epic, User Story 或 Task | |
getSprintUserStoriesWithChildren | Sprint用户故事及其子任务 |
listTeams | 列出所有 Azure DevOps 项目团队 |
listTeamIterations 团队的冲刺(Sprint),通过过滤 current/past/future | |
getIterationTasks 按 ID、名称、子字符串或数字分列 Sprint 的工作项目。 | |
listSprints 列出项目中的所有 Sprint。 |
汇流
| 工具 | 描述 |
|---|---|
get_page 按ID检索页面 | |
search_confluence 通过CQL搜索内容 | |
list_spaces 列出所有可用空间。 | |
create_page 创建新页面(Confluence Storage Format) | |
update_page 更新现有页面 | |
get_page_comments | 页面评论,按位置和深度过滤 |
