这是一个提供只读访问Outlook/Microsoft 365日历的MCP(模型上下文协议)服务器。
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
# 为当前平台构建
go build -o outlook-mcp ./cmd/mcp
# 交叉编译到Windows
GOOS=windows GOARCH=amd64 go build -o outlook-mcp.exe ./cmd/mcp
# 交叉编译到macOS
GOOS=darwin GOARCH=amd64 go build -o outlook-mcp-mac ./cmd/mcp
# 交叉编译到Linux
GOOS=linux GOARCH=amd64 go build -o outlook-mcp-linux ./cmd/mcp
# 为当前平台构建
go build -o outlook-cli ./cmd/cli
# 交叉编译到Windows
GOOS=windows GOARCH=amd64 go build -o outlook-cli.exe ./cmd/cli
# 交叉编译到macOS
GOOS=darwin GOARCH=_amd64 go build -o outlook-cli-mac ./cmd/cli
# 交叉编译到Linux
GOOS=linux GOARCH=amd64 go build -o outlook-cli-linux ./cmd/cli
有两种方式来配置应用程序:
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应用程序都接受可选的命令行参数:
# 使用默认配置
go run cmd/mcp/main.go
# 使用自定义配置文件
go run cmd/mcp/main.go config.yaml
# 使用自定义配置和.env文件
go run cmd/mcp/main.go config.yaml .env.production
# 使用默认配置
go run cmd/cli/main.go
# 使用自定义配置文件
go run cmd/cli/main.go config.yaml
# 使用自定义配置和.env文件
go run cmd/cli/main.go config.yaml .env.production
# 使用默认配置
./outlook-mcp
# 使用自定义配置文件
./outlook-mcp config.yaml
# 使用自定义配置和.env文件
./outlook-mcp config.yaml .env.production
# 使用默认配置
./outlook-cli
# 使用自定义配置文件
./outlook-cli config.yaml
# 使用自定义配置和.env文件
./outlook-cli config.yaml .env.production
服务器实现了按需认证:
get_auth_url工具以开始认证流程启动与Microsoft的认证流程。
参数: 无
返回: 需要在浏览器中打开的认证URL
检索指定时间段内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应用程序提供了一个简单的交互式界面:
get_auth_url进行认证get_calendar_events检索日历数据http://localhost:1111/callback