Azure DevOps MCP 服务器

一个模块化的模型上下文协议(MCP)服务器,用于与Azure DevOps的Wiki、测试计划和工作项集成,支持Claude Desktop等MCP客户端与Azure DevOps资源交互。

  • by Raulster24
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 raulster24/azure-devops-mcp-server

使用说明

Azure DevOps MCP服务器

用于Azure DevOps与wiki、测试计划和工作项集成的模块化模型上下文协议(MCP)服务器。此服务器使Claude Desktop和其他MCP客户端能够与Azure DevOps资源进行交互。

✨ 主要特点

  • 🚀 FAST Wiki操作:两阶段方法-首先列出页面,按需获取内容
  • 📚 全面的Wiki支持:按名称、内容搜索,或获取特定页面/部分
  • 🧪 测试计划管理:搜索测试计划,获取详细信息,查找测试用例
  • 📝 工作项查询:使用WIQL支持搜索和检索工作项
  • 🔗 交叉引用搜索:在Wiki、测试计划和工作项中查找相关项目
  • ⚡ 智能缓存:内置缓存以提高性能
  • 🔧 可配置超时:处理大型Azure DevOps项目
  • 🏗️ 模块化架构:可维护性关注点的清晰分离

🛠️ 安装

来自npm(推荐)

npm install -g azure-devops-mcp-server

来源

git clone https://github.com/yourusername/azure-devops-mcp-server
cd azure-devops-mcp-server
npm install

⚙️ 配置

Azure DevOps设置

  1. 个人访问令牌:在Azure DevOps中创建PAT

    • 转到用户设置→ 个人访问令牌
    • 创建具有所需作用域的新令牌,例如:
      • 工作项目:阅读
      • Wiki:阅读
      • 测试管理:阅读
  2. 组织URL:获取您的组织URL

    • 格式: https://dev.azure.com/yourorganization

环境变量

创建一个 .env 文件(可选)或设置环境变量:

AZDO_ORG_URL=https://dev.azure.com/yourorganization
AZDO_PAT=your-personal-access-token
AZDO_DEFAULT_PROJECT=YourProject
AZDO_MAX_CONTENT_LENGTH=2000
AZDO_CACHE_TIMEOUT=300000
AZDO_HTTP_TIMEOUT=120000

Claude桌面配置

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "azure-devops": {
      "command": "azure-devops-mcp-server",
      "env": {
        "AZDO_ORG_URL": "https://dev.azure.com/yourorganization",
        "AZDO_PAT": "your-personal-access-token",
        "AZDO_HTTP_TIMEOUT": "300000"
      }
    }
  }
}

🔧 可用工具

📚 Wiki工具(新增-优化!)

list_wiki_pages -

按名称列出所有维基页面-非常适合探索

  • 用例:“我们有什么维基页面?”
  • 速度:非常快(仅元数据)

search_wiki_pages -

按名称/路径搜索wiki页面-不获取内容

  • 用例:“查找有关身份验证的页面”
  • 速度:非常快(仅搜索姓名)

get_wiki_page -

当你知道你想要什么时,获取特定的维基页面内容

  • 用例:“获取API文档页面”
  • 速度:中等(取一页)

get_wiki_section -

从wiki页面中提取特定部分

  • 用例:“从安装文档中获取安装部分”
  • 速度:中等(取一页,摘录部分)

search_wiki_content -

搜索实际页面内容-谨慎使用

  • 用例:“查找内容中所有提及‘数据库连接’的内容”
  • 速度:速度较慢(获取和搜索所有内容)

🧪 测试计划工具

  • search_test_plans:按名称或描述查找测试计划
  • get_test_plan_details:获取详细的测试计划信息
  • find_test_cases:在计划或套件中搜索测试用例

📝 工作项工具

  • search_work_items:使用文本查询搜索工作项

🔗 交叉引用工具

  • find_related_items:查找某个主题的所有相关工件
  • search_by_feature:按功能搜索所有工件类型

💡 使用示例和最佳实践

