Claude代码与Agent365连接桥

一个连接Claude代码与Microsoft Agent365 MCP服务器的代理桥接工具,提供对Outlook邮件、日历、Word、Excel、PowerPoint、Teams、SharePoint、OneDrive等服务的直接访问能力。

  • by ITSpecialist111
  • TypeScript
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 ITSpecialist111/Agent365-Bridge

使用说明

Claude Code的365 Bridge代理

连接 克劳德代码 到 Microsoft代理365 MCP服务器 --允许Claude通过企业级MCP工具网关直接访问Outlook邮件、日历、Word、Excel、PowerPoint、团队、SharePoint、OneDrive、副驾驶搜索、知识和用户配置文件数据。

建筑

┌─────────────┐      stdio       ┌──────────────────┐     HTTPS + Auth     ┌─────────────────────────┐
│ Claude Code  │ ◄──────────────► │  MCP Proxy Bridge │ ◄──────────────────► │  Agent 365 MCP Servers  │
│ (CLI / IDE)  │   MCP protocol   │  (this project)   │   StreamableHTTP    │  (Mail, Calendar, Word, │
└─────────────┘                  └──────────────────┘                      │   Teams, SharePoint...) │
                                                                           └─────────────────────────┘

这座桥像一座 本地stdio MCP服务器 Claude Code连接到的。当Claude调用工具时(例如。 createMessage, getEvents),网桥使用Azure Entra ID进行身份验证 委托权限 并将呼叫转发到代表登录用户的适当代理365 MCP服务器。

两层磁盘缓存

Claude Desktop强制执行 5秒超时 上 tools/list 请求:由于发现14台Agent 365服务器需要大约20秒,因此网桥使用两层缓存策略立即为工具提供服务:

sequenceDiagram
    participant User
    participant Login as npm run login
    participant Disk as ~/.agent365-bridge/
    participant Bridge as Bridge Process
    participant Claude as Claude Desktop

    Note over User,Login: One-time setup
    User->>Login: npm run login
    Login->>Login: Device code auth
    Login->>Disk: auth-record.json
    Login->>Login: Discover 14 servers (56 tools)
    Login->>Disk: tools-cache.json

    Note over Bridge,Claude: Every subsequent launch
    Claude->>Bridge: initialize
    Bridge->>Disk: Load tools-cache.json
    Bridge-->>Claude: initialize response
    Claude->>Bridge: tools/list
    Bridge-->>Claude: 56 tools (instant, <1ms)
    Note over Bridge: Discovery runs in background (~20s)
    Claude->>Bridge: tools/call SearchMessages
    Note over Bridge: Waits for live discovery if needed
    Bridge-->>Claude: Email results

相容层

网桥会自动修复常见的MCP兼容性问题:

  1. 架构净化:条纹 oneOf, allOf,以及 anyOf 从工具模式(Anthropic API拒绝),尽可能合并属性。
  2. 名称重复数据删除:检测不同服务器上具有相同名称的工具(例如。 GetDocumentContent 在Word和Excel中)并自动为它们命名(例如。 GetDocumentContent_Word)以防止碰撞。

为什么这个项目存在?

虽然微软提供了一套丰富的工具来构建和管理人工智能代理,但目前第三方编码代理(如Claude Code)存在“协议差距”:

  1. 协议转换:Claude Code和大多数本地IDE都说 标准 模型上下文协议(MCP)的方言。然而 代理365工具网关 (企业云后端)发言 流式HTTP该项目充当必要的协议转换器。
  2. **进入“综合劳动力”**代理365被设计为新一代自主代理的控制平面。这座桥允许Claude利用相同的基础设施,为第三方LLM提供与微软第一方代理使用的企业治理工具相同的工具。
  3. 行动胜于搜索:与纯语义搜索工具(如WorkIQ)不同,此桥侧重于 确定性行为。它公开了用于邮件、Excel、Word和团队的细粒度工具服务器,允许Claude操纵数据,而不仅仅是查找数据。
  4. 开发者优先认证:它将复杂的“Frontier Preview”和“StreamableHTTP”身份验证握手简化为一个正常工作的标准MCP登录流。

状态

✅ 生产测试和工作 --已成功验证并发现来自Microsoft Agent 365 MCP服务器的20多个工具(邮件、Excel、知识等已确认)。

先决条件

要求 目的
Node.js≥18 运行时间
Claude 代码命令行界面 MCP客户端
前沿预览 需要代理365访问权限(在这里注册)
Azure AD应用程序注册 身份验证(请参阅下面的设置指南)
A365气候 (可选) 代理注册和模拟服务器--需要 .NET 8+

