MCP服务器表
模型上下文协议(MCP)服务器,使AI助手能够从Google Drive加载、查询和分析表格数据文件。加载电子表格和CSV文件,使用DuckDB运行SQL查询,并使用pandas处理内存中的数据。
快速设置
1.安装依赖项
使用紫外线(推荐):
uv sync2.设置谷歌云OAuth
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用 Google Drive API
- 首选 凭证 → 创建凭据 → OAuth客户端ID
- 选择 桌面应用 作为应用程序类型
- 下载JSON文件并将其另存为
credentials/client_secrets.json
3.配置环境
cp env.example .env编辑 .env 自定义设置(可选-默认值适用于大多数情况)。
4.运行服务器
首次设置(通过Google验证):
uv run python main.py- 浏览器打开进行谷歌身份验证
- 授予对Google Drive的访问权限
- 保存令牌以备将来使用
使用MCP Inspector进行测试:
uv run mcp dev main.py注: 跑 python main.py 使用前先完成一次身份验证 mcp dev.
可用的MCP工具
所有工具都会在需要时自动从Google云端硬盘下载文件。文件在本地缓存,并在后台线程不活动10分钟后自动清理。
info
获取有关文件DataFrame结构的元数据。如果尚未缓存,则自动下载文件。
参数:
file_id(string):Google Drive文件ID
退货: 形状、列、数据类型、空计数、内存使用、工作表信息
例子:
info("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU")
# Returns: {status, file_id, num_sheets, sheets: [{sheet_number, sheet_name, shape: {rows, columns}, columns: [{name, dtype, non_null_count, null_count}], memory_usage_bytes}], total_memory_usage_bytes}get_rows_csv
将文件中的行导出为CSV格式。如果尚未缓存,则自动下载文件。
参数:
file_id(string):Google Drive文件IDstart(int,可选):起始行索引(从0开始,默认值:0)end(int,可选):结束行索引(独占,默认:所有行)sheet_number(int,可选):Excel文件的工作表编号(从0开始,默认值:0)
退货: 具有指定行的CSV字符串(每次调用最多100行)
示例:
# Get first 10 rows from sheet 0
get_rows_csv("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", 0, 10)
# Get rows 50-100 from sheet 1
get_rows_csv("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", 50, 100, 1)query_file
使用DuckDB对文件运行SQL查询。如果尚未缓存,则自动下载文件。
参数:
file_id(string):Google Drive文件IDsql_query(string):要执行的SQL查询(对于单表使用“data”或“data_0”,对于有多表的Excel文件使用“data_0”、“data_1”等)
退货: 带列和行的查询结果(每次查询最多100行)
示例:
# Select from single-sheet file or first sheet
query_file("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", "SELECT * FROM data LIMIT 10")
# Query specific sheet in Excel file
query_file("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", "SELECT * FROM data_1 WHERE column1 > 100")
# Join multiple sheets
query_file("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", "SELECT * FROM data_0 JOIN data_1 ON data_0.id = data_1.id")
# Aggregation query
query_file("1KliqOOx9hdU6fOJ0oQznuctvF3AphcJU", "SELECT column1, COUNT(*) as count FROM data GROUP BY column1")自动文件管理
- 自动下载: 当您拨打电话时,文件会自动从谷歌云端硬盘下载
info,get_rows_csv,或query_file - 缓存: 下载的文件在本地缓存以提高性能
- 自动清理: 后台线程会删除10分钟内未被访问的文件
- 内存管理: DataFrames按需加载到内存中并跟踪以进行清理
