Python-based MCP (Model Context Protocol) server that retrieves dataset, table, and schema information from Google Cloud BigQuery
Project description
BigQuery MCP Server
This is a Python-based MCP (Model Context Protocol) server that retrieves dataset, table, and schema information from Google Cloud BigQuery, caches it locally, and serves it via MCP. Its primary purpose is to enable generative AI systems to quickly understand BigQuery's structure and execute queries securely.
Key Features
- Metadata Management: Retrieves and caches information about BigQuery datasets, tables, and columns
- Keyword Search: Supports keyword search of cached metadata
- Secure Query Execution: Provides SQL execution capabilities with automatic LIMIT clause insertion and cost control
- MCP Compliance: Offers tools via the Model Context Protocol
MCP Server Tools
Available tools:
get_datasets- Retrieves a list of all datasetsget_tables- Retrieves all tables within a specified dataset (requires dataset_id, optionally accepts project_id)search_metadata- Searches metadata for datasets, tables, and columnsexecute_query- Safely executes BigQuery SQL queries with automatic LIMIT clause insertion and cost controlcheck_query_scan_amount- Retrieves the scan amount for BigQuery SQL queries
Installation and Environment Setup
Prerequisites
- Python 3.11 or later
- Google Cloud Platform account
- GCP project with BigQuery API enabled
Install
uv
uv add bq_mcp_server
pip
pip install bq_mcp_server
Installing Dependencies
This project uses uv for package management:
# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies
uv sync
Configuring Option
For a list of configuration values, see:
MCP Setting
{
"mcpServers": {
"bq_mcp_server": {
"command": "uv",
"args": [
"run",
"--directory",
"<your install directory>",
"bq_mcp_server"
],
"env": {
"PYTHONPATH": "<your install directory>",
"PROJECT_IDS": "<your project id>"
}
}
}
}
Running Tests
Running All Tests
pytest
Running Specific Test Files
pytest tests/test_logic.py
Running Specific Test Functions
pytest -k test_function_name
Checking Test Coverage
pytest --cov=bq_mcp_server
Local Development
Starting the MCP Server
uv run bq_mcp_server
Starting the FastAPI REST API Server
uvicorn bq_mcp_server.adapters.web:app --reload
Development Commands
Code Formatting and Linting
# Code formatting
ruff format
# Linting checks
ruff check
# Automatic fixes
ruff check --fix
Dependency Management
# Adding new dependencies
uv add <package>
# Adding development dependencies
uv add --dev <package>
# Updating dependencies
uv sync
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bq_mcp_server-0.1.2.tar.gz.
File metadata
- Download URL: bq_mcp_server-0.1.2.tar.gz
- Upload date:
- Size: 44.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
106d4466974126604b12c07a9c64caa1e07d5d3139f60609adc4be4170418417
|
|
| MD5 |
bf9b784a97ab0685d896ec4c867851fd
|
|
| BLAKE2b-256 |
3fd91cd88cdb716ab34f830d9da2a9f7229d77eeff61ab7c3b029de283f2df67
|
File details
Details for the file bq_mcp_server-0.1.2-py3-none-any.whl.
File metadata
- Download URL: bq_mcp_server-0.1.2-py3-none-any.whl
- Upload date:
- Size: 36.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35405c4d8588b14b1811ca777efdf824e85b06e7202b6656a35fa182879ff15e
|
|
| MD5 |
e8cbbe813ef2b12c52aa1dffb8ee5825
|
|
| BLAKE2b-256 |
6562488f3a900c0848427af7e6d2e7e69dba8bb8b6898af00cfc902ed342e0f5
|