项目简介
'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 环境。
-
克隆仓库:
git clone https://github.com/sowonlabs/mcp-servers.git cd mcp-servers -
安装项目依赖:
npm install # 或者使用 yarn: yarn install -
准备 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'。或者你可以将其放在其他位置,并在启动服务器时通过命令行参数指定路径。
-
构建各个服务器模块: 进入你想要运行的服务器对应的包目录,然后执行构建命令:
# 例如,构建 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 返回响应。
- 运行服务器 (通常由 MCP 客户端启动): MCP 客户端会使用上述配置信息,以子进程的方式启动对应的服务器。
服务器启动后,会监听 STDIO 进行通信。# 手动启动示例(通常不需要手动执行,由MCP客户端管理) cd packages/google-calendar node dist/main.js --credentials /path/to/your/credentials.json - 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 应用或框架来实际使用这些服务器。
信息
分类
生产力应用