该项目实现了一个基于Python的MCP(模型上下文协议)服务器,作为大型语言模型(LLMs)与Google日历API之间的接口。它使LLMs能够通过自然语言请求执行日历操作。
mcp_google_calendar_list_calendars)。mcp_google_calendar_create_calendar)。mcp_google_calendar_find_events)。m_ google_calendar_create_event)。mcp_google_calendar_quick_add_event)。mcp_google_calendar_update_event)。mcp_google_calendar_delete_event)。mcp_google_calendar_add_attendee)。mcp_google_calendar_check_attendee_status)。mcp_google_calendar_query_free_busy)。mcp_google_calendar_schedule_mutual)。mcp_google_calendar_analyze_busyness)。mcp_sdk库使用stdio提供兼容MCP的工具。前提条件:
克隆仓库:
git clone <repository-url> # 替换为您的仓库URL
cd <repository-directory>
Google云设置(OAuth凭证):
.env文件中需要它们。您不需要下载其他应用类型的JSON文件。calendar,添加.../auth/calendar范围(读写权限)。点击“更新”。http://localhost:8080/oauth2callback。点击“保存”。(如果您更改了.env中的OAUTH_CALLBACK_PORT,请相应调整端口)。环境配置(.env文件):
env.example文件,并将副本重命名为.env。.env文件,并粘贴从Google云获取的客户端ID和客户端密钥:
# Google OAuth 2.0客户端凭证(来自Google云控制台 - 桌面应用类型)
GOOGLE_CLIENT_ID='YOUR_GOOGLE_CLIENT_ID_HERE'
GOOGLE_CLIENT_SECRET='YOUR_GOOGLE_CLIENT_SECRET_HERE'
# 用户OAuth令牌在首次认证后存储的文件路径
# 此文件会自动创建。默认为.gcp-saved-tokens.json
TOKEN_FILE_PATH='.gcp-saved-tokens.json'
# OAuth回调期间本地Web服务器的端口(必须与Google云重定向URI匹配)
OAUTH_CALLBACK_PORT=8080
# Google日历API范围(默认为读写)
# 使用'https://www.googleapis.com/auth/calendar.readonly'进行只读访问
CALENDAR_SCOPES='https://www.googleapis.com/auth/calendar'
TOKEN_FILE_PATH指向应用程序可以写入令牌文件的位置(通常根目录下的默认.gcp-saved-tokens.json即可)。此文件会被自动添加到.gitignore。安装依赖项:
pip install -r requirements.txt
您只需要手动运行服务器一次来完成初始的Google OAuth认证流程。之后,您的MCP客户端将根据其配置自动启动服务器。
首次运行(认证):
python run_server.py
.gcp-saved-tokens.json)。由于它们还不存在,它将:
http://localhost:8080/oauth2callback)。.env指定的文件(.gcp-saved-tokens.json)。http://localhost:8000)。您可以通常在看到令牌已保存或服务器已启动的确认后停止它(Ctrl+C)。可选:直接测试服务器:
curl或Postman等工具发送HTTP请求),可以再次运行python run_server.py。它将加载已保存的令牌并启动服务器,而无需浏览器认证。注意: 对于常规使用MCP客户端,您不需要在初始认证后手动运行python run_server.py。客户端会处理启动它。
要在MCP客户端内使用此服务器作为工具,您需要配置客户端以运行run_server.py脚本。这通常在JSON设置文件中完成。
示例mcp.json条目:
{
"tools": {
"google_calendar": {
"command": "python",
"args": [
"C:/path/to/your/calendar-mcp/run_server.py"
]
}
}
}
配置详情:
google_calendar: 您为MCP客户端内的此工具实例选择的独特名称。command: 如果python在系统PATH中,则设置为python。如果不在,请提供python.exe或python可执行文件的完整绝对路径(例如,/path/to/your/venv/bin/python或C:/path/to/your/venv/Scripts/python.exe)。args: 提供项目目录中run_server.py脚本的完整绝对路径。替换占位符/path/to/your/calendar-mcp/run_server.py为您系统上的实际路径。api: 某些客户端可能仍需要api字段指向底层的FastAPI服务器(例如,"api": "http://localhost:8000")以发现模式,即使通信是通过stdio进行的。timeout: 您可以添加超时(例如,"timeout": 30000表示30秒)。工作原理: 当MCP客户端调用此工具时,它会执行指定的command和args。run_server.py脚本检测它是通过管道的stdin/stdout运行的,并自动启动MCP通信桥接器,而不是仅仅启动HTTP服务器。
重要事项:
.env文件中,不在MCP客户端配置中。run_server.py:主入口点,处理服务器启动和MCP检测。src/server.py:FastAPI应用程序定义,HTTP端点。src/calendar_actions.py:与Google日历API交互的核心逻辑。src/analysis.py:高级分析函数。src/auth.py:处理OAuth 2.0认证流程和令牌管理。src/models.py:Pydantic模型,用于请求/响应数据结构。src/mcp_bridge.py:使用mcp_sdk实现MCP工具定义,委托给FastAPI服务器。calendar_mcp.log。本项目采用双重许可,以支持开源合作和可持续发展:
GNU Affero通用公共许可证v3.0(AGPL-3.0):
商业许可证:
通过使用、修改或分发此软件,您同意受AGPLv3或单独协商的商业许可证条款的约束。