Skip to main content
Glama
thhart

database-mcp

by thhart

database-mcp

SQL 数据库 MCP 服务器,具备真正的服务端结果分页——这是现有数据库 MCP 服务器都没有的功能(DBHub 限制行数,Google 的 MCP Toolbox 返回全部内容,mcp-alchemy 在 4000 字符处截断)。

PostgreSQL 参考实现。

为什么

每个现有的 SQL MCP 服务器要么截断大型结果,要么将整个结果转储到模型的上下文中。MCP 规范仅对 列表 操作(tools/list)进行分页,而不对工具结果进行分页。database-mcp 弥补了这一差距:

  • 查询作为 PostgreSQL 服务端游标(DECLARE/FETCH FORWARD)在持有的事务中仅执行一次

  • 每次 fetch(cursor)精确地从上一页结束的位置继续——无需重新执行,无需 OFFSET 重新扫描,并且 MVCC 快照即使在并发写入下也能保持结果稳定。

  • 页面受行数(page_size渲染字节数(max_page_bytes)限制;过大的单元格会被截断并带有显式标记。

  • 持有的游标有界:最大 N 个并发(LRU 逐出)、TTL 空闲逐出,以及 idle_in_transaction_session_timeout 作为服务端兜底。耗尽的游标自动关闭。

Related MCP server: pgsql-mcp

连接配置文件——由 AI 在运行时管理

连接是命名的配置文件,持久化在 ~/.config/database-mcp/profiles.json(chmod 600)中。AI 可以通过工具即时添加、更改、测试和删除它们,无需重启服务器:

  • profile_add(name, dsn, allow_writes=false, description, make_default, test=true)

  • profile_remove(name) · profile_test(name) · profiles()

  • 每个查询工具都接受可选的 profile 参数;省略时使用默认配置文件。

配置文件默认只读(会话级 default_transaction_read_only);写入需要显式的 allow_writes=true 配置文件。

SSH 桥接

配置文件可以访问仅通过 SSH 可访问的数据库(经典的“Postgres 监听远程主机的 localhost”设置):

profile_add(name="prod", dsn="postgresql://app@dbhost:5432/app",
            ssh_host="dbhost")
  • 隧道是系统 ssh 子进程(-N -L、BatchMode、keepalives)——你的 ~/.ssh/config、密钥和代理不变地适用。认证必须以非交互方式工作。

  • ssh_remote_host/ssh_remote_port 默认为 DSN 的主机/端口,从 SSH 主机看来;如果 DSN 主机等于 SSH 主机,则默认为 127.0.0.1(通常情况)。

  • 隧道惰性启动,每次使用时进行健康检查,并自动重建。如果隧道在分页中途死亡,其游标会以明确的错误失效,下一次查询会重新连接。

  • 隧道连接显式禁用多路复用(ControlMaster),因此隧道的生命周期恰好是子进程的生命周期。

工具

工具

用途

query

执行 SQL,获取第一页 + 当有更多行时返回 cursor

fetch

从持有的游标获取下一页——无需重新执行

close

提前关闭一个/所有游标

tables

列出表/视图,附带行估计和大小

describe

一个表的列、约束、索引

explain

查询计划(可选 analyze

overview

概览卡片:一次调用获取所有表 + 行估计 + 列名

search_objects

按名称或注释查找表/列/函数

profile

来自 pg_stats 的列统计——无需扫描即可获得分布

relations

一个表的外键,双向

join_path

两个表之间的最短外键路径,作为现成的 JOIN 链

count

即时规划器估计(可选 where),exact=true 用于真正的 count(*)

sample

通过 TABLESAMPLE 获取真正随机的行(无 LIMIT 偏差)

profiles / profile_add / profile_remove / profile_test

运行时连接管理

status

配置文件、连接池、打开的游标、限制

结果是紧凑的 JSON——列只出现一次,行作为数组——大约是其他服务器发出的行字典格式的 token 数的一半。query 还返回 estimated_rows(通过 EXPLAIN 的规划器估计),以便模型知道它正在分页进入什么。

安装与运行

uv pip install -e .
database-mcp --dsn postgresql://user@host:5432/db      # registers profile "default"
database-mcp                                           # start empty, add profiles at runtime

Claude Code 注册:

claude mcp add database -- database-mcp --dsn postgresql://user@host:5432/db

选项:--profiles FILE--allow-writes--page-size 50--max-page-size 500--max-page-bytes 32000--max-cell 400--cursor-ttl 300--max-cursors 4--statement-timeout 30--keepalive 120--connect-timeout 5。 环境变量:DATABASE_MCP_DSN / DATABASE_URLDATABASE_MCP_PROFILES

陈旧连接处理

死连接在每一层都被快速检测到,而不是挂起:

  • SSH 隧道ServerAliveInterval = --keepalive(默认 2 分钟),ServerAliveCountMax=1——一次未收到的探测就会终止隧道进程,引擎管理器会在下次使用时检测到并惰性重建。

  • 数据库连接:TCP keepalives(keepalives_idle = --keepalive,每 10 秒探测,3 次未响应)在约 30 秒内捕获死对端——包括连接池外固定的游标连接。

  • 连接池检出检查:每个分发的连接都通过廉价的往返验证;过期的连接被丢弃并透明替换——调用者永远不会看到错误。空闲的池化连接在 --keepalive 秒后被回收;连接尝试在 --connect-timeout(默认 5 秒)后失败,而不是 TCP 默认的约 2 分钟。

测试

uv pip install -e '.[dev]'
pytest            # needs a local PostgreSQL (DBMCP_TEST_DSN to override)

许可证

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables comprehensive PostgreSQL database management including index tuning, query plan analysis, health monitoring, schema-aware SQL generation, and safe SQL execution with configurable access control for both development and production environments.
    9
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables interaction with PostgreSQL databases through comprehensive database management tools including index tuning, query execution plans, health checks, schema intelligence, and safe SQL execution with configurable read-only mode for production use.
    35
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables querying PostgreSQL databases via MCP, with multi-database routing, credential isolation, and truncated results plus full CSV export.

View all related MCP servers

Related MCP Connectors

  • Query PostgreSQL databases in plain English — LLM-generated, safety-validated SQL.

  • Connect to PlanetScale databases, branches, schema, query insights, and execute SQL

  • Comprehensive PostgreSQL documentation and best practices, including ecosystem tools

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thhart/database-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server