首页
学习
活动
专区
圈层
工具
发布
MCP广场 >详情页
Legion-MCP 数据库查询服务器2026-10-24357分享添加福利群:解决AI开发者的「MCP实战痛点」
一个帮助人们使用 Query Runner 访问和查询数据库中数据的服务器,集成了 Model Context Protocol (MCP) Python SDK。支持的数据库包括: PostgreSQL Redshift MySQL Microsoft SQL Server Google APIs Amazon Web Services(通过 boto3) CockroachDB SQLite
By TheRaLabs
2026-10-24357
github
详情内容

多数据库MCP服务器(由Legion AI开发)

这是一个帮助用户通过Legion查询运行器访问和查询数据库数据的服务器,集成了模型上下文协议(MCP)Python SDK。

开始生成内容

本工具由Legion AI提供。如需使用功能完备的AI数据分析工具,请访问该网站。如果您希望我们支持某个特定数据库,请通过邮件联系我们。

结束生成内容

为什么选择数据库MCP

数据库MCP因其以下显著优势而从其他数据库访问方案中脱颖而出:

  • 统一的多数据库接口:通过单一一致的API连接PostgreSQL、MySQL、SQL Server等多种数据库,无需为每种数据库类型学习不同的客户端库。
  • AI就绪集成:专为通过模型上下文协议(MCP)进行AI助手交互而构建,支持自然语言数据库操作。
  • 零配置模式发现:自动发现并暴露数据库模式,无需手动配置或映射。
  • 数据库无关工具:无论底层数据库技术如何,都可以使用同一套工具查找表、探索模式和执行查询。
  • 安全的凭证管理:安全地处理数据库认证详情,将凭证与应用程序代码分离。
  • 简单部署:与LangChain、FastAPI等现代AI开发环境配合使用,设置简单。
  • 可扩展设计:可以轻松添加自定义工具和提示,以增强特定用例的功能。

无论您是在构建需要数据库访问的AI代理,还是仅仅想要一个统一的多数据库接口,数据库MCP都提供了一个简化的解决方案,大大减少了开发时间和复杂性。

功能特点

  • 多数据库支持 - 可同时连接多个数据库
  • 通过Legion查询运行器进行数据库访问
  • 支持模型上下文协议(MCP),适用于AI助手
  • 将数据库操作作为MCP资源、工具和提示暴露
  • 多种部署选项(独立MCP服务器、FastAPI集成)
  • 查询执行和结果处理
  • 通过环境变量、命令行参数或MCP设置JSON进行灵活配置
  • 多数据库设置下的用户驱动数据库选择

支持的数据库

数据库 DB_TYPE代码
PostgreSQL pg
Redshift redshift
CockroachDB cockroach
MySQL mysql
RDS MySQL rds_mysql
Microsoft SQL Server mssql
Big Query bigquery
Oracle DB oracle
SQLite sqlite

我们使用Legion查询运行器库作为连接器。您可以在他们的API文档中找到更多信息。

什么是MCP?

模型上下文协议(MCP)是一种用于在AI应用程序中维护上下文的规范。该服务器使用MCP Python SDK来:

  • 将数据库操作作为工具暴露给AI助手
  • 提供数据库模式和元数据作为资源
  • 生成有用的数据库操作提示
  • 实现与数据库的有状态交互

安装与配置

必需参数

对于单数据库配置:

  • DB_TYPE:数据库类型代码(参见上表)
  • DB_CONFIG:数据库连接的JSON配置字符串

对于多数据库配置:

  • DB_CONFIGS:数据库配置的JSON数组,每个配置包含:
    • db_type:数据库类型代码
    • configuration:数据库连接配置
    • description:数据库的可读描述

配置格式因数据库类型而异。有关特定数据库的配置详情,请参阅API文档。

安装方法

选项1:使用UV(推荐)

使用uv时,不需要特定的安装。我们将使用uvx直接运行database-mcp。

UV配置示例(单数据库):

将DB_TYPE和DB_CONFIG替换为您的连接信息。
{
    "mcpServers": {
      "database-mcp": {
        "command": "uvx",
        "args": [
          "database-mcp"
        ],
        "env": {
          "DB_TYPE": "pg",
          "DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
        },
        "disabled": true,
        "autoApprove": []
      }
    }
}

UV配置示例(多数据库):

