项目简介
该项目是一个基于 Model Context Protocol (MCP) 实现的应用后端,专门用于通过 Microsoft Graph API 管理用户的 Outlook 日程和联系人信息。它提供了一系列工具,允许 LLM 客户端(如支持 MCP 的编辑器或桌面应用)直接创建、读取、更新和删除日历事件,以及查找组织内的联系人。
主要功能点
- 查找人员: 根据姓名查找人员的电子邮件地址及其他信息。
- 创建日程: 创建简单的日历事件,可指定主题、内容、开始/结束时间、时区。
- 创建带参会人的日程: 创建包含指定参会人的日历事件,可指定主题、内容、开始/结束时间、时区、地点和参会人列表。
- 获取日程详情: 根据日程 ID 获取日历事件的详细信息。
- 列出日程: 根据主题、日期范围或最大结果数过滤并列出日历事件。
- 更新日程: 更新现有日历事件的任意属性,如主题、时间、地点等。
- 更新日程参会人: 为现有日历事件添加或移除参会人。
安装步骤
要使用此 MCP 服务器,您需要先完成以下设置:
-
Microsoft Graph API 设置:
- 在 Microsoft Azure Portal 注册一个应用程序。
- 为该应用创建一个客户端密钥。
- 授予必要的 Microsoft Graph API 权限:'Calendars.ReadWrite', 'People.Read.All', 'User.ReadBasic.All'。
- 记录下您的客户端 ID ('CLIENT_ID')、客户端密钥 ('CLIENT_SECRET') 和租户 ID ('TENANT_ID')。
- 确定您希望服务器代表哪个用户操作的电子邮件地址 ('USER_EMAIL')。
-
获取服务器代码: 克隆或下载该项目的代码仓库。
-
构建项目: 进入项目目录,执行以下命令安装依赖并构建:
npm install npm run build或者,您也可以选择构建 Docker 镜像:
docker build -t mcp/outlook-meetings-scheduler .
服务器配置 (供 MCP 客户端使用)
MCP 客户端(如 VS Code MCP 扩展或 Claude Desktop)需要配置如何启动并连接到这个 MCP 服务器。以下是几种常见的配置方式,您可以根据您的实际运行方式选择并添加到您的 MCP 客户端配置文件中(例如 VS Code 的 'settings.json' 或 '.vscode/mcp.json',或 Claude Desktop 的 'claude_desktop_config.json')。
请将尖括号内的占位符 ('<YOUR_CLIENT_ID>', '<YOUR_CLIENT_SECRET>', '<YOUR_TENANT_ID>', '<YOUR_EMAIL>', '/path/to/outlook-meetings-scheduler-mcp-server') 替换为您自己的实际值。客户端密钥 ('CLIENT_SECRET') 建议使用输入提示 ('${input:client_secret}') 或其他安全方式配置,避免直接暴露在配置文件中。
配置示例 (Node.js 本地运行):
{ "mcpServers": { "outlook-meetings-scheduler": { "command": "node", "args": [ "/path/to/outlook-meetings-scheduler-mcp-server/build/index.js" ], "env": { "CLIENT_ID": "<YOUR_CLIENT_ID>", "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>", "TENANT_ID": "<YOUR_TENANT_ID>", "USER_EMAIL": "<YOUR_EMAIL>" } } } }
配置示例 (Docker 容器运行):
{ "inputs": [ { "type": "promptString", "id": "client_secret", "description": "Enter the client secret", "password": true } ], "servers": { "outlook-meetings-scheduler": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "CLIENT_ID", "-e", "CLIENT_SECRET", "-e", "TENANT_ID", "-e", "USER_EMAIL", "mcp/outlook-meetings-scheduler" ], "env": { "USER_EMAIL": "<YOUR_EMAIL>", "CLIENT_ID": "<YOUR_CLIENT_ID>", "CLIENT_SECRET": "${input:client_secret}", "TENID": "<YOUR_TENANT_ID>" } } } }
配置示例 (NPX 运行):
{ "mcpServers": { "outlook-meetings-scheduler": { "command": "npx", "args": [ "-y", "outlook-meetings-scheduler" ], "env": { "CLIENT_ID": "<YOUR_CLIENT_ID>", "CLIENT_SECRET": "<YOUR_CLIENT_SECRET>", "TENANT_ID": "<YOUR_TENANT_ID>", "USER_EMAIL": "<YOUR_EMAIL>" } } } }
基本使用方法
配置完成后,您的 MCP 客户端即可识别并使用此 Outlook Meetings Scheduler MCP 服务器提供的功能。您可以通过在 MCP 客户端中输入自然语言指令来调用服务器的工具。例如:
-
安排会议:
Schedule a meeting with Sarah for tomorrow at 3 PM.(这会调用 'find-person' 查找 Sarah 的邮箱,然后调用 'create-event-with-attendees' 创建会议)
Create a meeting called "Project Kickoff" for tomorrow at 2 PM. Add Megan and John as required attendees.(这会调用 'create-event-with-attendees' 创建会议)
-
查找同事邮箱:
I need to schedule a meeting with John Smith. Can you find his email address?(这会调用 'find-person' 工具)
-
与其他 MCP 服务器集成: 您可以结合使用多个已配置的 MCP 服务器,实现更复杂的工作流。例如,结合 GitHub MCP 服务器:
Create an issue in the organization/repo repository titled "Fix pagination bug in user dashboard" with the description "Users report seeing duplicate entries when navigating between pages." Then schedule a calendar reminder for me to review this issue tomorrow at 3 PM.(这会先调用 GitHub MCP 服务器创建 Issue,再调用 Outlook MCP 服务器安排日程)
实际的交互方式和提示效果取决于您使用的 MCP 客户端的具体实现。
信息
分类
生产力应用