数据库查询服务

一个基于Model Context Protocol (MCP)的数据库查询服务器,支持SQLite、PostgreSQL、MySQL和Microsoft SQL Server的只读访问。

  • by davinpkn
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 daviziks/nala-db-mcp

使用说明

nala db mcp

用于查询数据库的模型上下文协议(MCP)服务器。支持SQLite、PostgreSQL、MySQL和具有只读访问权限的Microsoft SQL Server。

特性

  • 多数据库支持:SQLite、PostgreSQL、MySQL和MS SQL Server
  • 只读操作:通过DML操作阻塞安全执行查询
  • MCP集成:通过模型上下文协议公开数据库查询
  • csv输出:查询结果以CSV格式返回
  • 基于环境的配置:通过连接 DATABASE_URL 环境变量

用法

您可以将此MCP服务器与任何MCP客户端一起使用,如Cursor或Claude Desktop。

光标中的配置

将以下配置添加到MCP设置文件中(通常在光标设置或 .cursorrules):

{
  "mcpServers": {
    "nala-db-mcp": {
      "command": "bunx nala-db-mcp",
      "env": {
        "DATABASE_URL": "mssql://sa:test@localhost:1433/test"
      }
    }
  }
}

替换 DATABASE_URL 使用数据库连接字符串的值:

  • SQLite: sqlite://path/to/database.db
  • PostgreSQL: postgres://user:password@localhost:5432/dbname
  • MySQL: mysql://user:password@localhost:3306/dbname
  • MS SQL Server: mssql://user:password@localhost:1433/dbname

配置后,MCP服务器将在您的Cursor环境中可用,您可以使用 run-query 执行只读SQL查询的工具。

用法(本地)

对于本地开发或自定义集成,您可以直接安装并运行服务器。

安装

bun install

配置

在中设置数据库连接字符串 DATABASE_URL 环境变量:

# SQLite
export DATABASE_URL="sqlite://path/to/database.db"

# PostgreSQL
export DATABASE_URL="postgres://user:password@localhost:5432/dbname"

# MySQL
export DATABASE_URL="mysql://user:password@localhost:3306/dbname"

# MS SQL Server
export DATABASE_URL="mssql://user:password@localhost:1433/dbname"

运行服务器

bun run start

MCP服务器将启动并在stdio上监听MCP客户端连接。

可用工具

run-query

对配置的数据库执行只读SQL查询。

输入:

  • query (string):要执行的SQL查询。必须是SELECT查询(无INSERT、UPDATE、DELETE等)

输出:

  • CSV格式的查询结果

例子:

SELECT * FROM users WHERE active = 1

发展

运行测试

# Run all tests
bun test

# Run specific test file
bun test test/db.test.ts

装订和格式化

bun run check

这将运行Biome,并启用代码格式化和linting的自动修复。

项目结构

  • index.ts -MCP服务器设置和工具注册
  • src/db.ts -数据库连接逻辑和实用程序
  • test/db.test.ts -测试套件

安全

  • 任何东西都不是防弹的,因此建议创建一个具有只读权限的新用户
  • 所有数据库连接都是只读的
  • DML操作(INSERT、UPDATE、DELETE等)通过正则表达式验证被阻止
  • 连接字符串支持加密连接(MS SQL Server使用 Encrypt=true)

许可证

麻省理工学院


内置于 包子 和那个 模型上下文协议SDK