使用说明
用于SAP数据分析的BigQuery MCP服务器
一种模型上下文协议(MCP)服务器,为Claude Code和Claude Desktop提供对存储在Google BigQuery中的SAP数据的直接访问。这允许对企业SAP数据进行自然语言查询和分析。
概述
本项目演示了如何构建一个MCP服务器,该服务器:
- 将Claude AI连接到Google BigQuery数据集
- 对SAP Cortex数据启用自然语言SQL查询
- 部署为无服务器Google Cloud运行功能
- 与Claude Code CLI和Claude Desktop集成
特性
-
3个MCP工具:
list_tables-列出BigQuery数据集中的所有表describe_table-获取任何表的架构信息query_bigquery-执行SQL查询并返回结果
-
双重部署:
- 克劳德代码/桌面的本地MCP服务器
- Google Cloud Run上的云托管HTTP端点
-
企业级就绪:
- 处理复杂的SAP数据结构
- 支持日期/时间/数字序列化
- 为web集成启用CORS
建筑
┌─────────────────┐
│ Claude Code │
│ Claude Desktop │
└────────┬────────┘
│
├─────────────────┐
│ │
┌────▼─────┐ ┌────▼──────────────┐
│ MCP │ │ Cloud Run │
│ Wrapper │ │ Function │
│ (Local) │ │ (HTTP Endpoint) │
└────┬─────┘ └────┬──────────────┘
│ │
└────────┬───────┘
│
┌──────▼───────┐
│ BigQuery │
│ Dataset │
└──────────────┘
先决条件
必需
- Python 3.13+
- Node.js 18+和npm
- 启用计费的Google Cloud帐户
- 谷歌云SDK(
gcloudCLI) - 包含数据的BigQuery数据集
可选的
- 克劳德代码CLI(
npm install -g @anthropic-ai/claude-code) - Claude桌面应用程序
安装
1.克隆存储库
git clone https://github.com/yourusername/mcp-bigquery-server.git
cd mcp-bigquery-server
2.安装Python依赖项
pip install -r requirements.txt
3.配置谷歌云
# Set your project
gcloud config set project YOUR_PROJECT_ID
# Authenticate
gcloud auth login
gcloud auth application-default login
# Create service account (optional but recommended)
gcloud iam service-accounts create bigquery-mcp-server \
--display-name="BigQuery MCP Server"
# Grant BigQuery permissions
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
--member="serviceAccount:bigquery-mcp-server@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/bigquery.user"
4.更新配置
编辑 server.py 和 main.py 要设置项目和数据集,请执行以下操作:
PROJECT_ID = "your-project-id"
DATASET_ID = "your-dataset-name"
更新 mcp_wrapper.js 使用您的Cloud Run URL(部署后):
const MCP_SERVER_URL = 'your-region-your-project.cloudfunctions.net';
const MCP_SERVER_PATH = '/bigquery-mcp-server';
部署
部署到Google Cloud Run
gcloud functions deploy bigquery-mcp-server \
--gen2 \
--runtime=python313 \
--region=us-west1 \
--source=. \
--entry-point=bigquery_mcp_handler \
--trigger-http \
--allow-unauthenticated \
--service-account=bigquery-mcp-server@YOUR_PROJECT_ID.iam.gserviceaccount.com \
--set-env-vars GCP_PROJECT_ID=YOUR_PROJECT_ID,DATASET_ID=YOUR_DATASET_NAME
注: 该函数将输出一个URL,如下所示:
https://REGION-PROJECT_ID.cloudfunctions.net/bigquery-mcp-server
保存此URL-您需要它来配置MCP包装器。
配置
适用于Claude Code CLI
添加MCP服务器:
claude mcp add bigquery-sap node /path/to/mcp_wrapper.js
验证连接:
claude mcp list
适用于克劳德桌面
编辑 %APPDATA%\Claude\claude_desktop_config.json (Windows)或 ~/Library/Application Support/Claude/claude_desktop_config.json (Mac):
{
"mcpServers": {
"bigquery-sap": {
"command": "node",
"args": ["/absolute/path/to/mcp_wrapper.js"]
}
}
}
重新启动Claude Desktop以加载配置。
用法
在克劳德桌面
问克劳德自然语言问题:
"List all tables in the BigQuery dataset"
"Query the SalesOrders table and show me the top 10 orders by value"
"Analyze sales trends by month from the AccountingDocuments table"
在Claude Code命令行界面中
claude "Use the list_tables tool to show all available tables"
claude "Query the inventory data and identify slow-moving items"
直接HTTP API
# List tables
curl -X POST https://YOUR-FUNCTION-URL/bigquery-mcp-server \
-H "Content-Type: application/json" \
-d '{"action": "list_tables"}'
# Query data
curl -X POST https://YOUR-FUNCTION-URL/bigquery-mcp-server \
-H "Content-Type: application/json" \
-d '{"action": "query", "query": "SELECT * FROM dataset.table LIMIT 10"}'
项目结构
mcp-bigquery-server/
├── server.py # Core MCP server logic
├── main.py # Cloud Function HTTP handler
├── mcp_wrapper.js # Local MCP protocol wrapper
├── requirements.txt # Python dependencies
├── .gcloudignore # Files to exclude from deployment
├── .gitignore # Git ignore rules
├── README.md # This file
├── CLAUDE_CODE_USAGE.md # Detailed usage guide
└── LICENSE # MIT license
安全考虑
⚠️ 重要安全注意事项:
- 从不提交服务帐户密钥 -他们被排除在外
.gitignore - 使用IAM角色 而不是生产中的服务帐户密钥
- 限制BigQuery访问 仅限于必要的数据集/表
- 考虑身份验证 用于生产中的Cloud Run端点
- 使用VPC服务控制 为企业环境提供额外的安全保障
故障排除
MCP服务器未连接
# Check server health
claude mcp list
# Test MCP wrapper directly
node mcp_wrapper.js
{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}
BigQuery权限错误
# Verify service account permissions
gcloud projects get-iam-policy YOUR_PROJECT_ID \
--flatten="bindings[].members" \
--filter="bindings.members:YOUR_SERVICE_ACCOUNT"
云功能部署问题
# View function logs
gcloud functions logs read bigquery-mcp-server --region=us-west1
# Check function status
gcloud functions describe bigquery-mcp-server --region=us-west1
用例
- 财务分析:查询损益表、资产负债表和会计凭证
- 业务销售分析:分析订单趋势、客户行为和收入指标
- 库存管理:跟踪库存水平、变动和周转率
- 采购:监控供应商绩效、订单履行和支出分析
- 高管仪表板:从实时SAP数据创建实时KPI报告
贡献
欢迎投稿!请随时提交拉取请求。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- 内置 Anthropic的模型上下文协议
- 专为 谷歌云BigQuery
- 与集成 克劳德代码 和克劳德桌面
资源
作者
朱利安 Delvat
支持
对于问题和疑问:
- 在GitHub上打开一个问题
- 检查 CLAUDE_CODE_USAGE.md 详细示例
备注:这是一个参考实施。在部署到生产环境之前,请根据您组织的要求检查和调整安全设置、IAM权限和配置。