Claude与MCP的Microsoft Graph API集成
该存储库提供了一个完整的解决方案,用于将Claude与模型上下文协议(MCP)服务器集成以访问Microsoft Graph API。
分步实施指南
第一阶段:设置MCP服务器
- 克隆此存储库
git clone https://github.com/JBAgent/Test1.git
cd Test1- 安装MCP服务器的依赖项
cd mcp-server
npm install- 配置环境变量
cp .env.example .env
# Edit .env with your Azure AD credentials- 启动MCP服务器
npm start- 测试MCP服务器
# Using the provided test client
node test-client.js
# Or using curl
curl -X POST http://localhost:3000/api/graph \
-H "Content-Type: application/json" \
-H "X-User-ID: default-user" \
-d '{"endpoint": "/users", "method": "GET", "queryParams": {"$top": 5}, "allData": false}'第二阶段:建立克劳德整合
- 安装Claude应用程序的依赖项
cd ../claude-app
npm install- 配置环境变量
cp .env.example .env
# Edit .env with your Anthropic API key and MCP server URL- 启动Claude应用程序
npm start- 测试Claude集成
curl -X POST http://localhost:4000/api/chat \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "How many users are in our organization?"}]}'阶段3:定制集成
- 添加更多Graph API函数
- 编辑 claude-mcp-integration.js 添加专门功能 - 更新中的函数定义 claude-app.js
- 自定义系统提示
- 在中编辑系统提示 claude-app.js 调整克劳德的行为 - 添加特定于域的上下文以获得更好的响应
- 实现缓存(可选)
- 添加Redis以缓存通用Graph API响应 - 在进行API调用之前更新MCP服务器以检查缓存
- 添加监控和日志记录
- 为所有Graph API请求实现日志记录 - 为MCP服务器和Claude应用程序设置监控
项目结构
Test1/
├── mcp-server/ # MCP Server for Microsoft Graph API
│ ├── server.js # Main server implementation
│ ├── test-client.js # Test client for verification
│ ├── package.json # Dependencies
│ ├── Dockerfile # Container configuration
│ └── .env.example # Example environment variables
│
├── claude-app/ # Claude Application
│ ├── claude-app.js # Main application server
│ ├── claude-mcp-integration.js # Integration module
│ ├── package.json # Dependencies
│ └── .env.example # Example environment variables
│
└── docs/ # Documentation
└── integration-guide.md # Detailed integration guide环境变量
MCP服务器(.env)
AZURE_TENANT_ID=your-tenant-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
PORT=3000
NODE_ENV=development # Set to 'production' in production克劳德应用程序(.env)
ANTHROPIC_API_KEY=your-anthropic-api-key
MCP_SERVER_URL=http://localhost:3000
MCP_USER_ID=default-user
PORT=4000API终点
MCP服务器
- POST/api/图形
- 向Microsoft Graph API发出请求 - 需要 X-User-ID 身份验证标头 - 正文包含Graph API请求选项
克劳德应用程序
- POST/api/聊天
- 使用Graph API功能向Claude发送消息 - 正文包含消息数组和可选的系统提示
- POST/api/分析组织
- 组织分析的专用端点 - 简化询问有关组织的问题
图形API请求选项
向MCP服务器发出请求时,可以包括以下选项:
{
"endpoint": "/users", // Required: Graph API endpoint
"method": "GET", // Optional: HTTP method (default: GET)
"version": "beta", // Optional: API version (default: beta)
"queryParams": {}, // Optional: Query parameters
"body": {}, // Optional: Request body for POST/PUT/PATCH
"allData": false // Optional: Auto-pagination (default: false)
}关于一致性级别的重要说明
经过测试,我们发现 consistencyLevel 在许多Graph API配置中通常不支持参数。我们已将其从所有默认请求中删除,以确保最大的兼容性。
如果需要在特定环境中使用此参数(对于某些高级目录查询场景),可以手动将其添加到queryParams中:
{
"endpoint": "/users",
"method": "GET",
"queryParams": {
"$top": 5,
"consistencyLevel": "eventual"
}
}但是,我们建议在使用此参数之前仔细测试,因为它可能会在许多环境中导致错误。
JSON格式要求
向MCP服务器发出请求时,请确保JSON格式正确:
- 对键和字符串值使用双引号:
{"endpoint": "/users", "method": "GET"}- 不要不正确地嵌套JSON字符串:
{"queryParams": {"$filter": "displayName eq 'John'"}}- 使用正确的JSON类型:
{"allData": true, "count": 10}获取Microsoft Azure凭据
要获取您的AZURE_CLIENT_ID和AZURE_CLEENT_CRET:
- 登录到 Azure门户
- 导航到Azure Active Directory>应用程序注册
- 创建新注册或使用现有注册
- 复制应用程序(客户端)ID-这是您的AZURE_client_ID
- 转到证书和机密>新客户端机密
- 创建一个新的密钥并复制该值-这是您的AZURE_CLIENT_secret
- 在API权限下,添加Microsoft Graph权限
安全考虑
- 认证
- MCP服务器对Graph API使用Azure AD身份验证 - Claude应用程序应实现正确的身份验证
- 授权
- MCP服务器根据用户上下文强制执行权限 - 对敏感操作实施基于角色的访问控制
- 数据保护
- 注意与Claude共享的数据 - 实施数据保留策略
- 审计日志
- 记录所有Graph API合规请求 - 监控异常访问模式
故障排除
- MCP服务器连接问题
- 验证Azure AD凭据 - 检查网络连接 - 使用提供的test-client.js验证连接
- JSON解析错误
- 确保请求使用带双引号的有效JSON - 不要发送单引号字符串或不正确转义的字符 - 查看test-client.js中的请求格式以获取示例
- 图形API错误
- “无法识别的查询参数:consistencyLevel”-此错误表示Graph API配置不支持此参数。我们已将其从所有示例和默认行为中删除。 - 检查Azure AD中的权限-确保您的应用程序具有授予的正确范围 - 验证请求格式和参数 - 寻找限速问题
- Claude API错误
- 验证Anthropic API密钥 - 确保请求格式正确
贡献
欢迎投稿!请随时提交拉取请求。
