只读数据库MCP服务

一个为TeamSpeak/TypeScript设计的只读数据库模型上下文协议服务,提供数据库配置管理、主题切换和使用历史查看的轻量级UI。

  • by Crei03
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Crei03/mcp-db

使用说明

只读数据库MCP

最小的TeamSpeak/TypeScript设置,暴露了一个只读数据库模型上下文协议服务器和一个用于管理数据库配置、切换亮/暗模式和查看使用历史的小型UI。

先决条件

  • 节点18+
  • 具有只读权限的PostgreSQL或MySQL/MariaDB数据库用户

安装

npm install

运行UI+API

提供配置/历史API和最低限度的用户界面 http://localhost:4000.

npm run dev

运行MCP服务器

MCP服务器从读取相同的已保存配置 data/state.json 并且只公开只读工具。

npm run mcp

暴露的工具(通过stdio):

  • list_tables --输入 { db: "<configName>" }
  • preview_table --输入 { db: "<configName>", table: "table_name", limit?: number }
  • run_select --输入 { db: "<configName>", sql: "SELECT ..." } (拒绝非SELECT)

将您的模型/代理连接到MCP服务器时,请使用这些工具名称。

如何使用

  1. 开始 npm run dev 并打开UI。输入数据库连接详细信息并单击 保存配置。将SSL模式设置为 disable, require,或 no-verify (亲笔签名)。
    • 对于MySQL/MariaDB TCP/IP,选择类型“MySQL/Maria DB”。
  2. 在“使用配置”中选择保存的配置以列出表、预览表或运行Select。
  3. 每次成功的MCP/HTTP调用都会记录一个历史条目(数据库名称、触摸的表、时间戳)。
  4. 在您的代理中,通过stdio连接到MCP服务器,并使用保存的 db 名称;您只需要传递友好名称,而不需要传递凭据。

备注

  • 配置和历史生活 data/state.json。删除该文件以重置。
  • 服务器使用强制只读模式 SET SESSION CHARACTERISTICS AS TRANSACTION READ ONLY 并拒绝非SELECT查询。
  • 如果您的MCP SDK导出了不同的帮助程序名称,请调整 src/mcp-server.ts 注册以匹配您的SDK版本。
  • 扩展 src/db.ts 添加其他引擎(MySQL、SQLite),同时保持只读保护。