mcpField
B
Bigquery Mcp

Bigquery Mcp

本地服务
github.com/pvoo数据库1022 周前更新

关于 Bigquery Mcp

Bigquery Mcp 是用于浏览 BigQuery 数据集和表的 MCP 服务,面向大型项目的数据分析。它按需读取元数据,只允许只读查询,并可选支持向量搜索。

主要功能

  1. 01按需浏览数据集和表
  2. 02查看架构、描述和样例数据
  3. 03执行受限的 SELECT/WITH 查询
  4. 04跟踪查询处理量和费用
  5. 05通过向量搜索查找嵌入数据

适用场景

  1. 01在大型 BigQuery 项目中查找相关表
  2. 02分析前检查架构和样例行
  3. 03针对数据问题执行限额只读 SQL
  4. 04按语义相似度搜索嵌入记录

MCP 相关

向 MCP 客户端提供 BigQuery 发现、表检查、安全查询及可选的向量搜索工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bigquery-mcp-pvoo": {
"command": "uvx",
"args": [
"bigquery-mcp"
]
}
}
}
启动命令uvx bigquery-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypibigquery-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🗂️ BigQuery MCP 服务

实用的 MCP 服务,可供大模型浏览 BigQuery 数据集和表。专为包含大量数据集和表的大型项目设计,在保持快速、安全的同时,尽量减少大模型上下文占用。

  • 默认保持精简:仅列出数据集和表的名称;只有在需要时才获取详细信息
  • 浏览大型项目:按名称筛选,按需获取详细元数据和架构
  • 快速了解表信息:可选查看架构、列描述和填充率,帮助 Agent 快速判断相关性
  • 安全运行:只读查询执行,并设有防护措施(仅允许 SELECT/WITH,剥除注释)
  • 支持向量搜索:使用 BigQuery 作为向量存储。完整设置说明请参阅 向量搜索 部分。

快速开始

**前提条件:**Python 3.10+ 和 uv 包管理器

🚀 快速设置

选项 1:直接从 PyPI 安装(推荐)

# 1. Authenticate
gcloud auth application-default login

# 2. Run server
uvx bigquery-mcp --project YOUR_PROJECT --location US

选项 2:克隆到本地(开发环境设置)

# 1. Clone and setup
git clone https://github.com/pvoo/bigquery-mcp.git
cd bigquery-mcp

# 2. Configure environment
cp .env.example .env
# Edit .env with your project and location

# 3. Run or inspect
make run      # Start server
make inspect  # Open MCP inspector
🔧 MCP 客户端配置

选项 1:PyPI 包(推荐) 使用已发布的 PyPI 包进行最简设置:

{
  "mcpServers": {
    "bigquery": {
      "command": "uvx",
      "args": [
        "bigquery-mcp",
        "--project", "your-project-id",
        "--location", "US"
     ]
    }
  }
}

选项 2:本地克隆(用于开发)

# Clone first
git clone https://github.com/pvoo/bigquery-mcp.git
{
  "mcpServers": {
    "bigquery": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/bigquery-mcp", "run", "bigquery-mcp"],
      "env": {
        "GCP_PROJECT_ID": "your-project-id",
        "BIGQUERY_LOCATION": "US"
      }
    }
  }
}
🧪 测试设置
# Test with MCP inspector
npx @modelcontextprotocol/inspector uvx bigquery-mcp --project YOUR_PROJECT --location US

🔧 配置选项

所有配置均可通过 CLI 参数或环境变量设置。CLI 参数优先级更高。

必需参数
--project YOUR_PROJECT    # Google Cloud project ID
--location US             # BigQuery location (US, EU, etc.)
可选参数
# Dataset Access Control
--datasets dataset1 dataset2    # Restrict to specific datasets (default: all datasets)

# Query & Result Limits
--list-max-results 500          # Max results for basic list operations (default: 500)
--detailed-list-max 25          # Max results for detailed list operations (default: 25)
--max-bytes-billed 109951162777  # Max bytes billed per query job (~USD 0.50/query)

# Table Analysis
--sample-rows 3                 # Sample data rows returned in get_table (default: 3)
--stats-sample-size 500         # Rows sampled for column fill rate calculations (default: 500)

# Authentication
--key-file /path/to/key.json    # Service account key file (default: ADC)
环境变量

所有 CLI 选项都有对应的环境变量:

