Skip to main content
Glama
seayniclabs

Berth

by seayniclabs

Berth -- 数据库 MCP 服务器

License: MIT

为您的数据提供一个安全的停泊处 -- 为 AI 工具提供数据库访问权限。

Berth 是一个 Model Context Protocol 服务器,为 AI 助手提供对 PostgreSQL、SQLite 和 MySQL 数据库的安全、结构化访问。它提供了 13 种工具,用于检查模式、运行查询、管理数据、生成迁移和执行备份 -- 所有这些都由一个三级安全模型管理,以防止意外损坏。


安全模型

Berth 强制执行三种操作模式,以控制允许执行的 SQL:

模式

默认

允许

阻止

只读 (read-only)

SELECT, EXPLAIN

所有写入操作

写入 (write)

INSERT, UPDATE, DELETE, CREATE

DROP, TRUNCATE, ALTER DROP, 无 WHEREDELETE

管理 (admin)

所有操作

破坏性操作需要确认令牌(60秒过期)

服务器以 只读模式 启动。写入和管理模式必须显式启用。管理模式下的破坏性操作会生成一个 60 秒后过期的一次性确认令牌 -- AI 必须回显该令牌以确认意图。


工具

工具

描述

关键参数

health

服务器健康检查

--

db_connect

连接到数据库

dsn (连接字符串)

db_query

执行 SELECT 查询 (自动添加 LIMIT 1000)

connection_id, sql

db_execute

执行 INSERT/UPDATE/DELETE (遵守安全模式)

connection_id, sql, confirmation_token

db_schema

列出表、视图和索引

connection_id

db_describe

表的列详细信息

connection_id, table

db_relationships

外键关系

connection_id, table (可选)

db_size

数据库和表大小

connection_id

db_active_queries

当前运行的查询 (仅限 PostgreSQL)

connection_id

db_explain

对查询运行 EXPLAIN ANALYZE

connection_id, sql

generate_migration

通过比较模式生成迁移 SQL

connection_id + target_sql, 或 from_connection + to_connection

db_backup

创建数据库备份

connection_id, output_path

db_restore

从备份恢复 (管理模式 + 确认令牌)

connection_id, input_path, confirmation_token


模式迁移

generate_migration 工具比较两个模式并生成特定于方言的 SQL,以实现从一个模式到另一个模式的迁移。有两种操作模式:

模式 1 — 实时数据库 vs. 目标 DDL:

提供 connection_id(活动连接)和 target_sql(描述所需模式的 CREATE TABLE 语句)。Berth 会内省实时数据库并将其与解析后的目标进行差异对比。

模式 2 — 两个实时数据库:

提供 from_connectionto_connection(两个活动的连接 ID)。Berth 会内省两者并生成将源转换为目标的迁移。

它生成的内容:

  • CREATE TABLE 用于新表

  • ALTER TABLE ADD COLUMN 用于新列

  • ALTER TABLE ALTER COLUMN / MODIFY COLUMN 用于类型、可空性和默认值更改

  • CREATE INDEX / DROP INDEX 用于索引更改

  • ADD CONSTRAINT / DROP CONSTRAINT 用于外键更改

  • DROP TABLEDROP COLUMN 会被注释掉并附带警告(安全第一)

方言处理:

  • PostgreSQL -- 使用 ALTER COLUMN ... TYPE, SET/DROP NOT NULL, SET/DROP DEFAULT

  • MySQL -- 对所有列更改使用 MODIFY COLUMN, DROP INDEX ... ON table

  • SQLite -- 对不支持的操作发出警告,并包含针对需要它的更改(ALTER COLUMN、旧版本上的 DROP COLUMN、约束更改)的表重建模式


支持的数据库

  • PostgreSQL -- 全面支持,包括 pg_stat_activity, EXPLAIN ANALYZE, pg_dump/psql 备份/恢复

  • SQLite -- 全面支持,包括 PRAGMA 内省,通过 sqlite3 CLI 进行 .backup/.restore

  • MySQL -- 全面支持,包括 information_schema 内省,mysqldump/mysql 备份/恢复


安装

从 PyPI 安装:

pip install berth-mcp

或者在隔离环境中:

pipx install berth-mcp

MySQL 支持需要可选依赖项:

pip install berth-mcp[mysql]

默认包含 PostgreSQL (asyncpg) 和 SQLite (aiosqlite) 驱动程序。


使用方法

运行服务器:

berth

Berth 通过 stdio 使用 MCP 协议进行通信。它旨在由 MCP 客户端启动,而不是独立运行。

Claude Code

claude mcp add berth -- berth

Claude Desktop

添加到您的 claude_desktop_config.json

{
  "mcpServers": {
    "berth": {
      "command": "berth",
      "args": []
    }
  }
}

如果安装在虚拟环境中,请使用完整路径:

{
  "mcpServers": {
    "berth": {
      "command": "/path/to/venv/bin/berth",
      "args": []
    }
  }
}

环境变量

变量

默认

描述

BERTH_BACKUP_DIR

当前工作目录

用于备份和恢复路径的沙盒目录。所有路径都经过验证以确保位于此目录内。


安全性

  • 三级安全模型 -- 默认只读,写入需要显式选择加入,破坏性操作需要确认令牌

  • 确认令牌 -- 用于 DROP、TRUNCATE、ALTER DROP 和全表 DELETE 的 60 秒过期一次性 UUID

  • SQL 注入保护 -- 在 PRAGMA 语句中使用前,表名会根据 sqlite_master 进行验证;全程使用参数化查询

  • 路径遍历保护 -- 备份/恢复路径经过解析和验证,确保位于 BERTH_BACKUP_DIR 内;拒绝空字节

  • 密码掩码 -- DSN 密码在所有显示输出和错误消息中都会被掩码


开发

git clone https://github.com/seayniclabs/berth.git
cd berth
python -m venv .venv && source .venv/bin/activate
pip install -e ".[test]"
python -m pytest tests/ -q

PostgreSQL 和 MySQL 的集成测试需要 Docker:

docker compose -f tests/docker-compose.test.yml up -d
python -m pytest tests/ -q
docker compose -f tests/docker-compose.test.yml down

许可证

MIT

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/seayniclabs/berth'

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