mcpField
M
MCP Database Server

MCP Database Server

本地服务
github.com/cuongtl1992数据库2167 周前更新

关于 MCP Database Server

MCP Database Server 是一个 MCP 服务,用于连接并操作 SQLite、PostgreSQL、Microsoft SQL Server 和 MongoDB 等数据库。它支持 SSE 与 STDIO 两种运行模式,并可通过环境变量配置连接。

主要功能

  1. 01支持 SQLite、PostgreSQL、SQL Server、MongoDB
  2. 02提供 SSE 与 STDIO 两种运行模式
  3. 03通过环境变量配置数据库连接
  4. 04提供查询、更新及架构浏览能力

适用场景

  1. 01让 Claude Desktop 查询与分析数据库数据
  2. 02通过自然语言探索数据库表结构
  3. 03在 MCP 客户端中执行增删改操作

MCP 相关

该项目是一个 MCP 服务,向 MCP 客户端暴露 connect-database、execute-query、execute-update 等工具,以及数据库架构和表列表等资源。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dbs": {
"command": "npx",
"args": [
"-y",
"mcp-dbs"
],
"env": {
"MCP_MSSQL_SERVER": "<MCP_MSSQL_SERVER>",
"MCP_MSSQL_PORT": "<MCP_MSSQL_PORT>",
"MCP_MSSQL_DATABASE": "<MCP_MSSQL_DATABASE>",
"MCP_MSSQL_USER": "<MCP_MSSQL_USER>",
"MCP_MSSQL_PASSWORD": "<MCP_MSSQL_PASSWORD>",
"MCP_MSSQL_ENCRYPT": "<MCP_MSSQL_ENCRYPT>",
"MCP_MSSQL_TRUST_SERVER_CERTIFICATE": "<MCP_MSSQL_TRUST_SERVER_CERTIFICATE>",
"MCP_MONGODB_URI": "<MCP_MONGODB_URI>",
"MCP_MONGODB_DATABASE": "<MCP_MONGODB_DATABASE>"
}
}
}
}
启动命令npx -y mcp-dbs
需要配置的环境变量
MCP_MSSQL_SERVER
MCP_MSSQL_PORT
MCP_MSSQL_DATABASE
MCP_MSSQL_USER
MCP_MSSQL_PASSWORD密钥
MCP_MSSQL_ENCRYPT
MCP_MSSQL_TRUST_SERVER_CERTIFICATE
MCP_MONGODB_URI
MCP_MONGODB_DATABASE

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-dbs

工具

还没有获取到工具列表

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

详细介绍

MseeP.ai 安全评估徽章

MCP 数据库服务

用于连接和使用各种数据库系统的模型上下文协议(MCP)实现。

README 配图

支持的数据库

  • SQLite
  • PostgreSQL
  • Microsoft SQL Server
  • MongoDB

安装

npm install -g mcp-dbs

用法

MCP 数据库服务可通过两种模式使用:

SSE 模式(默认)

默认情况下,服务以 SSE(服务器发送事件)模式在端口 3001 上运行:

npx mcp-dbs

这将启动一个 HTTP 服务,并在 http://localhost:3001/mcp 提供 SSE 端点。

自定义端口

可以使用 --port 选项指定自定义端口:

npx mcp-dbs --port 8080
STDIO 模式

对于通过标准输入/输出通信的工具,可以使用 --stdio 选项:

npx mcp-dbs --stdio

Claude Desktop 集成

你可以将 mcp-dbs 添加到 Claude 配置文件,以便与 Claude Desktop 集成。

配置步骤
  1. 打开或创建 Claude Desktop 配置文件
  2. 将 mcp-dbs 配置添加到 mcpServers 部分:
{
  "mcpServers": {
    "mcp-dbs": {
      "command": "node",
      "args": [
        "/path/to/your/mcp-dbs/dist/cli.js",
        "--stdio"
      ],
      "env": {
        "MCP_MONGODB_URI": "mongodb://localhost:27017",
        "MCP_MONGODB_DATABASE": "your-database-name"
      }
    }
  }
}

将环境变量替换为你自己的数据库连接信息。

注意事项
  • command 应为 node
  • 在 args 中提供 mcp-dbs 安装目录下 cli.js 文件的绝对路径
  • 根据数据库类型配置相应的环境变量(参见下方的环境变量部分)
  • 你可以为任何受支持的数据库使用环境变量(SQLite、PostgreSQL、SQL Server 或 MongoDB)
与 Claude 搭配使用

完成配置后,Claude 就可以使用下方所述的 MCP 工具访问你的数据库。你可以让 Claude:

  • 连接到你的数据库
  • 执行查询并获取结果
  • 探索数据库架构
  • 使用表和数据

工具

  • connect-database:连接到数据库
  • disconnect-database:断开数据库连接
  • execute-query:执行查询并返回结果
  • execute-update:执行查询但不返回结果

资源

  • database-schema:获取完整的数据库架构
  • table-schema:获取特定表的架构
  • tables-list:获取所有表的列表

使用环境变量进行配置

你可以使用环境变量配置数据库连接:

