返回市场
军团-mcp

军团-mcp

作者:TheRaLabs77 星标更新:2025-05-11

项目介绍

多数据库MCP服务器(由Legion AI提供)

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

开始生成此处

此工具由Legion AI提供。如需使用完整的全功能人工智能数据分析工具,请访问网站。如果您希望我们支持某个特定数据库,请联系我们。

结束生成此处

为什么选择数据库MCP

数据库MCP在其他数据库访问解决方案中脱颖而出,原因如下:

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

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

功能

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

支持的数据库

数据库DB_TYPE代码
PostgreSQLpg
Redshiftredshift
CockroachDBcockroach
MySQLmysql
RDS MySQLrds_mysql
Microsoft SQL Servermssql
Big Querybigquery
Oracle DBoracle
SQLitesqlite

我们使用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"}]'
# IDs将被生成为类似"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_queryget_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_queryget_table_columns等)都需要db_id参数来指定要使用的数据库。

提示

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

开发

使用MCP Inspector

运行以下命令启动检查器

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许可证