使用说明
# 谷歌日历MCP服务器
是参照谷歌Calendar的MCP服务器。
用ChatGPT试试
本MCP服务器现在正在公开演示。URL如下。
https://app-6365ec52-2150-4db3-8e62-a55cbbb83eef.ingress.apprun.sakura.ne.jp
1.谷歌Cloud方面的准备
- 在谷歌Cloud上创建项目。
- 启用谷歌日历API。
- 转到API和服务,创建OAuth2.0客户端(web应用程序)。
- 已批准的重定向URI
https://chatgpt.com/connector_platform_oauth_redirect中所述修改相应参数的值。 - 保留已提交的客户机标识/客户机安全。
2.在ChatGPT侧注册应用程序
- 在ChatGPT中启用Developer mode(可能需要管理员权限)。
Apps -> Create中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。- 在Endpoint中设置本服务器的URL。
- 选择“审计”以进行设置。
- 保存后,在草稿中测试工具枚举和审计登录。
正式文档
- OpenAI:开发者模式,以及ChatGPT[beta]中的MCP应用程序
- OpenAI:在MCP应用程序中使用OAuth进行认证时
- OpenAI:为ChatGPT和API集成构建MCP服务器
- 谷歌:创建访问凭据(OAuth客户端ID)
- Google:日历API OAuth/同意设置
- 谷歌:面向Web服务器应用程序的OAuth 2.0 (
redirect_uri一致要件)
开発
准备
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
cp .env.template .env
起动
dotenv run -- python app.py
默认情况下 http://127.0.0.1:5000 中所述修改相应参数的值。
用Docker启动
docker image build -t google-calendar-mcp-server .
docker container run --rm -p 80:80 --env-file .env google-calendar-mcp-server
在容器中以gunicorn(WSGI)启动。
.env 的,之 RESOURCE 请根据公开URL进行设定。
主要端点
POST /:MCP JSON-RPC端点GET /.well-known/oauth-authorization-serverGET /.well-known/oauth-protected-resourceGET /oauth/authorize(ENABLE_AUTH_ENDPOINT_PROXY=true),模板名称将采用不同的格式POST /oauth/token(ENABLE_TOKEN_ENDPOINT_PROXY=true),模板名称将采用不同的格式
工具
google_calendar_listgoogle_calendar_events
授权测试
在授权代码+PKCE流中获取令牌并将其保存到高速缓存JSON。范围是MCP服务器的 scopes_supported 来修改标记元素的显示属性。
.env 而需要与环境混合的每条反射光线,进行环境采样。
python scripts/test_oauth_authcode.py \
--base-url http://127.0.0.1:5000 \
--client-id YOUR_OAUTH_CLIENT_ID \
--client-secret YOUR_OAUTH_CLIENT_SECRET \
--redirect-uri http://127.0.0.1:8765/callback \
--cache-file tmp/oauth_cache.json
请在浏览器中打开运行后显示的授权URL,粘贴重定向后的整个URL。
ChatGPT App连携时のHTTPS公开
作为ChatGPT的应用程序/连接器使用时,服务器必须在HTTPS上公开。 开发时是使用ngrok的前提。
ngrok起动例
在另一个终端上执行以下操作:。
ngrok http 5000 --url https://<your-ngrok-domain>.ngrok-free.app
.env设定例
通过ngrok使用时 .env 的,之 RESOURCE 请配合公开URL。
RESOURCE=https://<your-ngrok-domain>.ngrok-free.app
根据需要 APP_HOST=0.0.0.0 中所述修改相应参数的值。
默认情况下,授权服务器的代理无效。
仅在需要时 .env 中所述修改相应参数的值。
ENABLE_AUTH_ENDPOINT_PROXY=true
ENABLE_TOKEN_ENDPOINT_PROXY=true
offline_access和谷歌OAuth的注意事项
为了在ChatGPT的MCP应用程序中稳定刷新令牌运用,请通过许可请求 offline_access 能处理是很重要的。
本服务器是discovery metadata的 scopes_supported 的 offline_access 中所述修改相应参数的值。
另一方面,Google OAuth scope=offline_access 因为不能直接接受ENABLE_AUTH_ENDPOINT_PROXY=true 的情况下/oauth/authorize 在代理中 offline_access 删除 access_type=offline 将条目添加到文档注册表。
如果不使用这个转换,谷歌方面不会返还刷新令牌,每个访问令牌到期都需要重新认证。