mcpField
O
Outlook Calendar MCP Server

Outlook Calendar MCP Server

本地服务
github.com/kgatilin生产力281 周前更新

关于 Outlook Calendar MCP Server

面向 AI 助手的 Outlook 和 Microsoft 365 日历只读 MCP 服务,可按日期范围检索事件详情。它采用按需 Microsoft 身份验证,并附带用于测试的命令行工具。

主要功能

  1. 01按日期范围读取日历事件
  2. 02按需进行 Microsoft 身份验证
  3. 03返回事件详情和参会者
  4. 04用于测试的交互式命令行

适用场景

  1. 01查看指定日期范围内的日程
  2. 02检查事件状态、地点和组织者

MCP 相关

向 MCP 客户端提供 `get_auth_url` 和 `get_calendar_events` 工具。日历访问权限为只读。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Outlook Calendar MCP 服务

这是一个 MCP(Model Context Protocol)服务,可只读访问你的 Outlook/Microsoft 365 日历。

前置条件

  • Go 1.21 或更高版本
  • 拥有日历访问权限的 Microsoft 365 账户
  • 在 Azure AD 中注册并具有适当权限的应用程序

项目结构

  • outlook/outlook_api.go - 用于与 Outlook 日历交互的内部 API
  • cmd/mcp/main.go - 供 AI 助手使用的 MCP 服务实现
  • cmd/cli/main.go - 用于测试的命令行界面
  • config.example.yaml - 配置文件示例

安装

git clone https://github.com/your-username/outlookmcp.git
cd outlookmcp
go mod download

构建应用程序

构建 MCP 服务
# Build for the current platform
go build -o outlook-mcp ./cmd/mcp

# Cross-compile for Windows
GOOS=windows GOARCH=amd64 go build -o outlook-mcp.exe ./cmd/mcp

# Cross-compile for macOS
GOOS=darwin GOARCH=amd64 go build -o outlook-mcp-mac ./cmd/mcp

# Cross-compile for Linux
GOOS=linux GOARCH=amd64 go build -o outlook-mcp-linux ./cmd/mcp
构建 CLI 客户端
# Build for the current platform
go build -o outlook-cli ./cmd/cli

# Cross-compile for Windows
GOOS=windows GOARCH=amd64 go build -o outlook-cli.exe ./cmd/cli

# Cross-compile for macOS
GOOS=darwin GOARCH=amd64 go build -o outlook-cli-mac ./cmd/cli

# Cross-compile for Linux
GOOS=linux GOARCH=amd64 go build -o outlook-cli-linux ./cmd/cli

配置

有两种方式配置应用程序:

  1. 使用 YAML 配置文件(参见 config.example.yaml)
  2. 使用环境变量
配置文件

根据示例创建 config.yaml 文件:

outlook:
  me: "John Doe"
  max_attendees: 10
  max_event_count: 50
  skip_all_day_events: true
环境变量

创建 .env 文件,并填入 Azure AD 应用程序凭据:

OUTLOOK_TENANT_ID=your-tenant-id
OUTLOOK_CLIENT_ID=your-client-id
OUTLOOK_CLIENT_SECRET=your-client-secret

运行应用程序

MCP 服务和 CLI 应用程序都接受可选的命令行参数:

  • 第一个参数:配置文件路径(可选)
  • 第二个参数:.env 文件路径(可选)
从源代码运行
运行 MCP 服务
# With default configuration
go run cmd/mcp/main.go

# With custom config file
go run cmd/mcp/main.go config.yaml

# With custom config and env file
go run cmd/mcp/main.go config.yaml .env.production
运行 CLI 客户端
# With default configuration
go run cmd/cli/main.go

# With custom config file
go run cmd/cli/main.go config.yaml

# With custom config and env file
go run cmd/cli/main.go config.yaml .env.production
运行构建好的二进制文件
运行 MCP 服务二进制文件
# With default configuration
./outlook-mcp

# With custom config file
./outlook-mcp config.yaml

# With custom config and env file
./outlook-mcp config.yaml .env.production
运行 CLI 客户端二进制文件
# With default configuration
./outlook-cli

# With custom config file
./outlook-cli config.yaml

# With custom config and env file
./outlook-cli config.yaml .env.production

身份验证

服务采用按需身份验证:

  1. 调用日历工具时,服务会检查你是否已完成身份验证
  2. 如果尚未完成身份验证,服务会返回包含身份验证 URL 的错误
  3. 你必须先调用 get_auth_url 工具以启动身份验证流程
  4. 身份验证 URL 会在浏览器中打开
  5. 身份验证成功后,系统会捕获回调并存储令牌

可用工具

get_auth_url

启动与 Microsoft 的身份验证流程。

参数: 无

返回: 在浏览器中打开的身份验证 URL

get_calendar_events

获取指定时间段内的 Outlook 日历事件。

参数:

  • start_date(可选):开始日期,格式为 YYYY-MM-DD。如果未提供,默认为今天。
  • end_date(可选):结束日期,格式为 YYYY-MM-DD。如果未提供,默认为今天。

返回: 包含以下属性的日历事件 JSON 数组:

  • subject:事件标题
  • startTime:事件开始时间
  • endTime:事件结束时间
  • isAllDay:事件是否为全天事件
  • isAccepted:事件是否已接受
  • isCancelled:事件是否已取消
  • location:事件地点(如果有)
  • organizer:事件组织者姓名(如果有)
  • description:事件正文的简要说明/预览(如果有)
  • attendees:与会者列表

使用示例

首先进行身份验证:

{
  "tool": "get_auth_url",
  "params": {}
}

然后获取日历事件:

{
  "tool": "get_calendar_events",
  "params": {
    "start_date": "2023-11-01",
    "end_date": "2023-11-07"
  }
}

CLI 用法

CLI 应用程序提供简单的交互界面:

  1. 选择 get_auth_url 进行身份验证
  2. 在浏览器中打开提供的 URL,以授权应用程序
  3. 授权后,使用 get_calendar_events 获取日历数据

安全注意事项

  • 安全存储客户端密钥(使用环境变量)
  • 服务仅提供对日历数据的只读访问
  • 未实现任何写入操作
  • 令牌仅在服务运行期间存储于内存中

Azure AD 应用程序设置

  1. 在 Azure 门户中注册新应用程序
  2. 添加以下权限:
    • Calendars.Read
    • Calendars.Read.Shared
    • Calendars.ReadBasic
  3. 将重定向 URI 设置为 http://localhost:1111/callback
  4. 创建客户端密钥并更新配置

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。