export GCP_PROJECT_ID=your-project
export BIGQUERY_LOCATION=US
export BIGQUERY_ALLOWED_DATASETS=dataset1,dataset2
export BIGQUERY_LIST_MAX_RESULTS=500
export BIGQUERY_LIST_MAX_RESULTS_DETAILED=25
export BIGQUERY_MAX_BYTES_BILLED=109951162777
export BIGQUERY_SAMPLE_ROWS=3
export BIGQUERY_SAMPLE_ROWS_FOR_STATS=500
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/key.json
向量搜索配置

完整设置说明请参阅 向量搜索 部分。

--embedding-model project.dataset.model
--embedding-tables dataset.table1 dataset.table2
--distance-type COSINE

🛠️ 工具概览

此 MCP 服务提供 5 个 BigQuery 工具,针对大模型效率进行了优化:

📊 智能数据集和表发现
  • list_datasets - 双模式:基本模式(仅名称)和详细模式(完整元数据)
  • list_tables - 可根据上下文浏览表,并可选查看架构详情
  • get_table - 全面分析表,包括架构和示例数据
🔍 安全查询执行
  • run_query - 仅执行 SELECT/WITH 查询,并提供费用追踪、安全验证,以及默认约 0.50 美元的单次查询计费上限。使用查询中的 LIMIT 子句控制结果大小。
🔮 向量搜索(可选)
  • vector_search - 双模式工具:发现嵌入表(不提供 query_text),或执行语义相似度搜索(提供 query_text)

主要功能:

  • ✅ 默认保持精简 - 基本模式下可减少 70% 的 token
  • ✅ 仅执行安全查询 - 阻止所有写入操作
  • ✅ 针对大模型优化 - 返回结构化数据,便于 AI 分析
  • ✅ 费用透明 - 显示每次查询处理的字节数
  • ✅ 默认限制费用 - 将每个查询作业的费用限制在约 0.50 美元,除非重新配置

🔮 向量搜索(可选)

使用 BigQuery 向量嵌入启用语义相似度搜索。

前提条件:在 BigQuery 中设置嵌入

使用向量搜索前,需要准备嵌入模型和包含嵌入的表:

步骤 1:创建 Vertex AI 连接(一次性设置)

-- In BigQuery console or bq command line
-- This creates a connection to Vertex AI for generating embeddings
CREATE EXTERNAL CONNECTION `your-project.your-region.vertex-ai`
  OPTIONS (
    endpoint = 'https://your-region-aiplatform.googleapis.com',
    type = 'CLOUD_RESOURCE'
  );

步骤 2:创建嵌入模型

CREATE OR REPLACE MODEL `your-project.your_dataset.text_embedding_model`
REMOTE WITH CONNECTION `your-project.your-region.vertex-ai`
OPTIONS (ENDPOINT = 'text-embedding-005');

步骤 3:向表中添加嵌入

-- Add embedding column to existing table
ALTER TABLE `your-project.your_dataset.products`
ADD COLUMN IF NOT EXISTS embedding ARRAY<FLOAT64>;

-- Generate embeddings for your text data
UPDATE `your-project.your_dataset.products` t
SET embedding = (
  SELECT ml_generate_embedding_result
  FROM ML.GENERATE_EMBEDDING(
    MODEL `your-project.your_dataset.text_embedding_model`,
    (SELECT t.name AS content),
    STRUCT(TRUE AS flatten_json_output)
  )
)
WHERE embedding IS NULL;

有关详细设置说明和连接权限,请参阅 BigQuery 文本嵌入文档。

向量搜索的 MCP 配置

设置好嵌入后,配置 MCP 服务:

{
  "mcpServers": {
    "bigquery": {
      "command": "uvx",
      "args": [
        "bigquery-mcp",
        "--project", "your-project",
        "--location", "US",
        "--embedding-model", "your-project.your_dataset.text_embedding_model",
        "--embedding-tables", "your_dataset.products", "your_dataset.documents"
      ]
    }
  }
}
配置参考
CLI 参数环境变量默认值描述
--embedding-modelBIGQUERY_EMBEDDING_MODEL-必填。 嵌入模型的完整路径(project.dataset.model)。启动时会进行验证。
--embedding-tablesBIGQUERY_EMBEDDING_TABLES-包含嵌入列的表(跳过自动发现)
--vector-column-containsBIGQUERY_EMBEDDING_COLUMN_CONTAINSembedding用于查找嵌入列的模式(列名必须包含此内容)
--distance-typeBIGQUERY_DISTANCE_TYPECOSINE距离度量:COSINE、EUCLIDEAN、DOT_PRODUCT
--no-vector-searchBIGQUERY_VECTOR_SEARCH_ENABLED=false已启用禁用向量搜索工具
使用示例

