返回市场
麦普数据库服务

麦普数据库服务

作者:cuongtl199219 星标更新:2025-07-17

项目介绍

MseeP.ai 安全评估徽章

MCP 数据库服务器

Model Context Protocol (MCP) 的实现,用于连接并操作各种数据库系统。

<a href="https://glama.ai/mcp/servers/tvpshb3f1n"> <img width="380" height="200" src="https://gips1.baidu.com/it/u=481702163,2609020610&fm=3081&app=3081&f=PNG?w=760&h=400" /> </a>

支持的数据库

  • SQLite
  • PostgreSQL
  • Microsoft SQL Server
  • MongoDB

安装

npm install -g mcp-dbs

使用方法

MCP 数据库服务器可以在两种模式下使用:

SSE 模式(默认)

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

npx mcp-dbs

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

自定义端口

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

npx mcp-dbs --port 8080

STDIO 模式

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

npx mcp-dbs --stdio

Claude Desktop 集成

您可以通过添加到您的 Claude 配置文件中来将 mcp-dbs 与 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

# 在连接前设置这些环境变量
export MCP_SQLITE_FILENAME="path/to/database.db"
export MCP_SQLITE_CREATE_IF_NOT_EXISTS="true"

PostgreSQL

# 在连接前设置这些环境变量
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

# 在连接前设置这些环境变量
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

# 在连接前设置这些环境变量
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 壳语法):

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

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

{
  "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 壳语法):

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

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

{
  "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

支持项目

如果您发现这个项目有用,请考虑买我一杯咖啡!

<p align="center"> <img src="https://gips0.baidu.com/it/u=1907942120,2907582527&fm=3081&app=3081&f=PNG?w=700&h=700" alt="买我一杯咖啡二维码" width="200"> </p>

扫描上面的二维码或点击这里支持此项目的开发。

许可证

MIT