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, >Bridge: tools/call SearchMessages
Note over Bridge: Waits for live discovery if needed
Bridge-->>Claude: Email results相容层
网桥会自动修复常见的MCP兼容性问题:
- 架构净化:条纹
oneOf,allOf,以及anyOf从工具模式(Anthropic API拒绝),尽可能合并属性。 - 名称重复数据删除:检测不同服务器上具有相同名称的工具(例如。
GetDocumentContent在Word和Excel中)并自动为它们命名(例如。GetDocumentContent_Word)以防止碰撞。
为什么这个项目存在?
虽然微软提供了一套丰富的工具来构建和管理人工智能代理,但目前第三方编码代理(如Claude Code)存在“协议差距”:
- 协议转换:Claude Code和大多数本地IDE都说 标准 模型上下文协议(MCP)的方言。然而 代理365工具网关 (企业云后端)发言 流式HTTP该项目充当必要的协议转换器。
- 进入“综合劳动力”代理365被设计为新一代自主代理的控制平面。这座桥允许Claude利用相同的基础设施,为第三方LLM提供与微软第一方代理使用的企业治理工具相同的工具。
- 行动胜于搜索:与纯语义搜索工具(如WorkIQ)不同,此桥侧重于 确定性行为。它公开了用于邮件、Excel、Word和团队的细粒度工具服务器,允许Claude操纵数据,而不仅仅是查找数据。
- 开发者优先认证:它将复杂的“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。注册应用程序
- 导航至 微软Entra ID → 应用程序注册 → 新注册
- 填写详细信息:
- 名字: Agent365-Claude-Bridge (或您喜欢的任何名称) - 支持的帐户类型: _“仅此组织目录中的帐户”_ (单租户) - 重定向URI:留空
- 点击 注册
2b。收集所需的详细信息
从应用程序注册 概述 第页,复制这两个值:
| 字段 | 在哪里可以找到它 | .env 变量 |
|---|---|---|
| 目录(租户)ID | 概述页面,顶部 | AZURE_TENANT_ID |
| 应用程序(客户端)ID | 概述页面,顶部 | AZURE_CLIENT_ID |
2c。创建客户端密钥 _(可选--仅服务器部署)_
注: 如果您仅使用默认的Claude Code/Claude Desktop 设备代码 登录流程,您可以 完全跳过此步骤设备代码流是公共客户端流,不需要客户端密钥。 只有在以下情况下才需要客户机密: - 将网桥部署为 HTTP服务器 代表(OBO)授权(AUTH_MODE=obo) - 使用 应用程序权限 具有客户端凭据(AUTH_MODE=client_credentials)
- 首选 证书和秘密 (左侧边栏)
- 点击 新客户机密
- 输入描述(例如。
Agent365 Bridge)并选择一个有效期 - 点击 添加
- 立即复制“值” --这是你的
AZURE_CLIENT_SECRET
⚠️ 秘密值只显示一次。如果你丢失了它,你需要创建一个新的。
2d。添加API权限
- 首选 API权限 (左侧边栏)
- 点击 添加权限 → 我的组织使用的API
- 搜索 代理365工具 (或应用程序ID
ea9ffc3e-8a23-4a7d-836d-234d7c7565c1) - 选择 委托权限 并添加所需的范围:
| 权限 | 描述 |
|---|---|
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服务器 |
- 点击 授予\[您的组织\]管理员同意 (顶部蓝色按钮)
- 验证每个权限是否显示绿色✅ 选中下面的复选标记 状态
2e。启用公共客户端流
这是 必需的 对于设备代码登录流程:
- 首选 认证 (左侧边栏)
- 滚动到 高级设置 在底部
- 集 “允许公共客户端流” 到 是
- 点击 保存
______________________________________________________________________
步骤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.要完成登录,请执行以下操作:
- 打开 https://microsoft.com/devicelogin 在浏览器中
- 输入终端显示的代码
- 使用您的账号登录 Microsoft 365帐户
- 等待工具发现完成(约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工具,请执行以下操作:
- 打开配置文件:
- 视窗: %APPDATA%\Claude\claude_desktop_config.json - 苹果电脑: ~/Library/Application Support/Claude/claude_desktop_config.json
- 添加网桥配置:
{
"mcpServers": {
"agent365-bridge": {
"command": "node",
"args": [
"C:/path/to/your/Agent365/dist/index.js"
]
}
}
}备注:更新路径以匹配您克隆此存储库的位置。
- 重新启动克劳德桌面。工具将出现在🔌 菜单。
______________________________________________________________________
可用的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.jsonnpm脚本
| 脚本 | 描述 |
|---|---|
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 先在终端中进行一次性设置 |
参考文献
- Agent 365工具服务器概述
- 代理365 SDK和CLI
- 代理365 CLI安装 (需要.NET 8+:
dotnet tool install --global Microsoft.Agents.A365.DevTools.Cli --prerelease) - 代理365样品
- MCP服务器参考
- 前沿预览计划
免责声明
认证与责任:这个项目是一个开源桥梁,不是微软的官方产品。它使用您自己的Azure AD应用程序注册,并在登录用户的上下文中运行。您负责管理客户机密和令牌的安全性。此存储库的维护人员对使用此软件而导致的任何数据丢失、安全漏洞或意外费用不承担任何责任。使用风险自负。