安装指南

步骤1:安装和构建

git clone https://github.com/ITSpecialist111/Agent365-Bridge.git
cd Agent365-Bridge
npm install
npm run build

步骤2:创建Azure AD应用程序注册

您需要Azure AD应用程序注册才能在Agent 365平台上进行身份验证。按照以下步骤操作 Azure 门户:

2a。注册应用程序

  1. 导航至 微软Entra ID → 应用程序注册 → 新注册
  2. 填写详细信息:
    • 名字: Agent365-Claude-Bridge (或您喜欢的任何名称)
    • 支持的帐户类型: “仅此组织目录中的帐户” (单租户)
    • 重定向URI:留空
  3. 点击 注册

2b。收集所需的详细信息

从应用程序注册 概述 第页,复制这两个值:

字段 在哪里可以找到它 .env 变量
目录(租户)ID 概述页面,顶部 AZURE_TENANT_ID
应用程序(客户端)ID 概述页面,顶部 AZURE_CLIENT_ID

2c。创建客户端密钥 (可选--仅服务器部署)

注: 如果您仅使用默认的Claude Code/Claude Desktop 设备代码 登录流程,您可以 完全跳过此步骤设备代码流是公共客户端流,不需要客户端密钥。

只有在以下情况下才需要客户机密:

  • 将网桥部署为 HTTP服务器 代表(OBO)授权(AUTH_MODE=obo)
  • 使用 应用程序权限 具有客户端凭据(AUTH_MODE=client_credentials)
  1. 首选 证书和秘密 (左侧边栏)
  2. 点击 新客户机密
  3. 输入描述(例如。 Agent365 Bridge)并选择一个有效期
  4. 点击 添加
  5. 立即复制“值” --这是你的 AZURE_CLIENT_SECRET

⚠️ 秘密值只显示一次。如果你丢失了它,你需要创建一个新的。

2d。添加API权限

  1. 首选 API权限 (左侧边栏)
  2. 点击 添加权限 → 我的组织使用的API
  3. 搜索 代理365工具 (或应用程序ID ea9ffc3e-8a23-4a7d-836d-234d7c7565c1)
  4. 选择 委托权限 并添加所需的范围:
权限 描述
McpServers.Calendar.All 日历MCP服务器
McpServers.CopilotMCP.All 副驾驶MCP服务器
McpServers.DASearch.All M365副驾驶代理目录
McpServers.Dataverse.All BLOCKMCP服务器
McpServers.Excel.All Excel MCP服务器
McpServers.Files.All ODSP文件工具MCP服务器
McpServers.Knowledge.All 知识MCP服务器
McpServers.Mail.All 邮件MCP服务器
McpServers.Me.All Me MCP服务器(用户配置文件)
McpServers.OneDriveSharePoint.All OneDrive和SharePoint MCP服务器
McpServers.PowerPoint.All PowerPoint MCP服务器
McpServers.SharepointLists.All SharePoint列出MCP服务器
McpServers.Teams.All 团队MCP服务器
McpServers.Word.All Word MCP服务器
  1. 点击 授予[您的组织]管理员同意 (顶部蓝色按钮)
  2. 验证每个权限是否显示绿色✅ 选中下面的复选标记 状态

2e。启用公共客户端流

这是 必需的 对于设备代码登录流程:

  1. 首选 认证 (左侧边栏)
  2. 滚动到 高级设置 在底部
  3. 集 “允许公共客户端流” 到 是
  4. 点击 保存

步骤3:配置 .env 文件

创建一个 .env 使用您的凭据在项目根目录中创建文件:

# Azure Entra ID Authentication
AZURE_TENANT_ID=your-directory-tenant-id
AZURE_CLIENT_ID=your-application-client-id

# Client secret — only needed for OBO (server) or client_credentials mode.
# For the default Device Code flow (Claude Code / Claude Desktop), leave this blank or omit it.
# AZURE_CLIENT_SECRET=your-client-secret-value

# Agent 365 Configuration
MCP_PLATFORM_ENDPOINT=https://agent365.svc.cloud.microsoft
MCP_PLATFORM_AUTHENTICATION_SCOPE=ea9ffc3e-8a23-4a7d-836d-234d7c7565c1/.default

# Runtime
NODE_ENV=development

步骤4:登录(一次)

登录Microsoft 365并缓存您的凭据:

