Google日历和Gmail集成服务

一个基于MCP协议的服务器,用于将Google日历和Gmail与AI应用集成,支持日历事件管理和邮件操作。

  • by aaryaranjit03
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 aaryaranjit03/google-mcp-server

使用说明

谷歌套件MCP服务器

一个模型上下文协议(MCP)服务器,用于将谷歌日历和Gmail与克劳德等人工智能应用程序集成。

🎯 概述

该项目实现了一个测试MCP服务器,使AI助手能够:

  • 管理Google日历事件(创建、读取、更新、删除)
  • 访问和搜索Gmail邮件
  • 撰写和发送电子邮件
  • 检索日历和电子邮件元数据

构建使用:

  • MCP协议 -Anthropic的模型上下文协议
  • 谷歌API -日历API和Gmail API
  • python -FastMCP框架

📋 特性

日历工具

  • list_calendar_events -列出即将到来的日历事件
  • create_calendar_event -与与会者一起创建新活动
  • update_calendar_event -修改现有事件
  • delete_calendar_event -删除事件

Gmail工具

  • list_emails -使用筛选器列出收件箱邮件
  • get_email_content -阅读完整的电子邮件内容
  • send_email -撰写和发送电子邮件
  • search_emails -高级Gmail搜索
  • mark_email_read -将邮件标记为已读

资源

  • 日历设置和时区信息
  • Gmail配置文件和配额信息

提示词

  • 会议日程安排模板
  • 电子邮件摘要模板
  • 日历报告模板

🚀 快速开始

先决条件

  • Python 3.10+
  • 谷歌云帐户
  • 谷歌工作区帐户(Gmail+日历)

安装

  1. 克隆存储库
   git clone <your-repo-url>
   cd google-mcp-server
  1. 安装依赖项
   pip install -r requirements.txt
  1. 设置Google Cloud凭据

    • 看 设置.md 详细说明
    • 创建OAuth 2.0凭据
    • 下载为 credentials.json (不包含在回购中)
  2. 运行服务器

   python google_suite_server.py
  1. 与客户进行测试
   python test_client.py google_suite_server.py

🧪 测试

该项目包括一个全面的测试套件:

python test_client.py google_suite_server.py

测试包括:

  • ✅ 工具发现和执行
  • ✅ 日历操作(CRUD)
  • ✅ Gmail操作(读取、搜索、发送)
  • ✅ 资源访问
  • ✅ 提示模板

💡 用法示例

MCP服务器与Postman的配合使用

此项目在以下位置公开了一个与MCP兼容的HTTP端点:

http://127.0.0.1:8000/mcp
  1. 打开 邮递员 → click 新 → 主控程序 (或使用MCP侧栏)。

  2. 输入服务器终结点:

http://127.0.0.1:8000/mcp
  1. 点击 连接。邮递员将自动:

    • 协商MCP会议

    • 打开流式SSE连接

    • 加载所有可用工具

  2. 从“工具”选项卡中选择任何工具并填写输入字段。

  3. 按 跑 执行该工具。结果将显示在右侧面板中,流式或多部分输出将实时显示。

这提供了一个简单的用户界面,用于调用服务器的谷歌日历、Gmail和其他MCP工具,而不需要自定义客户端。

程序化使用

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

server_params = StdioServerParameters(
    command="python",
    args=["google_suite_server.py"]
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # List calendar events
        result = await session.call_tool(
            "list_calendar_events",
            arguments={"max_results": 5}
        )

📊 测试结果

所有测试均已通过✅

  • 发现并测试了9个工具
  • 已访问2个资源
  • 3个提示已验证
  • 日历CRUD操作已验证
  • Gmail操作已验证