{
    "mcpServers": {
      "database-mcp": {
        "command": "uvx",
        "args": [
          "database-mcp"
        ],
        "env": {
          "DB_CONFIGS": "[{\"id\":\"pg_main\",\"db_type\":\"pg\",\"configuration\":{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"postgres\"},\"description\":\"PostgreSQL Database\"},{\"id\":\"mysql_data\",\"db_type\":\"mysql\",\"configuration\":{\"host\":\"localhost\",\"port\":3306,\"user\":\"root\",\"password\":\"pass\",\"database\":\"mysql\"},\"description\":\"MySQL Database\"}]"
        },
        "disabled": true,
        "autoApprove": []
      }
    }
}

选项2:使用PIP

通过pip安装:

pip install database-mcp

PIP配置示例(单数据库):

{
  "mcpServers": {
    "database": {
      "command": "python",
      "args": [
        "-m", "database_mcp", 
        "--repository", "path/to/git/repo"
      ],
      "env": {
        "DB_TYPE": "pg",
        "DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
      }
    }
  }
}

运行服务器

生产模式

python mcp_server.py

配置方法

环境变量(单数据库)

export DB_TYPE="pg"  # 或mysql,postgresql等
export DB_CONFIG='{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
uv run src/database_mcp/mcp_server.py

环境变量(多数据库)

export DB_CONFIGS='[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
uv run src/database_mcp/mcp_server.py

如果您没有指定ID,系统将根据数据库类型和描述自动生成一个:

export DB_CONFIGS='[{"db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
# ID将自动生成为类似"pg_postgres_0"和"my_mysqldb_1"的形式
uv run src/database_mcp/mcp_server.py

命令行参数(单数据库)

python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'

命令行参数(多数据库)

python mcp_server.py --db-configs '[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'

请注意,您可以使用id字段为每个数据库指定自定义ID,或者让系统根据数据库类型和描述生成它们。

多数据库支持

当连接到多个数据库时,您需要为每个查询指定使用哪个数据库:

  1. 使用list_databases工具查看可用数据库及其ID
  2. 使用get_database_info查看数据库的模式详情
  3. 使用find_table在所有数据库中查找表
  4. 为execute_query、get_table_columns等工具提供db_id参数

数据库连接在内部作为DbConfig对象的字典进行管理,每个数据库都有唯一的ID。模式信息表示为表对象的列表,其中每个表包含其名称和列信息。

select_database提示引导用户完成数据库选择过程。

模式表示

数据库模式表示为表对象的列表,其中每个表包含有关其列的信息:

[
  {
    "name": "users",
    "columns": [
      {"name": "id", "type": "integer"},
      {"name": "username", "type": "varchar"},
      {"name": "email", "type": "varchar"}
    ]
  },
  {
    "name": "orders",
    "columns": [
      {"name": "id", "type": "integer"},
      {"name": "user_id", "type": "integer"},
      {"name": "product_id", "type": "integer"},
      {"name": "quantity", "type": "integer"}
    ]
  }
]

这种表示方式使得可以以编程方式访问表和列信息,同时保持清晰的层次结构。

暴露的MCP功能

资源

资源 描述
resource://schema/{database_id} 获取一个或所有配置数据库的模式

工具

工具 描述
execute_query 执行SQL查询并以markdown表格形式返回结果
execute_query_json 执行SQL查询并以JSON形式返回结果
get_table_columns 获取特定表的列名
get_table_types 获取特定表的列类型
get_query_history 获取最近的查询历史
list_databases 列出所有可用的数据库连接
get_database_info 获取包括模式在内的数据库详细信息
find_table 查找包含特定表的数据库
describe_table 获取表的详细描述,包括列名和类型
get_table_sample 从表中获取数据样本

所有特定于数据库的工具(如execute_query、get_table_columns等)都需要一个db_id参数来指定使用哪个数据库。

提示

提示 描述
sql_query 针对数据库创建SQL查询
explain_query 解释SQL查询的作用
optimize_query 优化SQL查询以获得更好的性能
select_database 帮助用户选择要使用的数据库

开发

使用MCP检查器

运行以下命令启动检查器:

npx @modelcontextprotocol/inspector uv run src/database_mcp/mcp_server.py

然后在命令输入字段中设置类似以下内容:

run src/database_mcp/mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'

测试

uv pip install -e ".[dev]"
pytest

发布

# 清理构建工件
rm -rf dist/ build/ 
# 如果存在,删除任何.egg-info目录
find . -name "*.egg-info" -type d -exec rm -rf {} + 2>/dev/null || true
# 构建包
uv run python -m build
# 上传到PyPI
uv run python -m twine upload dist/*

许可证

本仓库采用GPL许可证。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档