使用说明
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=4000
API终点
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密钥
- 确保请求格式正确
贡献
欢迎投稿!请随时提交拉取请求。