npm run login

系统将提示您访问一个URL,然后将发现并缓存工具:

Agent 365 Bridge — Sign In & Setup

Step 1: Sign in to Microsoft 365
[agent365-bridge] SIGN IN REQUIRED
[agent365-bridge] Go to: https://microsoft.com/devicelogin
[agent365-bridge] Enter code: XXXXXXXX

✅ Authentication successful!
   Credentials cached at: ~/.agent365-bridge/auth-record.json

Step 2: Discovering Agent 365 MCP servers...

✅ Discovered 56 tools across 14 servers

🎉 Setup complete!
   Claude Desktop will now load all tools instantly.

要完成登录,请执行以下操作:

  1. 打开 https://microsoft.com/devicelogin 在浏览器中
  2. 输入终端显示的代码
  3. 使用您的账号登录 Microsoft 365帐户
  4. 等待工具发现完成(约20秒)

注: 这只需要做一次。凭据和工具列表都缓存到磁盘上。令牌在后续启动时自动刷新。跑 npm run logout 清除缓存的凭据。


步骤5:在Claude Code/Claude Desktop注册

对于 克劳德代码 (CLI):

npm run register

这将在Claude Code中将网桥注册为全局MCP服务器。在此之后,Agent 365工具可用于 任何 克劳德代码会话。

对于 克劳德桌面版,将网桥添加到配置文件中(%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "agent365-bridge": {
      "command": "node",
      "args": ["C:/path/to/your/Agent365/dist/index.js"]
    }
  }
}

步骤6:使用克劳德代码

打开克劳德代码——代理365工具将自动出现。尝试:

> Search my Outlook inbox for emails about the Q4 report
> Create a new Word document summarizing the project status
> List my upcoming calendar events for this week
> Post a message in the Engineering team channel
> Find files in SharePoint related to the budget
> Create an Excel workbook with monthly revenue data


通用MCP支持(克劳德桌面和其他)

这座桥符合 模型上下文协议(MCP) 规范,意味着它可以与 任何 MCP兼容客户端,而不仅仅是Claude Code CLI。

添加到克劳德桌面(Windows/Mac)

要在Claude Desktop应用程序中使用Agent 365工具,请执行以下操作:

  1. 打开配置文件:

    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • 苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. 添加网桥配置:

{
  "mcpServers": {
    "agent365-bridge": {
      "command": "node",
      "args": [
        "C:/path/to/your/Agent365/dist/index.js"
      ]
    }
  }
}

备注:更新路径以匹配您克隆此存储库的位置。

  1. 重新启动克劳德桌面。工具将出现在🔌 菜单。

可用的MCP服务器

网桥连接到所有13个Agent 365 MCP服务器:

服务器 作用域 描述
Outlook邮件 McpServers.Mail.All 阅读、撰写、发送、搜索和管理电子邮件
Outlook日历 McpServers.Calendar.All 创建、查看、更新和管理日历事件
字 McpServers.Word.All 创建和阅读Word文档,添加评论
Excel McpServers.Excel.All 创建工作簿,管理电子表格
幻灯片 McpServers.PowerPoint.All 创建和修改演示文稿
团队 McpServers.Teams.All 聊天、频道和消息操作
OneDrive和SharePoint McpServers.OneDriveSharePoint.All 文件上传、搜索和元数据
SharePoint列表 McpServers.SharepointLists.All 列表和项目CRUD操作
复制品搜索 McpServers.CopilotMCP.All 基于人工智能的M365数据搜索
知识 McpServers.Knowledge.All 联合知识检索
用户档案 McpServers.Me.All 个人资料、经理、直接下属、用户搜索
文件 McpServers.Files.All ODSP文件工具操作
代理目录 McpServers.DASearch.All 复制代理目录搜索
数据宇宙 McpServers.Dataverse.All 用于Dataverse的CRUD操作、FetchXML和Web API
文件 McpServers.Files.All ODSP文件工具操作

Agent 365 Bridge与Microsoft WorkIQ

虽然此桥将Claude连接到核心Agent 365基础设施 动作和编排,微软还提供 工作智商,M365的“智能层”。

功能 代理365网桥(此项目) Microsoft WorkIQ
首要目标 行动与自动化:发送邮件、创建文档、更新日历。 背景与情报:“总结我关于X的会议”,“Sarah说了什么?”
数据范围 13+粒度M365服务(Word、Excel、Teams等) 跨邮件、Teams和SharePoint的联合搜索。
认证 自定义应用程序注册(默认情况下为设备代码,不需要客户端密码)。 Microsoft管理的应用程序(需要一次性租户管理员同意)。
设置模式 远程HTTP网关的本地代理。 本地stdio服务器。

