Claude与Microsoft Graph API集成工具

提供将Claude AI与Microsoft Graph API通过MCP协议集成的完整解决方案,实现通过自然语言访问组织数据。

  • by JBAgent
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 JBAgent/Test1

使用说明

Claude与MCP的Microsoft Graph API集成

该存储库提供了一个完整的解决方案,用于将Claude与模型上下文协议(MCP)服务器集成以访问Microsoft Graph API。

分步实施指南

第一阶段:设置MCP服务器

  1. 克隆此存储库

    git clone https://github.com/JBAgent/Test1.git
    cd Test1
    
  2. 安装MCP服务器的依赖项

    cd mcp-server
    npm install
    
  3. 配置环境变量

    cp .env.example .env
    # Edit .env with your Azure AD credentials
    
  4. 启动MCP服务器

    npm start
    
  5. 测试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}'
    

第二阶段:建立克劳德整合

  1. 安装Claude应用程序的依赖项

    cd ../claude-app
    npm install
    
  2. 配置环境变量

    cp .env.example .env
    # Edit .env with your Anthropic API key and MCP server URL
    
  3. 启动Claude应用程序

    npm start
    
  4. 测试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:定制集成

  1. 添加更多Graph API函数

    • 编辑 claude-mcp-integration.js 添加专门功能
    • 更新中的函数定义 claude-app.js
  2. 自定义系统提示

    • 在中编辑系统提示 claude-app.js 调整克劳德的行为
    • 添加特定于域的上下文以获得更好的响应
  3. 实现缓存(可选)

    • 添加Redis以缓存通用Graph API响应
    • 在进行API调用之前更新MCP服务器以检查缓存
  4. 添加监控和日志记录

    • 为所有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格式正确:

  1. 对键和字符串值使用双引号:

    {"endpoint": "/users", "method": "GET"}
    
  2. 不要不正确地嵌套JSON字符串:

    {"queryParams": {"$filter": "displayName eq 'John'"}}
    
  3. 使用正确的JSON类型:

    {"allData": true, "count": 10}
    

获取Microsoft Azure凭据

要获取您的AZURE_CLIENT_ID和AZURE_CLEENT_CRET:

  1. 登录到 Azure门户
  2. 导航到Azure Active Directory>应用程序注册
  3. 创建新注册或使用现有注册
  4. 复制应用程序(客户端)ID-这是您的AZURE_client_ID
  5. 转到证书和机密>新客户端机密
  6. 创建一个新的密钥并复制该值-这是您的AZURE_CLIENT_secret
  7. 在API权限下,添加Microsoft Graph权限

安全考虑

  1. 认证

    • MCP服务器对Graph API使用Azure AD身份验证
    • Claude应用程序应实现正确的身份验证
  2. 授权

    • MCP服务器根据用户上下文强制执行权限
    • 对敏感操作实施基于角色的访问控制
  3. 数据保护

    • 注意与Claude共享的数据
    • 实施数据保留策略
  4. 审计日志

    • 记录所有Graph API合规请求
    • 监控异常访问模式

故障排除

  1. MCP服务器连接问题

    • 验证Azure AD凭据
    • 检查网络连接
    • 使用提供的test-client.js验证连接
  2. JSON解析错误

    • 确保请求使用带双引号的有效JSON
    • 不要发送单引号字符串或不正确转义的字符
    • 查看test-client.js中的请求格式以获取示例
  3. 图形API错误

    • “无法识别的查询参数:consistencyLevel”-此错误表示Graph API配置不支持此参数。我们已将其从所有示例和默认行为中删除。
    • 检查Azure AD中的权限-确保您的应用程序具有授予的正确范围
    • 验证请求格式和参数
    • 寻找限速问题
  4. Claude API错误

    • 验证Anthropic API密钥
    • 确保请求格式正确

贡献

欢迎投稿!请随时提交拉取请求。