项目简介

本项目是一个基于Model Context Protocol (MCP) 的服务器实现,专门用于连接MySQL数据库并提取其Schema(数据库结构)信息。它使得大型语言模型 (LLM) 客户端能够通过标准化的MCP协议访问数据库元数据,而无需直接连接或理解数据库内部细节。

主要功能点

本服务器提供了两个主要的工具(Tool),供与之连接的LLM客户端调用:

  • 列出表 ('list_tables'): 获取指定数据库中所有表的列表。对于每个表,会返回表名、注释以及主要的键信息(主键、唯一键、外键),以便LLM快速了解数据库的整体结构和表之间的关系。
  • 描述表 ('describe_tables'): 获取一个或多个指定表的详细结构信息。这包括每个表的字段(名称、类型、是否可空、默认值、注释)、主键、唯一键、外部键以及其他索引信息,为LLM提供深入理解表结构的详细数据。

安装步骤

  1. 安装 Go 语言: 确保您的系统安装了 Go 1.18 或更高版本。
  2. 安装 MySQL 驱动: 运行以下命令安装Go的MySQL驱动:
    go get github.com/go-sql-driver/mysql
  3. 安装 MCP Go 库: 运行以下命令安装MCP的Go语言库:
    go get github.com/mark3labs/mcp-go
  4. 配置数据库连接: 设置以下环境变量来指向您的MySQL数据库实例:
    • 'DB_HOST': 数据库服务器主机名 (默认为 'localhost')
    • 'DB_PORT': 数据库服务器端口 (默认为 '3306')
    • 'DB_USER': 数据库用户名
    • 'DB_PASSWORD': 数据库密码
  5. 运行服务器: 在项目根目录下运行 'main.go' 文件来启动服务器。
    go run main.go
    服务器将通过标准输入/输出 (stdio) 监听MCP请求。

服务器配置 (供MCP客户端参考)

MCP客户端(如某些支持MCP的LLM应用或IDE插件)需要配置如何启动并连接到这个MySQL Schema MCP服务器。典型的配置方式是在客户端的设置文件中指定一个服务器条目,其中至少包含以下信息:

  • 服务器名称: 一个标识符,例如 '"mysql-schema"'。
  • 启动命令 ('command'): MCP服务器可执行文件的路径。例如,如果编译了本项目,可能是编译后的二进制文件路径;如果是直接运行,可能是 'go' 命令的路径。
  • 启动参数 ('args'): 传递给启动命令的参数。例如,如果使用 'go run main.go' 启动,参数可能包括 'run' 和 'main.go'。
  • 环境变量 ('env'): 启动服务器进程时需要设置的环境变量,特别是数据库连接所需的 'DB_HOST', 'DB_PORT', 'DB_USER', 'DB_PASSWORD'。客户端会负责在启动服务器进程时注入这些变量。

客户端根据这个配置来启动并管理MCP服务器进程,并通过标准输入/输出与其进行基于JSON-RPC的通信。

基本使用方法

当您配置好MCP客户端并连接到此服务器后,LLM客户端将能够感知到服务器提供的工具 ('list_tables' 和 'describe_tables')。

  1. 获取数据库表列表: LLM可以向客户端发起请求,通过调用 'list_tables' 工具并指定数据库名(例如 'my_database'),获取该数据库下所有表的名称、注释和简要键信息列表。
  2. 获取特定表结构: 如果LLM需要了解某个或某些表的详细结构,它可以调用 'describe_tables' 工具,指定数据库名和需要查看的表名列表(例如 '["users", "products"]')。服务器将返回这些表的字段定义、主键、唯一键、外部键和索引等详细信息,格式化为易于LLM理解的文本。

通过这些工具,LLM可以方便地探索和理解MySQL数据库的结构,从而更好地执行与数据相关的任务,例如生成SQL查询、解释数据含义等。

信息

分类

数据库与文件