关于 Outlook Calendar MCP Server
面向 AI 助手的 Outlook 和 Microsoft 365 日历只读 MCP 服务,可按日期范围检索事件详情。它采用按需 Microsoft 身份验证,并附带用于测试的命令行工具。
主要功能
- 01按日期范围读取日历事件
- 02按需进行 Microsoft 身份验证
- 03返回事件详情和参会者
- 04用于测试的交互式命令行
适用场景
- 01查看指定日期范围内的日程
- 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 日历交互的内部 APIcmd/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
配置
有两种方式配置应用程序:
- 使用 YAML 配置文件(参见
config.example.yaml) - 使用环境变量
配置文件
根据示例创建 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
身份验证
服务采用按需身份验证:
- 调用日历工具时,服务会检查你是否已完成身份验证
- 如果尚未完成身份验证,服务会返回包含身份验证 URL 的错误
- 你必须先调用
get_auth_url工具以启动身份验证流程 - 身份验证 URL 会在浏览器中打开
- 身份验证成功后,系统会捕获回调并存储令牌
可用工具
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 应用程序提供简单的交互界面:
- 选择
get_auth_url进行身份验证 - 在浏览器中打开提供的 URL,以授权应用程序
- 授权后,使用
get_calendar_events获取日历数据
安全注意事项
- 安全存储客户端密钥(使用环境变量)
- 服务仅提供对日历数据的只读访问
- 未实现任何写入操作
- 令牌仅在服务运行期间存储于内存中
Azure AD 应用程序设置
- 在 Azure 门户中注册新应用程序
- 添加以下权限:
- Calendars.Read
- Calendars.Read.Shared
- Calendars.ReadBasic
- 将重定向 URI 设置为
http://localhost:1111/callback - 创建客户端密钥并更新配置
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。