Database Mcp

Database Mcp

🚀 数据库 MCP 服务

数据库 MCP 服务支持多种数据库类型,借助 GORM 提供数据库功能,通过 Meteor 控制协议 (MCP) 实现高效管理。

🚀 快速开始

本服务支持多种数据库类型,可通过配置文件、命令行参数或环境变量进行配置,集成了 MCP 协议并支持 GORM ORM,为你提供便捷的数据库操作体验。

✨ 主要特性

  • 支持多种数据库类型
    • MySQL
    • PostgreSQL
    • SQLite
    • SQL Server
    • ClickHouse
  • 灵活的配置方式
    • 配置文件(YAML)
    • 命令行参数
    • 环境变量
  • MCP 协议集成:无缝对接 MCP 协议,实现高效控制。
  • GORM ORM 支持:借助 GORM ORM 简化数据库操作。

📦 安装指南

  1. 克隆仓库。
  2. 安装依赖项:
    go mod tidy
    

📚 详细文档

配置说明

配置文件(config.yaml)

创建一个 config.yaml 文件,结构如下:

database:
type: "mysql"  # mysql, postgres, sqlite, sqlserver, clickhouse
host: "localhost"
port: 3306
username: "root"
password: "password"
database: "mydb"
ssl_mode: "disable"  # for postgres
file: "database.db"  # for sqlite

命令行参数

可以通过命令行覆盖配置文件的设置:

./database-mcp --config=config.yaml \
--db-type=mysql \
--db-host=localhost \
--db-port=3306 \
--db-user=root \
--db-pass=password \
--db-name=mydb \
--db-ssl-mode=disable \
--db-file=database.db

可用的命令行参数包括:

参数 详情
--config 配置文件路径(默认: "config.yaml")
--db-type 数据库类型(mysql, postgres, sqlite, sqlserver, clickhouse)
--db-host 数据库主机地址
--db-port 数据库端口
--db-user 数据库用户名
--db-pass 数据库密码
--db-name 数据库名称
--db-ssl-mode SSL 模式(适用于 PostgreSQL)
--db-file 数据库文件路径(适用于 SQLite)

使用说明

  1. 启动服务:
    ./database-mcp --db-type=mysql --db-host=127.0.0.1 --db-port=3306 --db-user=dbuser --db-pass=passwd --db-name=dbname --db-ssl-mode=disable --mode=http
    
  2. 服务功能:
    • 加载配置文件和/或命令行参数。
    • 初始化数据库连接。
    • 启动 MCP 服务器。
    • 注册可用工具和资源。

MCP 配置

要使用 MCP 服务,请在你的 MCP 客户端中配置 MCP 端点:

http://127.0.0.1:8080/sse

这将使你的 MCP 客户端连接到本地运行的服务,端口为 8080。

MCP 工具

该服务提供以下 MCP 工具:

  1. get_tables:获取数据库中的所有表
    • 返回值:包含表名和备注的列表。
  2. get_table_detail:获取特定表的详细信息
    • 参数:
      • table_name:要获取详细信息的表名称。
    • 返回值:包括表名称、备注、列信息(字段名、类型、备注、是否为空、默认值)等信息。
  3. execute_sql:执行 SQL 查询
    • 参数:
      • query:要执行的 SQL 查询语句。
    • 返回值:
      • 对于 SELECT 查询:结果数据数组。
      • 对于其他查询(如 INSERT, UPDATE, DELETE):受影响的行数。

📄 许可证

MIT License

  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-23 14:54

相似服务问题