项目简介

'mcp-servers' 仓库包含一系列基于 Model Context Protocol (MCP) 构建的后端服务器实现,旨在为 AI 助手或大型语言模型 (LLM) 提供与 Google 服务(如 Google Calendar, Gmail, Google Drive)交互的能力。每个服务器都是一个独立的 MCP 模块,通过标准化接口暴露特定 Google 服务的功能,例如管理日历事件、读写邮件、管理文件等。

这些服务器通过 MCP 的 JSON-RPC 协议进行通信,通常使用 STDIO 作为传输方式,使得 AI 客户端能够以结构化的方式请求数据或执行操作。项目使用了 NestJS 和 '@rekog/mcp-nest' 框架来简化 MCP 服务器的开发。

主要功能点

本项目提供了针对以下 Google 服务的功能:

  • Google Calendar:
    • 列出用户的所有日历。
    • 列出指定日历中的事件。
    • 创建新的日历事件。
  • Gmail:
    • 列出用户的邮件列表(支持查询)。
    • 读取指定邮件的详细内容。
    • 发送新邮件(支持收件人、抄送、密送、主题和正文)。
    • 搜索邮件。
  • Google Drive:
    • 搜索和列出文件及文件夹(支持查询和指定文件夹)。
    • 获取文件或文件夹的详细信息。
    • 创建文件夹。
    • 上传本地文件到 Drive。
    • 从 Drive 下载文件到本地。
    • 删除文件或文件夹。
    • 共享文件或文件夹。

所有服务器都集成了 Google OAuth2.0 认证流程,以便安全地访问用户数据。

安装步骤

本项目是一个 Node.js 项目,需要 Node.js 和 npm/yarn 环境。

  1. 克隆仓库:

    git clone https://github.com/sowonlabs/mcp-servers.git
    cd mcp-servers
  2. 安装项目依赖:

    npm install
    # 或者使用 yarn: yarn install
  3. 准备 Google API 凭据:

    • 前往 Google Cloud Console
    • 创建一个新项目或选择现有项目。
    • 启用 Google Calendar API, Gmail API, Google Drive API。
    • 创建 OAuth 2.0 客户端 ID 凭据。客户端类型选择“桌面应用”(Desktop app)。
    • 下载生成的 'credentials.json' 文件。
    • 将下载的文件放置在你要运行的 MCP 服务器对应的包目录下,例如 'packages/google-calendar/credentials.json'。或者你可以将其放在其他位置,并在启动服务器时通过命令行参数指定路径。
  4. 构建各个服务器模块: 进入你想要运行的服务器对应的包目录,然后执行构建命令:

    # 例如,构建 Google Calendar 服务器
    cd packages/google-calendar
    npm run build
    # 或者使用 yarn: yarn run build

    对 Gmail 或 Google Drive 服务器重复此步骤:

    cd ../gmail
    npm run build
    cd ../google-drive
    npm run build

    构建完成后,会在对应包目录下生成 'dist' 文件夹。

服务器配置 (供 MCP 客户端使用)

MCP 服务器通过 STDIO 传输方式与 MCP 客户端通信。MCP 客户端需要知道如何启动服务器进程。以下是各个服务器的启动命令配置示例(这部分配置通常在 MCP 客户端应用中完成):

Google Calendar MCP 服务器

{
  "name": "google-calendar",
  "command": "node",
  "args": [
    "dist/main.js",
    "--credentials", "/path/to/your/google-calendar/credentials.json"
  ],
  "cwd": "/path/to/cloned/repo/mcp-servers/packages/google-calendar"
}
  • 'name': MCP 服务器的名称。
  • 'command': 启动服务器的可执行文件,通常是 'node'。
  • 'args': 传递给 'command' 的参数列表。
    • 'dist/main.js': 构建后生成的主文件。
    • '--credentials': 指定 'credentials.json' 文件的路径。请替换 '/path/to/...' 为你实际的文件路径。
  • 'cwd': 启动命令的工作目录,应设置为对应服务器的包目录。

Gmail MCP 服务器

{
  "name": "gmail",
  "command": "node",
  "args": [
    "dist/main.js",
    "--credentials", "/path/to/your/gmail/credentials.json"
  ],
  "cwd": "/path/to/cloned/repo/mcp-servers/packages/gmail"
}
  • 参数说明同上,请替换相应路径。

Google Drive MCP 服务器

{
  "name": "google-drive",
  "command": "node",
  "args": [
    "dist/main.js",
    "--credentials", "/path/to/your/google-drive/credentials.json"
  ],
  "cwd": "/path/to/cloned/repo/mcp-servers/packages/google-drive"
}
  • 参数说明同上,请替换相应路径。

首次连接时,可能需要进行 OAuth 认证,此时会打开一个浏览器窗口,用户需要在其中完成 Google 账户登录和授权。认证成功后,生成的 token 会保存在用户主目录下的 '.sowonai' 文件夹中,以便后续自动加载。

基本使用方法

MCP 服务器本身没有用户界面,它通过 STDIO 接收 MCP 客户端发送的 JSON-RPC 请求,并通过 STDIO 返回响应。

  1. 运行服务器 (通常由 MCP 客户端启动): MCP 客户端会使用上述配置信息,以子进程的方式启动对应的服务器。
    # 手动启动示例(通常不需要手动执行,由MCP客户端管理)
    cd packages/google-calendar
    node dist/main.js --credentials /path/to/your/credentials.json
    服务器启动后,会监听 STDIO 进行通信。
  2. MCP 客户端交互: AI 客户端(例如基于 LangChain, LlamaIndex 或自定义 MCP SDK 的应用)连接到服务器。
    • 客户端首先通过 MCP 协议与服务器进行能力发现(例如,获取服务器名称、版本和可用的工具列表及其参数描述)。
    • AI 根据用户指令,选择合适的工具(例如 'gcalendar_createEvent', 'gmail_listMessages', 'gdrive_uploadFile')。
    • AI 构造 JSON-RPC 请求,调用选定的工具并提供必要的参数。
    • 服务器执行相应的 Google API 操作,并将结果或错误以 JSON-RPC 响应的形式返回给客户端。
    • AI 客户端解析响应,可能将结果(例如日历事件列表、邮件内容、文件信息)呈现给用户。

请注意,这个仓库提供的是 MCP 服务器。你需要一个实现了 MCP 客户端功能的 AI 应用或框架来实际使用这些服务器。

信息

分类

生产力应用