项目简介

该项目是一个基于 Model Context Protocol (MCP) 实现的应用后端,专门用于通过 Microsoft Graph API 管理用户的 Outlook 日程和联系人信息。它提供了一系列工具,允许 LLM 客户端(如支持 MCP 的编辑器或桌面应用)直接创建、读取、更新和删除日历事件,以及查找组织内的联系人。

主要功能点

  • 查找人员: 根据姓名查找人员的电子邮件地址及其他信息。
  • 创建日程: 创建简单的日历事件,可指定主题、内容、开始/结束时间、时区。
  • 创建带参会人的日程: 创建包含指定参会人的日历事件,可指定主题、内容、开始/结束时间、时区、地点和参会人列表。
  • 获取日程详情: 根据日程 ID 获取日历事件的详细信息。
  • 列出日程: 根据主题、日期范围或最大结果数过滤并列出日历事件。
  • 更新日程: 更新现有日历事件的任意属性,如主题、时间、地点等。
  • 更新日程参会人: 为现有日历事件添加或移除参会人。

安装步骤

要使用此 MCP 服务器,您需要先完成以下设置:

  1. 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')。
  2. 获取服务器代码: 克隆或下载该项目的代码仓库。

  3. 构建项目: 进入项目目录,执行以下命令安装依赖并构建:

    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 客户端的具体实现。

信息

分类

生产力应用