
A2db
io.github.agentic-eng由 GitHub 账号 agentic-eng 发布v0.2.1更新于 Oct 27, 2026
Safe, read-only database access for AI agents. 5 databases, batch queries, SQLGlot.
概览
A2db 让 AI 助手以只读方式安全访问 PostgreSQL、SQLite、MySQL/MariaDB、Oracle 和 SQL Server,并可在一次调用中执行多条命名查询。
- 可以做什么
- 对指定连接执行批量命名查询,支持分页,返回紧凑的 TSV 或 JSON 结果
- 浏览数据库结构:按详细程度列出表和字段
- 管理已保存的连接:新增(先连接验证)、列出(不暴露密钥)、删除
- 启动时预注册连接,助手可立即查询
- 也可通过命令行执行临时查询和查看结构
- 适用场景
- 适合让助手基于一个或多个关系型数据库回答问题,同时不允许其修改数据;尤其适用于每轮需要多条查询,或希望连接只配置一次而不必每次调用重复填写的场景。
- 运行要求
- 本机安装 Python 包 a2db(pip install a2db),由 MCP 客户端以 stdio 进程启动。需要每个连接的数据库 DSN,密码以环境变量形式引用(如 DB_PASSWORD),在建立连接时才展开。需要能访问数据库主机的网络。
安装
在 SourceWeft 中
- 打开 控制台中的 A2db,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🗄️ a2db
Agent-to-Database
Give AI agents safe, read-only access to your databases. One call, multiple queries, clean results.
5 databases · batch queries · pre-configured connections · SQLGlot read-only
[PyPI] [Python versions] [License] [CI] [MCP Registry]
Quick Start · MCP Tools · Security · Comparison · Setup
Why a2db?
Most database MCP servers make you run one query at a time, repeat connection details on every call, and return results double-encoded inside JSON strings. a2db fixes all of that:
- Pre-configured connections — define databases in
.mcp.jsonwith--register, agent queries immediately - Batch queries — run multiple named queries in a single tool call
- Default connection — set connection once, use it across all queries in a batch
- Clean output — structured JSON envelope with compact TSV data and per-query timing (see why TSV?)
- Read-only enforced — SQLGlot AST parsing blocks all write operations
- All drivers bundled —
pip install a2dband you're done - Secrets stay in env —
${DB_PASSWORD}in DSNs, expanded only at connection time
Supported Databases
Quick Start
As an MCP Server (recommended)
Claude Code (with pre-configured connection):
Claude Code (minimal — agent calls login on demand):
Claude Desktop / Cursor / any MCP client (.mcp.json):
Multiple databases:
--register pre-registers connections at server startup — the agent can query immediately. Passwords use ${ENV_VAR} syntax and are expanded at connection time, never stored in plaintext.
As a CLI
MCP Tools
execute — the core tool
Named dict with default connection (preferred):
List format (auto-named q1, q2, ...):
Response (TSV format — default):
No ::text casts needed — integers, floats, timestamps, arrays, NULLs all work natively.
Error context
When a query fails with a column error, a2db enriches the message:
Why TSV?
LLM context windows are expensive. JSON row data is verbose — every row repeats every column name, adds braces, commas, and quotes. TSV is a flat grid: one header row, then just values separated by tabs.
For a 100-row, 5-column result set, TSV typically uses 40-60% fewer tokens than JSON row format. The structured JSON envelope still gives you metadata (row count, truncation status) — only the row payload is TSV.
Set format="json" if you need full structured output with column names on every row.
Security
Read-Only Enforcement
Every query is parsed by SQLGlot before execution:
- Blocked: INSERT, UPDATE, DELETE, DROP, TRUNCATE, ALTER, CREATE, GRANT, REVOKE
- Bypass-resistant: multi-statement attacks and comment-wrapped writes are caught at the AST level, not just keyword matching
- Allowed: SELECT, UNION, EXPLAIN, SHOW, DESCRIBE, PRAGMA
This is defense-in-depth — you should also use a read-only database user, but a2db won't let writes through even if the user has write permissions.
Write support is implemented in the core but not yet exposed via MCP. Planned: per-connection write permissions, explicitly enabled by the human operator — not the agent. See TODO.md.
Credential Storage
Connections are saved in ~/.config/a2db/connections/ as TOML files.
${DB_PASSWORD}syntax — environment variable references are stored literally and expanded only at connection time. Secrets stay in your environment, not on disk.- No secrets in list output —
list_connectionsshows project/env/db and database type, never DSNs or passwords - Connection files are local to your machine and outside any repository
Deployment Scope
a2db currently runs as a local stdio MCP server. It inherits environment variables from the process that launches it (your shell, Claude Code, Docker). This is the standard model for local MCP servers — the same approach used by DBHub, Google Toolbox, and others.
Planned: remote HTTP transport with OAuth 2.1 per the MCP spec. For now, if running in Docker, inject secrets via environment variables at container runtime.
Comparison
When to use what:
- a2db — multi-DB batch queries with clean output, agent-first design, fast setup
- DBHub — custom tools via TOML config, web workbench UI
- Google Toolbox — GCP ecosystem, IAM integration, 40+ sources
- PGMCP — natural-language-to-SQL for PostgreSQL (requires OpenAI key)
- Supabase MCP — full Supabase platform management (edge functions, branching, storage)
Setup by Environment
Local (macOS / Linux)
Docker
Secrets are injected as environment variables at runtime — never baked into the image.
CI / Automation
Development
License
Apache 2.0
🗄️ Agent-first database access since 2025.
Built by Denis Tomilin
来源:README.md,提交 3c33b3e
工具
0版本历史
1- v0.2.1最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