🎯 高效的Wiki搜索策略

步骤1:从快速页面搜索开始

"List all wiki pages in the codeless project"
→ Uses list_wiki_pages (very fast)

步骤2:先按页面名称搜索

"Find wiki pages about API or authentication in codeless project"
→ Uses search_wiki_pages (fast - searches page names only)

步骤3:需要时获取特定内容

"Get the content of the API Setup page"
→ Uses get_wiki_page (fetches specific page content)

步骤4:仅在必要时搜索内容

"Search for 'database connection string' in all wiki content"
→ Uses search_wiki_content (slower - searches all page content)

💬 自然语言示例

快速操作:

  • “acme”项目中有哪些wiki页面?”
  • 查找名称中包含“setup”或“install”的页面
  • “列出用户身份验证的所有测试计划”

中等操作:

  • “显示API文档页面内容”
  • “从安装指南中获取故障排除部分”
  • “在登录测试计划中查找测试用例”

较慢的操作(需要时使用):

  • “在所有wiki内容中搜索数据库配置的提及”
  • “查找与支付处理功能相关的所有工件”

🏗️ 建筑

src/
├── config/              # Configuration management
├── core/                # Shared utilities (cache, content processing, HTTP)
├── domains/             # Domain-specific clients
│   ├── wiki/           # Wiki operations (UPDATED with 2-stage approach)
│   ├── testPlan/       # Test plan operations  
│   ├── workItem/       # Work item operations
│   ├── projects/       # Project operations
│   └── crossReference/ # Cross-reference operations
├── client/             # Main Azure DevOps client
└── mcp/                # MCP protocol implementation
    ├── handlers/       # Request handlers
    └── server.js       # Main server

⚡ 性能优化

Wiki性能策略

  1. 元数据优先:始终在获取内容之前获取页面列表
  2. 智能缓存:默认情况下,页面缓存时间为5分钟
  3. 批处理:批量处理的内容搜索
  4. 重试逻辑:使用指数回退自动重试
  5. 可配置超时:调整 AZDO_HTTP_TIMEOUT 对于大型项目

对于大型项目

# Increase timeout for projects with many wiki pages
AZDO_HTTP_TIMEOUT=600000  # 10 minutes

# Adjust cache timeout if needed
AZDO_CACHE_TIMEOUT=900000  # 15 minutes

🚨 故障排除

常见问题

  1. 未找到Wiki页面:

    • 验证项目名称是否正确
    • 检查PAT权限是否包括Wiki读取权限
    • 尝试:“列出[确切项目名称]中的所有wiki页面”
  2. 超时错误:

    • 增加 AZDO_HTTP_TIMEOUT 环境变量
    • 对于非常大的项目:设置为600000(10分钟)
  3. 空搜索结果:

    • 尝试 list_wiki_pages 首先查看可用页面
    • 使用 search_wiki_pages 用于基于名称的搜索
    • 仅限使用 search_wiki_content 用于内容搜索

调试命令

测试您的连接:

# Test basic connectivity
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node index.js

# Test wiki listing
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_wiki_pages","arguments":{"project":"YourProject"}}}' | node index.js

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

📄 许可证

MIT许可证-有关详细信息,请参阅许可证文件

🆘 支持

  • GitHub上的文件问题
  • 检查现有问题是否存在常见问题
  • 有关终结点详细信息,请参阅Azure DevOps API文档

🎉 版本中的新功能

✨ Wiki的主要改进

  • 两阶段方法:快速发现页面,按需获取内容
  • 正确使用API:修复了带有正确参数的Azure DevOps REST API调用
  • 更好的性能:智能缓存和批处理
  • 更多工具:针对不同用例的5个专用wiki工具
  • 超时处理:大型项目的可配置超时

🔧 增强工具

  • list_wiki_pages:快速浏览所有可用页面
  • search_wiki_pages:基于名称的快速搜索
  • get_wiki_page:获取特定页面内容
  • get_wiki_section:提取特定章节
  • search_wiki_content:全面的内容搜索