SQLite
# Set these environment variables before connecting
export MCP_SQLITE_FILENAME="path/to/database.db"
export MCP_SQLITE_CREATE_IF_NOT_EXISTS="true"
PostgreSQL
# Set these environment variables before connecting
export MCP_POSTGRES_HOST="your-postgres-host"
export MCP_POSTGRES_PORT="5432"
export MCP_POSTGRES_DATABASE="your-database-name"
export MCP_POSTGRES_USER="your-username"
export MCP_POSTGRES_PASSWORD="your-password"
export MCP_POSTGRES_SSL="false"
SQL Server
# Set these environment variables before connecting
export MCP_MSSQL_SERVER="your-server-address"
export MCP_MSSQL_PORT="1433"
export MCP_MSSQL_DATABASE="your-database-name"
export MCP_MSSQL_USER="your-username"
export MCP_MSSQL_PASSWORD="your-password"
export MCP_MSSQL_ENCRYPT="true"
export MCP_MSSQL_TRUST_SERVER_CERTIFICATE="true"
MongoDB
# Set these environment variables before connecting
export MCP_MONGODB_URI="mongodb://localhost:27017"
export MCP_MONGODB_DATABASE="your-database-name"
export MCP_MONGODB_MAX_POOL_SIZE="10"
export MCP_MONGODB_USE_UNIFIED_TOPOLOGY="true"

这些环境变量的优先级高于传递给 connect-database 工具的任何配置。

MCP 工具

该服务公开以下 MCP 工具:

connect-database

连接到数据库。

参数:

  • connectionId:连接的唯一标识符
  • type:数据库类型(sqlite、postgres、mssql 或 mongodb)

SQLite 示例:

{
  "connectionId": "my-sqlite-db",
  "type": "sqlite"
}

PostgreSQL 示例:

{
  "connectionId": "my-postgres-db",
  "type": "postgres"
}

SQL Server 示例:

{
  "connectionId": "my-mssql-db",
  "type": "mssql"
}

MongoDB 示例:

{
  "connectionId": "my-mongodb-db",
  "type": "mongodb"
}
disconnect-database

断开数据库连接。

参数:

  • connectionId:要断开的连接 ID
execute-query

执行返回结果的查询。

参数:

  • connectionId:连接 ID
  • query:SQL 查询或 MongoDB 聚合管道(JSON 字符串)
  • params:(可选)查询参数数组。对于 MongoDB,第一个参数是集合名称。

SQL 示例:

{
  "connectionId": "my-postgres-db",
  "query": "SELECT * FROM users WHERE age > $1",
  "params": [21]
}

MongoDB 示例:

{
  "connectionId": "my-mongodb-db",
  "query": "[{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]",
  "params": ["users"]
}

MongoDB 示例(包含内嵌集合的新格式):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"pipeline\": [{\"$match\": {\"age\": {\"$gt\": 21}}}, {\"$sort\": {\"name\": 1}}]}"
}

MongoDB 示例(shell 语法):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').find({\"age\": {\"$gt\": 21}})"
}

MongoDB 示例(直接引用集合的 shell 语法):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.find({\"age\": {\"$gt\": 21}})"
}

MongoDB 示例(原始命令):

{
  "connectionId": "my-mongodb-db", 
  "query": "{\"find\": \"users\", \"filter\": {\"age\": {\"$gt\": 21}}}"
}
execute-update

执行不返回结果的查询(INSERT、UPDATE、DELETE)。

参数:

  • connectionId:连接 ID
  • query:SQL 查询或 MongoDB 命令(JSON 字符串)
  • params:(可选)查询参数数组。对于 MongoDB,第一个参数是集合名称。

SQL 示例:

{
  "connectionId": "my-postgres-db",
  "query": "INSERT INTO users (name, age) VALUES ($1, $2)",
  "params": ["John Doe", 30]
}

MongoDB 示例:

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}",
  "params": ["users"]
}

MongoDB 示例(包含内嵌集合的新格式):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"collection\": \"users\", \"operation\": {\"insertOne\": {\"name\": \"John Doe\", \"age\": 30}}}"
}

MongoDB 示例(Shell 语法):

{
  "connectionId": "my-mongodb-db",
  "query": "db.getCollection('users').insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

MongoDB 示例(直接集合引用的 Shell 语法):

{
  "connectionId": "my-mongodb-db",
  "query": "db.users.insertOne({\"name\": \"John Doe\", \"age\": 30})"
}

MongoDB 示例(原始命令):

{
  "connectionId": "my-mongodb-db",
  "query": "{\"insert\": \"users\", \"documents\": [{\"name\": \"John Doe\", \"age\": 30}]}"
}

MCP 资源

服务会公开以下 MCP 资源:

数据库架构

URI:database://{connectionId}/schema

返回数据库的架构信息,包括所有表及其列。

表架构

URI:database://{connectionId}/tables/{tableName}

返回特定表的架构信息,包括其列。

表列表

URI:database://{connectionId}/tables

返回数据库中所有表的列表。

开发

测试

运行测试:

npm test

支持此项目

如果你觉得这个项目有帮助,可以考虑请我喝杯咖啡!

请我喝杯咖啡二维码

扫描上方二维码,或点击此处支持此项目的开发。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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