使用说明
数据库调试器MCP服务器
该项目提供了最低限度的 模型上下文协议 (MCP)服务器,公开单个 run_sql 跑步工具 只读的 针对PostgreSQL数据库的SQL查询。它旨在在MCP兼容的客户端中注册,这样您就可以在不冒写访问风险的情况下检查数据库。
需求
- Python 3.10+
psycopg(或psycopg 3支持的任何其他PostgreSQL驱动程序)mcp(模型上下文协议Python SDK)
安装依赖项:
pip install psycopg[binary] mcp
配置
已读取凭据 仅 根据环境变量:
- 更喜欢
DATABASE_URL或POSTGRES_URL对于单个连接字符串。 - 否则,设置离散
PGHOST,PGPORT,PGDATABASE,PGUSER,PGPASSWORD(可选PGSSLMODE).如果没有提供URL,所有这些都必须存在。
运行服务器
export DATABASE_URL="postgres://readonly:secret@localhost:5432/your_db"
# or export each PG* variable instead
python debugger.py # defaults to HTTP transport
网络默认设置:
MCP_HOST(默认值127.0.0.1)控制FastMCP绑定到哪个接口。MCP_PORT(默认值8000)控制监听端口。MCP_TRANSPORT(默认值streamable-http)如果未通过,则选择FastMCP传输--transport.
服务器在上启动FastMCP的流式HTTP传输 http://MCP_HOST:MCP_PORT/mcp,这是Cursor在配置HTTP MCP端点时所期望的。
选择交通工具
对于本地开发,您可以将所有内容保留在stdio上(不涉及套接字):
python debugger.py --transport stdio
# or export MCP_TRANSPORT=stdio and run without the flag
当通过HTTP(默认)运行时,服务器会记录确切的URL(http://MCP_HOST:MCP_PORT/mcp)因此,像Cursor这样的MCP客户端可以通过 "transport": "http".
通过Docker运行
您可以将服务器作为容器构建和运行(对Cursor MCP集成很有用):
docker build -t database-debugger-mcp .
docker run --rm \
-e MCP_HOST=0.0.0.0 \
-e DATABASE_URL="postgres://readonly:secret@host:5432/your_db" \
-p 8000:8000 \
database-debugger-mcp
然后,光标可以:
- 通过将MCP配置指向一个小包装器脚本(例如。,
docker run --rm ... database-debugger-mcp),或 - 使用连接到公开的HTTP端点
"transport": "http", "url": "http://127.0.0.1:8000/mcp".
可用工具
run_sql(query: str) -> str:运行单个语句(例如。,SELECT,SHOW,EXPLAIN)并将行作为打印精美的JSON返回。
只读保证
- 服务器拒绝包含多条语句的查询。
- 每个PostgreSQL会话都被强制进入
default_transaction_read_only = on和SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY. - 任何运行变异语句的尝试都会引发错误,并且不会被执行。
故障排除
- 确保数据库用户本身也具有深度防御的只读权限。
- 通过
--log-level DEBUG用于详细日志记录。 - 使用
--sslmode require(或类似)如果您的部署强制使用TLS。