发现模式 - 查找包含嵌入的表:

{
  "query_text": ""
}

搜索模式 - 语义相似度搜索:

{
  "query_text": "solenoid valve for water",
  "table_path": "my_dataset.products",
  "top_k": "10",
  "select_columns": "name,description,price"
}
所需权限
角色用途
roles/bigquery.dataViewer读取表和模型
roles/bigquery.jobUser运行 BigQuery 作业
roles/bigquery.metadataViewer自动发现嵌入表(可选)

🏗️ 开发环境设置

本地开发
# Clone and setup
git clone https://github.com/pvoo/bigquery-mcp.git
cd bigquery-mcp
make install  # Setup environment + pre-commit hooks

# Development workflow
make run      # Start server
make test     # Run test suite
make check    # Lint + format + typecheck
make inspect  # Launch MCP inspector
测试与质量
make test                    # Full test suite
pytest tests/test_safety.py  # SQL safety validation tests
pytest tests/test_server.py  # Core server functionality tests
make check                   # Run all quality checks

🔐 身份验证与权限

身份验证方法:

  1. 应用默认凭据(推荐):gcloud auth application-default login
  2. 服务账号密钥:使用 --key-file 或设置 GOOGLE_APPLICATION_CREDENTIALS

所需的 BigQuery 权限:

  • bigquery.datasets.get、bigquery.datasets.list
  • bigquery.tables.list、bigquery.tables.get
  • bigquery.jobs.create、bigquery.data.get

🚨 故障排除

身份验证问题:

# Check current auth
gcloud auth application-default print-access-token

# Re-authenticate
gcloud auth application-default login

# Enable BigQuery API
gcloud services enable bigquery.googleapis.com

MCP 连接问题:

  • 确保 MCP 配置中使用绝对路径
  • 手动测试服务:make run
  • 检查项目和位置环境变量或参数是否已正确设置

性能问题:

  • 使用 {"detailed": false} 以获得更快的响应
  • 添加搜索筛选条件:{"search": "pattern"}
  • 对于大型数据集,降低 max_results

💡 使用示例

📊 SQL 查询示例
-- Query public datasets
SELECT
    EXTRACT(YEAR FROM pickup_datetime) as year,
    COUNT(*) as trips,
    ROUND(AVG(fare_amount), 2) as avg_fare
FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2020`
WHERE pickup_datetime BETWEEN '2020-01-01' AND '2020-12-31'
GROUP BY year
LIMIT 20
🤖 示例:在 Claude Code 子 Agent 中使用

场景: 在 Claude Code 中使用专用的 BigQuery Table Analyst Agent,自动探索数据仓库、分析表之间的关系并提供结构化洞察。使用子 Agent 可以将分析表格时使用的上下文从主线程中移出,并将可执行的洞察返回主 Agent 线程,用于编写 SQL 或进行分析。

设置:

# 1. Clone and configure
git clone https://github.com/pvoo/bigquery-mcp.git
cd bigquery-mcp

# 2. Setup environment
export GCP_PROJECT_ID="your-project-id"
export BIGQUERY_LOCATION="US"
gcloud auth application-default login

# 3. Launch Claude Code
claude-code

使用示例:

💬 You: "I need to understand our sales data structure and find tables related to customer orders"

🤖 Claude: I'll use the BigQuery Table Analyst agent to explore your sales datasets and identify relevant tables with their relationships.

[Agent automatically:]
- Lists all datasets to identify sales-related ones
- Explores table schemas with detailed metadata
- Shows actual sample data from key tables
- Discovers join relationships between tables
- Provides ready-to-use SQL queries

Agent 返回的内容:

  • 表架构,包含列说明和类型
  • 示例数据,展示实际值(而非占位符)
  • 连接关系,包含可运行的 SQL 示例
  • 数据质量洞察(空值比例、新鲜度等)
  • 可立即执行的 SQL 查询

🤝 参与贡献

欢迎贡献!期待收到你的反馈,以便改进项目。

快速开始:

# Fork on GitHub, then:
git clone https://github.com/yourusername/bigquery-mcp.git
cd bigquery-mcp
make install  # Setup dev environment
make check    # Verify everything works

# Make changes, then:
make test     # Run tests
make check    # Quality checks
# Submit PR!

开发指南:

  • 为新功能添加测试
  • 更新文档
  • 遵循现有代码风格(由 pre-commit 钩子强制执行)
  • 确保所有质量检查均通过

发现问题或有功能请求?


🌟 如果这个仓库对你有帮助,请为它点亮星标!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。