BigQuery MCP 服务器是一个基于 Model Context Protocol 的服务器,它为用户提供对 BigQuery 的便捷访问。借助该服务器,大型语言模型(LLM)能够轻松检查数据库架构并执行查询操作。
本服务器实现了一系列实用工具,可助力用户在 BigQuery 数据库中高效开展操作:
execute-query:运用 BigQuery 方言执行 SQL 查询。list-tables:列出 BigQuery 数据库中的所有表。describe-table:描述特定表的架构。本服务器可通过以下参数进行灵活配置:
--project(必需):GCP 项目 ID。--location(必需):GCP 地理位置(例如 europe-west9)。--dataset(可选):仅考虑特定的 BigQuery 数据集。可以通过重复参数指定多个数据集(例如 --dataset my_dataset_1 --dataset my_dataset_2)。若未提供该参数,默认将考虑项目中的所有表。~/Library/Application\ 支持/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json请将 {{PATH_TO_REPO}}、{{GCP_PROJECT_ID}} 和 {{GCP_LOCATION}} 替换为适当的值。
在实际使用中,可依据需求调用不同工具,例如执行 SQL 查询:
# 调用 execute-query 工具执行 SQL 查询
# 这里假设已经完成服务器配置并启动
# 代码示例仅为示意,实际使用需根据具体情况调整
# 调用 execute-query 工具执行 SQL 查询
import subprocess
query = "SELECT * FROM your_table"
command = f"uv mcp-server-bigquery execute-query --project your_project_id --location your_location --query '{query}'"
result = subprocess.run(command, shell=True, capture_output=True, text=True)
print(result.stdout)
若需列出多个数据集的所有表,可通过多次指定 --dataset 参数实现:
# 调用 list-tables 工具列出多个数据集的所有表
import subprocess
command = "uv mcp-server-bigquery list-tables --project your_project_id --location your_location --dataset dataset_1 --dataset dataset_2"
result = subprocess.run(command, shell=True, capture_output=True, text=True)
print(result.stdout)
若要准备分发包,可按以下步骤操作:
uv sync
uv build
执行上述命令后,将在 dist/ 目录中创建源和轮分布。
3. 发布到 PyPI:
uv publish
注意:你需要通过环境变量或命令标志设置 PyPI 凭据:
--token 或 UV_PUBLISH_TOKEN--username/UV_PUBLISH_USERNAME 和 --password/UV_PUBLISH_PASSWORD由于 MCP 服务器通过 stdio 运行,调试工作可能具有一定难度。为获得最佳的调试体验,我们强烈推荐使用 MCP Inspector。
你可以通过 npm 执行以下命令启动 MCP Inspector:
npx @modelcontextprotocol/inspector uv --directory {{PATH_TO_REPO}} run mcp-server-bigquery
启动后,Inspector 会显示一个 URL,你可以在浏览器中访问该 URL 开始调试。