两者结合使用

为了获得最佳体验,我们建议在Claude中并排运行两台服务器。这给了克劳德“手”(桥)和“大脑”(WorkIQ)。

Claude桌面配置(%APPDATA%/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "agent365-bridge": {
      "command": "node",
      "args": ["C:/Path/To/Agent365-Bridge/dist/index.js"]
    },
    "workiq": {
      "command": "npx",
      "args": ["-y", "@microsoft/workiq", "mcp"]
    }
  }
}

[!注意] WorkIQ目前处于公开预览阶段。有关设置说明和管理员同意的详细信息,请访问 官方WorkIQ存储库.

身份验证模式

模式 何时使用 配置 客户端密码?
设备代码 (默认) 克劳德代码/具有委托权限的桌面 设置 AZURE_TENANT_ID + AZURE_CLIENT_ID 不 --公共客户端流
客户端凭证 应用程序类型权限(无头) 添加 AUTH_MODE=client_credentials + AZURE_CLIENT_SECRET 是
海外建筑运营管理局(代表) HTTP服务器部署(Copilot Studio) 添加 AUTH_MODE=obo + AZURE_CLIENT_SECRET 是
持有者令牌 使用预先获取的令牌进行测试 设置 BEARER_TOKEN 在 .env 没有
模拟 不使用Azure的本地开发 端点设置为 localhost 没有

项目结构

├── src/
│   ├── index.ts                    # Entry point
│   ├── auth/
│   │   ├── token-provider.ts       # Device Code / Client Secret / Bearer auth
│   │   └── token-cache.ts          # JWT token caching with auto-refresh
│   ├── config/
│   │   ├── configuration.ts        # Loads .env + ToolingManifest.json
│   │   └── types.ts                # TypeScript interfaces
│   ├── discovery/
│   │   └── server-discovery.ts     # Discovers MCP servers (manifest or gateway)
│   └── proxy/
│       ├── mcp-proxy-server.ts     # stdio MCP server for Claude Code
│       └── tool-forwarder.ts       # Forwards tool calls to remote servers
├── scripts/
│   ├── setup.ts                    # Interactive setup wizard
│   ├── register-claude.ts          # Registers bridge with Claude Code CLI
│   └── start-mock.ts              # Starts mock server for development
├── ToolingManifest.json            # Declares 13 available MCP servers
├── .mcp.json                       # Claude Code project-level MCP config
├── .env.example                    # Environment variable template
├── package.json
└── tsconfig.json

npm脚本

脚本 描述
npm run build 将TypeScript编译为 dist/
npm run dev 使用ts节点运行(开发)
npm run start 运行编译后的输出
npm run setup 交互式设置向导
npm run login 登录M365并缓存凭据(一次性)
npm run logout 清除缓存的凭据
npm run register 使用Claude Code CLI注册网桥
npm run mock 启动模拟服务器+注册
npm run clean 删除 dist/ 目录

故障排除

错误 原因 修复
Access denied by Frontier access control 租户未注册Frontier预览 在此处注册
Scope 'McpServers.X.All' is not present 未添加或未同意API权限 在Azure门户中添加权限→ 授予管理员同意
Application not found in directory 应用程序注册的租户ID错误 请检查应用程序概述页面上的目录(租户)ID
AADSTS7000218: request body must contain client_assertion 未启用公共客户端流 在身份验证设置中将“允许公共客户端流”设置为“是”
Scope doesn't exist on the resource 清单作用域名称与Azure API 更新不匹配 ToolingManifest.json 作用域名称或用途 /.default
No authentication configured 中缺少凭据 .env 添加 AZURE_TENANT_ID 和 AZURE_CLIENT_ID 到 .env
工具未出现在Claude Desktop中 令牌未缓存/超时 运行 npm run login 首先,然后重新启动Claude Desktop
Request timed out 在MCP日志中 设备代码登录时间过长 运行 npm run login 先在终端中进行一次性设置

参考文献

免责声明

认证与责任:这个项目是一个开源桥梁,不是微软的官方产品。它使用您自己的Azure AD应用程序注册,并在登录用户的上下文中运行。您负责管理客户机密和令牌的安全性。此存储库的维护人员对使用此软件而导致的任何数据丢失、安全漏洞或意外费用不承担任何责任。使用风险自负。