Google表格MCP服务器
本子项目实现了一个托管代码项目(MCP)服务器,该服务器与Google表格交互以存储和检索提示和想法。它允许MCP客户端在指定的Google电子表格中跨各种工作表(选项卡)管理文本内容,包括时间戳和作者等元数据。
安装说明
- 导航到项目目录:
cd google-personal-mcp- 创建并激活虚拟环境(如果您还没有):
python3 -m venv venv
source venv/bin/activate- 安装依赖项:
pip install -r requirements.txt
pip install -e ../external/fastmcpGoogle Sheets API身份验证
为了允许MCP服务器与您的Google Sheets交互,您需要设置Google Sheets API访问并获取 credentials.json.
- 启用Google表格和驱动器API:
- 去 谷歌云控制台. - 创建新项目或选择现有项目。 - 导航到“APIs&Services”>“已启用的APIs&Service”。 - 搜索“Google Sheets API”并启用它。 - 搜索“Google Drive API”并启用它。
- 创建OAuth 2.0客户端ID:
- 在Google Cloud控制台中,转到“API和服务”>“凭据”。 - 单击“创建证书”>“OAuth客户端ID”。 - 选择“桌面应用程序”作为应用程序类型。 - 为其命名(例如,“GoogleSheetsMCP”)。 - 单击“创建”。
- 下载OAuth 2.0凭据:
- 创建客户端ID后,将出现一个对话框,其中包含您的客户端ID和客户端密码。 - 点击“下载JSON”以保存凭据文件。 - 将下载的文件重命名为 credentials.json 并将其放置在您的配置文件目录中(见下文)。
凭证存储(基于配置文件)
服务器存储按配置文件组织的OAuth凭据和授权令牌。这允许您管理多个Google帐户或身份验证范围。
目录结构
~/.config/google-personal-mcp/
├── config.json # Resource aliases and configuration
└── profiles/
├── default/
│ ├── credentials.json # OAuth 2.0 client secrets
│ └── token.json # Authorization token (auto-generated)
└── work/ # Alternative profile example
├── credentials.json
└── token.json设置个人资料
对于默认配置文件:
# Create the profile directory
mkdir -p ~/.config/google-personal-mcp/profiles/default
# Copy your downloaded credentials
mv ~/Downloads/credentials.json ~/.config/google-personal-mcp/profiles/default/对于替代配置文件:
# Create alternate profile directory
mkdir -p ~/.config/google-personal-mcp/profiles/work
# Add credentials for that profile
mv ~/Downloads/work_credentials.json ~/.config/google-personal-mcp/profiles/work/credentials.json运作原理
- credentials.json:包含您的OAuth 2.0客户端ID和密钥(从Google Cloud Console下载)。此文件适用于该配置文件的所有用途。
- token.json:首次身份验证后自动创建。包含您的授权令牌。为每个配置文件和范围集单独生成。
身份验证需要这两个文件。当您首次使用配置文件运行服务器时,它将:
- 寻找
credentials.json在配置文件目录中 - 如果
token.json不存在或无效,请打开浏览器进行身份验证 - 将授权令牌保存到
token.json
安全说明: 两者 credentials.json 和 token.json 是敏感文件。它们被添加到 .gitignore 以防止意外犯罪。
资源配置
服务器使用 config.json 文件来管理您的Google表格和驱动器文件夹的别名。这允许您通过友好的名称而不是长ID引用资源。
配置文件位置
服务器正在查找 config.json 在:
~/.config/google-personal-mcp/config.json配置文件结构
创建 config.json 为您的资源添加别名的文件:
{
"sheets": {
"prompts": {
"id": "YOUR_SPREADSHEET_ID",
"profile": "default",
"description": "Main prompts storage"
}
},
"drive_folders": {
"documents": {
"id": "YOUR_FOLDER_ID",
"profile": "default",
"description": "Personal documents"
}
}
}字段参考
- 张:电子表格别名词典
- 驱动器文件夹:驱动器文件夹别名词典
- ID:谷歌资源ID(电子表格ID或文件夹ID)
- 个人资料:要使用的身份验证配置文件(默认值:
"default") - 描述:可选的人类可读描述
查找您的资源ID
电子表格ID:
- 在Google表格中打开电子表格
- 请查看URL:
https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit - 复制ID
/d/和/edit
文件夹ID:
- 在Google云端硬盘中打开您的文件夹
- 请查看URL:
https://drive.google.com/drive/folders/FOLDER_ID - 复制ID后
/folders/
示例设置
# Create the config directory
mkdir -p ~/.config/google-personal-mcp
# Copy the example file
cp config.json.example ~/.config/google-personal-mcp/config.json
# Edit with your spreadsheet and folder IDs
nano ~/.config/google-personal-mcp/config.json详细日志
启用详细日志记录以查看有关凭据文件搜索、身份验证和API操作的详细信息:
export GOOGLE_PERSONAL_MCP_VERBOSE=1启用详细模式后,服务器将显示:
- 使用了哪个凭据/令牌文件位置
- 身份验证流程步骤
- API操作详细信息
- 故障排除的调试信息
要禁用详细日志记录,请执行以下操作:
export GOOGLE_PERSONAL_MCP_VERBOSE=0
# or simply unset the variable
unset GOOGLE_PERSONAL_MCP_VERBOSE驱动工具和诊断
该项目包括一个实用程序脚本 scripts/drive-tool.py 以帮助诊断身份验证问题并列出Google Drive中的文件。此工具独立于主MCP服务器,但共享相同的身份验证配置文件(default 默认情况下)。
用途:
python3 scripts/drive-tool.py特征:
- 列出所有文件: 它要求
drive.readonly范围看 *全部* 驱动器中的文件,而不仅仅是此应用程序创建的文件(与使用受限文件的主服务器不同drive.file范围)。 - 自动修复: 如果您当前缓存的令牌(
token.json)如果缺少必要的权限,该工具将自动检测到这一点并触发重新身份验证流程。系统将提示您访问一个URL以授权更广泛的范围。 - 诊断: 有助于验证您的
credentials.json正在工作,并且该应用程序可以成功地与Google Drive API对话。如果此工具有效,但服务器不起作用,则问题可能出在服务器配置或特定文件限制上。
运行MCP服务器
这 fastmcp 服务器可以直接运行。
- 确保您的虚拟环境处于活动状态:
source venv/bin/activate- 运行服务器:
python main.py服务器将在前台运行。您可以按停止它 Ctrl+C.
服务器通常可通过以下方式访问 fastmcp 客户端,然后可以调用公开的工具。
正在配置.ggemini/settings.json
要将此MCP服务器与Gemini一起使用,请将以下配置添加到您的 .gemini/settings.json 文件:
{
"mcpServers": {
"google-sheets": {
"command": "google-personal-mcp",
"args": [],
"env": {}
}
}
}启用详细日志记录后:
{
"mcpServers": {
"google-sheets": {
"command": "google-personal-mcp",
"args": [],
"env": {
"GOOGLE_PERSONAL_MCP_VERBOSE": "1"
}
}
}
}笔记:
- 确保该软件包已安装
pip install -e .以便google-personal-mcp命令在PATH中可用 - 这
cwd参数现在是可选的-服务器将自动在标准位置搜索凭据 - 如果要指定自定义凭据位置,请使用
GOOGLE_PERSONAL_CREDENTIALS环境变量env部分
可用工具
以下工具由 fastmcp 服务器:
list_sheets(spreadsheet_id: str = DEFAULT_SPREADSHEET_ID) -> list[str]:列出给定电子表格中的所有工作表(选项卡)。create_sheet(new_sheet_name: str, spreadsheet_id: str = DEFAULT_SPREADSHEET_ID) -> dict:在给定的电子表格中创建新工作表(选项卡)。get_sheet_status(spreadsheet_id: str = DEFAULT_SPREADSHEET_ID, range_name: str = "README!A1") -> dict:获取工作表的状态(从指定范围读取数据)。insert_prompt(sheet_name: str, prompt_name: str, content: str, author: str = "Google Sheets MCP", spreadsheet_id: str = DEFAULT_SPREADSHEET_ID) -> dict:在工作表中插入提示。get_prompts(sheet_name: str, spreadsheet_id: str = DEFAULT_SPREADSHEET_ID) -> dict:从工作表中获取所有提示。initialize_readme_sheet(spreadsheet_id: str = DEFAULT_SPREADSHEET_ID) -> dict:用一些默认内容初始化“README”表。
这些工具旨在通过编程方式调用 fastmcp 客户。例如,使用 fastmcp Python中的客户端库,您可以调用 client.tools.list_sheets().
命令行界面
这 google-personal CLI提供了用于管理Google Drive文件、表格和配置的工具。
驱动命令
列出所有文件(诊断)
列出当前凭据可访问的所有文件:
google-personal drive list-all-files [--profile
]选项:
--profile:身份验证配置文件(默认:“默认”)
列出文件夹中的文件
列出特定驱动器文件夹中的文件:
google-personal drive list-files [--folder ] [--profile
]选项:
--folder:文件夹别名(如果只配置了一个文件夹,则可选)--profile:身份验证配置文件(默认:“默认”)
例子:
google-personal drive list-files --folder documents下载文件
按名称从驱动器下载文件:
google-personal drive get-file --remote-file [--local-file
] [--folder ] [--profile
]选项:
--remote-file:驱动器中文件的名称(必填)--local-file:要保存的本地路径(可选,默认为远程文件的基名)--folder:文件夹别名(如果只配置了一个文件夹,则可选)--profile:身份验证配置文件(默认:“默认”)
示例:
# Download with auto-detected filename
google-personal drive get-file --remote-file 'Recording 3.acc'
# Download with custom local name
google-personal drive get-file --remote-file 'Report.pdf' --local-file 'Q4-Report.pdf' --folder documents安全: 如果本地文件已存在,则命令失败,以防止意外覆盖。
上传文件
将文件上传到驱动器:
google-personal drive put-file --local-file
[--remote-file ] [--folder ] [--profile
]选项:
--local-file:要上传的本地文件(必需)--remote-file:驱动器中文件的名称(可选,默认为本地文件的基本名称)--folder:文件夹别名(如果只配置了一个文件夹,则可选)--profile:身份验证配置文件(默认:“默认”)
示例:
# Upload with same name
google-personal drive put-file --local-file report.pdf
# Upload with custom name
google-personal drive put-file --local-file ./docs/report.pdf --remote-file 'Q4-Report.pdf' --folder documents删除文件
按名称从驱动器中删除文件:
google-personal drive remove-file --remote-file [--folder ] [--profile
]选项:
--remote-file:要删除的文件的名称(必需)--folder:文件夹别名(如果只配置了一个文件夹,则可选)--profile:身份验证配置文件(默认:“默认”)
例子:
google-personal drive remove-file --remote-file 'old-backup.zip' --folder documents配置命令
列出已配置的工作表
google-personal config list-sheets [--profile
]列出已配置的文件夹
google-personal config list-folders [--profile
]图纸命令
有关MCP工具,请参阅上面的“可用工具”部分。CLI还提供对工作表操作的直接访问:
google-personal sheets list-tabs --sheet-alias [--profile
]
google-personal sheets get-status --sheet-alias [--range-name ] [--profile
]
google-personal sheets get-prompts --sheet-alias --sheet-tab-name [--profile
]
google-personal sheets insert-prompt --sheet-alias --sheet-tab-name --prompt-name --content [--author ] [--profile
]MCP服务器验证
简单验证测试
为了快速验证您的MCP服务器是否正常工作,请使用以下简单的测试提示:
简单测试提示:
Use the Google Sheets MCP tool to list all prompts from the 'Gemini Prompts' sheet. Just show me the raw data exactly as returned by the tool.为什么这适用于验证:
- 这一提示迫使AI使用
get_prompts工具 - 您可以通过检查AI是否从您的工作表中返回实际提示数据来轻松验证
- 无需复杂的摘要,只需原始工具输出
- 清除成功指示符:如果您从工作表中看到实际的提示名称/内容,则MCP连接正在工作
快速验证步骤:
- 使用以下命令将测试提示添加到“Gemini Prompts”表中
insert_prompt工具(例如,名称:“测试提示”,内容:“这是一个测试”) - 将上面的简单测试提示发送给Gemini/Claude
- 验证AI是否显示了您的实际测试提示数据(而不是通用响应)
- 成功=MCP服务器已连接并正常工作
高级测试提示
要进行全面测试,请使用此提示,该提示要求AI总结工作表内容:
高级测试提示:
Use the Google Sheets MCP tool to get all prompts from the 'Gemini Prompts' sheet and provide a comprehensive summary of their content, including key themes and any notable patterns you observe.预期行为:
- AI应该成功调用
get_prompts“Gemini Prompts”表上的工具 - 如果工作表存在并包含提示,AI将接收提示数据并生成摘要
- 如果表格为空或不存在,人工智能应明确报告
- 如果AI可以访问工具并检索数据(或报告适当的错误),则MCP服务器连接正在工作
先决条件:
- 确保“Gemini Prompts”表存在于您的电子表格中(如果需要,使用
create_sheet工具) - 使用以下命令在工作表中添加一些测试提示
insert_prompt用于有意义验证的工具 - 确认您的MCP客户端(Gemini/Claude)已配置为使用此服务器
验证步骤:
- 将上面的测试提示发送给您的AI助手
- 检查它是否尝试使用Google表格MCP工具(您可能会在界面中看到工具调用指示器)
- 验证人工智能是否基于实际工作表数据而不是通用响应提供摘要
- 如果AI无法访问工具,请检查您的MCP服务器配置和身份验证
总结测试提示
为了便于验证MCP服务器是否使用摘要功能正常工作:
测试提示:
Please use the Google Sheets MCP tool to retrieve all prompts from the 'Gemini Prompts' sheet and provide a detailed summary of their content, including the total number of prompts, key themes, and any patterns you notice in the prompt names or content.为什么这适用于验证:
- 迫使AI调用
get_prompts“Gemini Prompts”表上的工具 - 需要实际的数据处理(计数、汇总、模式识别)
- 易于验证:如果您从实际工作表数据中看到具体细节,则MCP连接正常工作
- 明确的故障指示器:如果AI给出的是通用响应而不是您的实际数据,则服务器未连接
快速验证步骤:
- 确保“Gemini Prompts”表存在,并且至少包含2-3个测试提示
- 将上述测试提示发送给Gemini/Claude
- 检查AI响应是否包括:
- 工作表中的实际提示名称/内容(非通用示例) - 特定的提示计数(例如,“总共有5个提示”) - 来自实际数据的真实主题/模式
- 成功=MCP服务器已连接并正常运行
先决条件:
- 电子表格中存在“Gemini Prompts”表
- 工作表包含一些测试提示(使用
insert_prompt如果需要,可以使用工具添加它们) - MCP客户端已正确配置为使用此服务器
连接到MCP客户端
此MCP服务器可以连接到支持MCP协议的任何MCP兼容客户端。服务器公开了用于程序化Google表格访问的工具,允许客户端管理电子表格内容、存储提示和跨多个表格检索数据。
文档
对于AI代理
- 强制阅读 -每次会议前必须先阅读
- 代理商.md -参与此项目的人工智能代理的强制性工作流程
- 完成的定义 -质量标准和检查表
- 工作流 -MCP工具和Google API集成的开发工作流程
- CLAUDE.md -Claude Code用户指南
对于开发者
例子
- MCP工具示例 -完成MCP工具演练
- Google API集成示例 -API集成演练
- Claude代码示例 -项目具体示例
