mcpField
D
database-mcp-postgres

database-mcp-postgres

本地服务
github.com/arifulislamat数据库52 周前更新

关于 database-mcp-postgres

database-mcp-postgres 是面向 AI 客户端的 PostgreSQL MCP 服务,提供结构化数据库访问。它通过 SQL 执行和架构查询配合默认只读保护,并可从 npm、PyPI 或 Rust crates 安装。

主要功能

  1. 01使用 execute_sql 执行 SQL
  2. 02使用 search_objects 查询架构
  3. 03SQL 守卫和数据库会话双层只读保护
  4. 04限制返回行数并设置语句超时
  5. 05凭据在聊天之外配置且日志脱敏

适用场景

  1. 01查看 PostgreSQL 表、列、索引和外键
  2. 02运行有行数限制的只读 SQL 查询以辅助分析

MCP 相关

向 MCP 客户端提供 execute_sql 和 search_objects,用于执行 PostgreSQL 查询和发现架构。默认启用只读模式、行数上限和超时。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
npm@database-mcp/postgres0.5.0
pypidatabase-mcp-postgres0.2.0
cargodatabase-mcp-rs-postgres0.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

database-mcp

CI License: MIT npm PyPI crates.io Node >= 22

为 AI 客户端提供安全、结构化 SQL 数据库访问能力的 MCP 服务。

每种数据库引擎都提供一个可安装的软件包,支持 TypeScript(npm)、Python(PyPI)和 Rust(crates.io)。每个软件包都提供相同的精简工具集:execute_sql 和 search_objects,并默认启用安全限制:只读模式、行数上限和语句超时。

软件包

引擎TypeScript(npm)Python(PyPI)Rust(crates.io)
SQLite@database-mcp/sqlite npmdatabase-mcp-sqlite PyPIdatabase-mcp-rs-sqlite crates.io
libSQL@database-mcp/libsql npmdatabase-mcp-libsql PyPIdatabase-mcp-rs-libsql crates.io
MySQL@database-mcp/mysql npmdatabase-mcp-mysql PyPIdatabase-mcp-rs-mysql crates.io
MariaDB@database-mcp/mariadb npmdatabase-mcp-mariadb PyPIdatabase-mcp-rs-mariadb crates.io
Postgres@database-mcp/postgres npmdatabase-mcp-postgres PyPIdatabase-mcp-rs-postgres crates.io

这三种语言的实现均已发布,并在 CI 中针对真实数据库通过相同的语言无关一致性测试套件,因此无论使用哪种语言,行为都完全一致。每种引擎也都已列入 MCP Registry,并提供三种安装选项:npm、PyPI 和 cargo。

Rust crate 命名为 database-mcp-rs-<engine>,因为 crates.io 上的简短名称已被占用;不过,每个 crate 安装的命令仍为 database-mcp-<engine>。Go 支持计划中。

设计原则

  • 仅提供两个工具。 精简的工具接口可保持模型上下文窗口整洁。search_objects 会逐步披露架构:不带参数调用可列出表;指定表名调用可获取列、索引和外键。
  • 默认安全。 只读模式通过两层机制强制执行:保守的 SQL 防护,以及数据库自身的会话级只读设置。行数设有上限(默认 1000),语句设有超时时间(默认 30s)。
  • 启动时配置,不通过聊天配置。 连接详情通过标志、YAML 配置文件或环境变量提供。工具调用中绝不接受凭据。
  • 日志中绝不出现机密信息。 密码使用不可打印的机密类型存储,记录日志前会清理 DSN,并通过脱敏过滤器保护日志边界。

快速开始

选择对应数据库引擎的软件包;每个 README 都包含完整的配置选项。通过 npm 使用 SQLite:

{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@database-mcp/sqlite", "--dsn", "/absolute/path/to/database.db"]
    }
  }
}

或者通过 PyPI 使用:指定 "command": "uvx" 和 "args": ["database-mcp-sqlite", "--dsn", "/absolute/path/to/database.db"]。

也可以使用原生二进制文件,无需 Node 或 Python 运行时:运行 cargo install database-mcp-rs-sqlite,然后指定 "command": "database-mcp-sqlite",并使用相同的 args(去掉软件包名称)。

这三种方式的标志、环境变量和 YAML 配置完全相同。

网络数据库引擎通过环境变量(MYSQL_*、 MARIADB_*、POSTGRES_*/DATABASE_URL、LIBSQL_URL/LIBSQL_AUTH_TOKEN)、 *_FILE 挂载的机密,或通过 --config 指定的 YAML 文件获取凭据。绝不通过聊天提示词获取。

贡献

参阅 CONTRIBUTING.md。简而言之:符合性测试套件定义了完成标准。只有在所有受影响的服务上通过 conformance/run.mjs,更改才能合并。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。