msgraph mcp服务器
本人从AI代理操作Microsoft365的MCP服务器
 
LP: daisukehori.ithub.io/msgraph-mcp服务器
交换・Teams・OneDrive・SharePoint・Excel工作簿 的,之 83MCP工具提供。 一切 /me/ 使用端点操作者本人的数据中所述修改相应参数的值。
______________________________________________________________________
为什么需要这个
|现有方法|此MCP服务器| |:--|:--| Graph Explorer的令牌在1小时内到期 refresh_tokenをRedisに暗号化保存→自动更新で実质无期限 | 在管理员权限下,client_credentials可以看到所有人的数据 委托访问中只有本人的数据 | 每次认证都需要浏览器操作 第一次只有一次。以后Cron每天更新令牌 |
______________________________________________________________________
体系结构
┌─── Vercel ──────────────────────────────────────┐
│ │
│ /auth 管理画面(ADMIN_SECRET + OAuth) │
│ → Microsoft ログイン(初回のみ) │
│ → refresh_token を AES-256-GCM 暗号化 │
│ → Upstash Redis に保存 │
│ → MCP API キーを自動発行 │
│ │
│ /api/mcp MCP エンドポイント │
│ → API キー検証 │
│ → Redis から refresh_token → access_token │
│ → Graph API 呼び出し(/me/ = 本人として) │
│ │
│ /api/cron/keep-alive 毎日 03:00 UTC │
│ → refresh_token を自動更新 │
│ → 90日カウンターを毎日リセット = 実質無期限 │
│ │
│ Upstash Redis (Vercel Marketplace / 自動追加) │
│ → 暗号化された refresh_token │
│ → MCP API キー │
│ → ブルートフォース対策カウンター │
│ │
└──────────────────────────────────────────────────┘安全性
|胁威|对策| |:--|:--| 对|/auth的非法访问|ADMIN_SECRET(密码)+Microsoft OAuth租户限制的双重锁定| 每ADMIN_SECRET总计:5次失败,锁定15分钟(Redis计数) 查看了Redis的内容:Refresh_token是AES-256-GCM加密。加密密钥仅限于Vercel环境变量 可以立即从MCP API密钥泄漏中进行旋转(旧密钥立即禁用) | refresh_token期限切れ|每日Cronで更新。90日问题を完全回避| 非法调用Cron:CRON_SECRET标题验证(Vercel自动生成)
______________________________________________________________________
快速启动(5步)
步骤1:在Azure AD中注册应用程序(5分钟)
- Azure 门户 登录
- 微软Entra ID → 注册应用程序 → +新规登録
- 名前: msgraph-mcp-server - 帐户类型: 仅此组织目录
- 在注册完成画面中记下以下内容:
- 应用程序(客户端)标识 → MICROSOFT_CLIENT_ID - 目录(租户)标识 → MICROSOFT_TENANT_ID
- 左菜单- 证书和密码 → 新客户端密钥 -记录值-
MICROSOFT_CLIENT_SECRET
- 左菜单- 允许访问API → 添加访问权限 → Microsoft Graph → 授权访问:
基本资源: User.Read User.ReadBasic.All Mail.Read Mail.ReadWrite Mail.Send Calendars.Read Calendars.ReadWrite Team.ReadBasic.All Channel.ReadBasic.All ChannelMessage.Read.All ChannelMessage.Send Chat.Read Chat.ReadWrite ChatMessage.Read ChatMessage.Send Files.Read.All Files.ReadWrite.All Sites.Read.All Sites.ReadWrite.All offline_access
共享资源(共享邮箱委派日历): Mail.Read.Shared Mail.ReadWrite.Shared Mail.Send.Shared Calendars.Read.Shared Calendars.ReadWrite.Shared
> ℹ️ OneDrive SharePoint Teams的共享资源 Files.ReadWrite.All / Sites.ReadWrite.All 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积 .Shared 不需要作用域。
- 左菜单- 认证 → +添加平台 → 选择Web
- 重定向URI: https://your-app.vercel.app/api/auth/callback(在Vercel部署后确认URL后输入。以后也可以追加) - 前通道注销URL:保持为空 - 访问令牌(用于隐式流): 不检查 - 标识令牌(用于隐式和混合流): 不检查 - 单击配置保存
- “管理员同意\[组织名称\]” 来修改标记元素的显示属性
第2步:部署到Vercel(2分钟)
上的 使用Vercel进行部署 按钮关闭对话框。
- 新项目 屏幕-查看存储库名称并单击“创建”
- 添加集成 屏幕-单击 单击添加 →Upstash的登录画面打开 “继续使用GitHub” 登录→Upstash协作画面:
- 确保已自动选择项目 - Redis的 “创建新数据库…” 列表框中,此格式对应于条目“无” - 创建数据库 画面: - 名称: msgraph-mcp-server(任意) - 主要区域: ap-northeast-1(东京。从日本使用的话最近) - 阅读地区:保持为空 - 驱逐:保持关闭 - →“下一步” - 选择计划 画面: - “免费” (256MB/10GB带宽。足够了。) - →“创造” - 回到Vercel后 “保存” 来修改标记元素的显示属性
- 添加环境变量 画面→输入以下4个:
| 変数 | 値 | |:--|:--| | ADMIN_SECRET 自己决定的管理密码 | MICROSOFT_CLIENT_ID 在步骤1中记录的客户机ID | MICROSOFT_CLIENT_SECRET 在步骤1中记录的密码 | MICROSOFT_TENANT_ID 在步骤1中记录的租户ID
- 单击部署-等待部署完成
步骤3:更新重定向URI
部署完成后,Vercel URL(例如: https://msgraph-mcp-server-xxx.vercel.app)之后,返回Azure Portal:
- 应用程序 认证 -单击功能区上 重定向URI 添加:
https://あなたのアプリ名.vercel.app/api/auth/callback- 单击保存
⚠️ 如果在步骤1中已输入,则只需将URL部分替换为实际的Vercel URL。
步骤4:/auth验证(1分钟)
https://your-app.vercel.app/auth访问- 输入管理密码
- 使用Microsoft登录→登录→授权
- 在画面上显示MCP API键 -复制并保存
步骤5:连接到MCP客户端并开始使用
网络/移动
- 设定→ 连接器 → 添加自定义连接器
- 输入:
- 名前: Microsoft 365(任意) - 远程MCP服务器URL: https://your-app.vercel.app/api/mcp?key= - OAuth客户端ID:保持为空 - 客户机密:保持为空
- 「追加」→ 打开新聊天开始使用
⚠️ Claude.ai的自定义连接器中没有Bearer Token的输入栏?key= 通过参数传递API密钥。克劳德桌面
claude_desktop_config.json 添加:
{
"mcpServers": {
"microsoft365": {
"type": "url",
"url": "https://your-app.vercel.app/api/mcp?key="
}
}
}克劳德代码
claude mcp add --transport http microsoft365 "https://your-app.vercel.app/api/mcp?key="以后什么都不用做。 Cron每天都会自动更新令牌。
______________________________________________________________________
/auth 管理画面
|机能|说明| |:--|:--| |首次设置|Microsoft登录→API密钥自动发行| |状态确认|用户名、令牌上次更新日期、上次Cron执行日期| 确认API键|显示末尾4个字符的提示| |键轮换|“重新提交”按钮→旧键即无效→显示新键| |重新认证|在refresh_token失效时重新登录|
______________________________________________________________________
工具列表(83工具)
|类别|工具数|主要操作| |:--|:--|:--| | Exchange/邮件 |8|一览、获取、发送、回复、更新、删除、移动文件夹。user_id 指定共享邮箱対応 | | 日历 | 5 | 一覧・取得・作成・更新・削除(Asia/Tokyo 既定)。user_id 指定委托日历対応 | | 团队 8、小组/渠道/聊天列表消息获取/发送/回复 | OneDrive \[12\]驱动器信息列表/检索/DL/UL/文件夹创建/删除/移动/搜索+ 共享文件列表共享文件夹浏览共享链接解析 | | SharePoint 12站点搜索/检索库列表/列/项目CRUD | 用户/身份验证 \[3\]简介用户搜索和认证状态 | Excel工作簿 ★ | 35 会话管理/工作表CRUD/表CRUD/行·列的追加/更新/删除/范围读写/函数执行(VLOOKUP、SUM等)/图表制作
Excel Workbook工具详情(35工具)
|子类别|工具| |:--|:--| | 会议(2) | workbook_create_session, workbook_close_session | | 工作表(5) | workbook_list_worksheets, workbook_get_worksheet, workbook_add_worksheet, workbook_update_worksheet, workbook_delete_worksheet | | 表(6) | workbook_list_tables, workbook_get_table, workbook_create_table, workbook_update_table, workbook_delete_table, workbook_table_convert_to_range | | 表行(5) | workbook_table_add_rows ★, workbook_table_list_rows, workbook_table_get_row, workbook_table_update_row, workbook_table_delete_row | | 表列(4) | workbook_table_list_columns, workbook_table_add_column, workbook_table_update_column, workbook_table_delete_column | | 范围(8) | workbook_range_get, workbook_range_update ★, workbook_range_clear, workbook_range_get_used, workbook_range_insert, workbook_range_delete, workbook_range_merge, workbook_range_unmerge | | 功能(1) | workbook_call_function(300+ Excel 関数) | | 图表(4) | workbook_list_charts, workbook_create_chart, workbook_get_chart_image, workbook_delete_chart |
💡 会话操作建议:汇总多个操作时workbook_create_session获取会话标识,并对每个工具调用workbook_session_id交付 提高性能变更,变更 立即反映给其他客户机(无会话最多延迟2分钟)。 💡 行添加vs原始工作表写入:要将行添加到结构化表中,请执行以下操作:workbook_table_add_rows、未表化的原始图纸的写入workbook_range_update使用。 💡 504/503/429自动重试:所有工具都内置了自动重试机制(指数退避+Retry-After尊重)。在Excel Workbook API中偶尔出现的临时504上也很坚固。
______________________________________________________________________
使用共享资源
所有工具 user_id 有可选参数。省略时为本人(/me/)、指定时对象用户(/users/{user_id}/)的资源。
「共有メールボックス info@revol.co.jp の未読メールを見せて」
→ user_id: "info@revol.co.jp" で mail_list_messages を呼ぶ
「田中さんのカレンダーに明日15:00の会議を追加して」
→ user_id: "tanaka@revol.co.jp" で calendar_create_event を呼ぶ
「他の人から共有されたファイルの一覧を見せて」
→ onedrive_shared_with_me を呼ぶ
「Teams で送られたこの共有リンクのファイルを見せて」
→ onedrive_resolve_sharing_link に URL を渡す⚠️ 要访问共享资源,Exchange/Outlook必须为堀先生授予共享设置(委托、完全访问等)。仅Azure AD的API权限是不够的。
______________________________________________________________________
同一作者的项目
HubSpot MA MCP服务器
128工具+知识库存储+云天空的三层结构。 “下个月将举行研讨会,请多关照”,AI将从活动到工作流程一路实行。
______________________________________________________________________
许可证
麻省理工学院
______________________________________________________________________
相关MCP服务器
堀公开的MCP服务器群。全部可从Claude.ai/Cursor/ChatGPT等MCP客户端使用。
|服务器|工具数|说明| |:--|:--:|:--| | b2cloud api 大和B2云发票发行API/MCP | 云闪mcp |69 | Cloudflare統合(隧道/DNS/工人/页面/R2/KV/SSL/访问)| | 马mcp |128 | HubSpot MA(客户关系管理/营销/知识库)| | msgraph mcp服务器 ← 今ここ | 83 | Microsoft Graph API(Exchange/Teams/OneDrive/SharePoint/Excel工作簿)| | 剧作家devtools mcp 浏览器自动化 | proxmox mcp服务器 | 35 | Proxmox VE反想化基盘操作| | 打印机mcp服务器 |—|CUPS网络打印机控制(Kyocera TASKalfa)| | yamato打印机mcp服务器 '-大和发票热敏打印机(胶皮+WS-420B) | ssh-mcp服务器 10个SSH客户端(会话管理/异步命令) | mac远程mcp \[34\]\[macOS远程控制(Shell/GUI/文件/应用程序)\] | 双子座图像mcp | 4 | Gemini/Imagen 画像生成 | | runpod mcp |36 | RunPod GPU FaaS(Pod/端点/作业)| | 耐火材料 \_自动主机网络扫描 | 广告运营mcp | 62 |廣告运用自动化(Google Ads/Meta/GBP/X)|
