数据台mcp
MCP服务器,将任何SQL数据库转换为AI原生数据层。可插拔后端(DuckDB、AWS Athena),具有4层知识系统,可向AI传授数据模型并从真实会话中学习。
AI Client (Claude Code / Cursor / any MCP client)
│ stdio (JSON-RPC)
▼
┌──────────────────────────────────┐
│ data-bench-mcp │
│ │
│ Tools (9): │
│ ├─ run_query (SQL) │
│ ├─ list_databases (catalog) │
│ ├─ list_tables (catalog) │
│ ├─ describe_table (catalog) │
│ ├─ get_query_template (knowledge)│
│ ├─ get_rules (knowledge)│
│ ├─ get_learned_patterns(knowledge)│
│ ├─ save_learned_pattern(knowledge)│
│ └─ version (meta) │
│ │
│ Backends: │
│ ├─ DuckDB (local, zero-config) │
│ └─ Athena (AWS, boto3 creds) │
│ │
│ Knowledge (4 layers): │
│ ├─ schemas/ → table docs │
│ ├─ templates/ → query skeletons │
│ ├─ rules/ → guardrails │
│ └─ learned/ → session patterns│
└──────────────────────────────────┘快速开始
安装
# Clone
git clone https://github.com/GG-science/data-bench-mcp.git
cd data-bench-mcp
# Install with uv (recommended)
uv pip install -e ".[dev]"配置
cp .env.example .env
# Edit .env — set DATA_BENCH_DUCKDB_PATH to your database添加到克劳德代码
添加 ~/.claude/settings.json (或项目 .mcp.json):
{
"mcpServers": {
"data-bench": {
"command": "uv",
"args": ["run", "--directory", "/path/to/data-bench-mcp", "data-bench-mcp"]
}
}
}添加到光标/VS代码
添加 .cursor/mcp.json 或VS代码MCP设置:
{
"mcpServers": {
"data-bench": {
"command": "uv",
"args": ["run", "--directory", "/path/to/data-bench-mcp", "data-bench-mcp"]
}
}
}验证
问你的AI: *“数据台服务器是什么版本?”*
运作原理
四层知识体系
| 图层 | 目录 | 格式 | 增长 | 目的 |
|---|---|---|---|---|
| 架构 | schemas/ | .md | 手动 | 表定义、列文档、连接模式 |
| 模板 | templates/ | .md | 手动 | 参数化查询骨架 |
| 规则 | rules/ | .md | 手动 | 强制护栏(除尘器、日期过滤器等) |
| 学到了 | learned/ | .json | 自动 | 来自真实会话的已验证模式 |
指示AI进行检查 模板→ 规则→ 习得模式 在编写任何查询之前。在成功完成非平凡查询后,它提供保存模式以供重用。
人工智能如何学习你的数据
- 你问了一个数据问题
- AI检查现有知识层是否匹配模板/模式
- 如果没有匹配项,AI将使用模式文档编写新的查询
- 运行查询,验证结果
- AI问: *“想将此保存为学习模式吗?”*
- 您批准→ 图案已保存
{{placeholders}}重复使用 - 在下一个会话中,AI会自动发现并调整模式
后端
DuckDB (默认)--本地,零配置。指向a .duckdb 文件。
DATA_BENCH_BACKEND=duckdb
DATA_BENCH_DUCKDB_PATH=./data/my_database.duckdb雅典娜 --针对AWS Glue目录的无服务器SQL。使用标准boto3证书链(env vars, ~/.aws/credentialsIAM角色、SSO)。
DATA_BENCH_BACKEND=athena
DATA_BENCH_AWS_REGION=us-east-1
DATA_BENCH_ATHENA_OUTPUT=s3://my-bucket/athena-results/
DATA_BENCH_ATHENA_WORKGROUP=primary添加自己的知识
架构文档(schemas/)
# my_table
Description of what this table contains.
| Column | Type | Description |
|--------|------|-------------|
| id | INTEGER | Primary key |
| event_date | DATE | Partition key — always filter on this |查询模板(templates/)
# Analysis Name
\```sql
SELECT col1, SUM(col2) as metric
FROM {{table}}
WHERE date >= '{{start_date}}'
GROUP BY col1
ORDER BY metric DESC
LIMIT {{limit}}
\```
## Parameters
- `{{table}}` — Target table
- `{{start_date}}` — Analysis start date规则(rules/)
# Rule Name
ALWAYS do X when querying table Y.
NEVER do Z because [reason].安全
- 仅选择 --写操作(INSERT、UPDATE、DELETE、DROP)在SQL验证层被阻止
- 行限制 --默认值1000,最大值10000
- 错误清理 --从Athena错误消息中删除帐户ID和ARN
- 循环中的人类 --学习模式仅在明确的用户批准下保存
发展
# Install dev dependencies
uv pip install -e ".[dev]"
# Run tests
pytest -v
# Run server directly
uv run data-bench-mcp环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
DATA_BENCH_BACKEND | duckdb | 后端类型: duckdb 或 athena |
DATA_BENCH_DUCKDB_PATH | :memory: | DuckDB数据库文件的路径 |
DATA_BENCH_AWS_REGION | us-east-1 | 雅典娜的AWS区域 |
DATA_BENCH_ATHENA_OUTPUT | s3://aws-athena-query-results/ | Athena结果的S3路径 |
DATA_BENCH_ATHENA_WORKGROUP | primary | 雅典娜工作组 |
DATA_BENCH_KNOWLEDGE_DIR | 包目录 | 知识文件路径 |
许可证
麻省理工学院
