项目简介
本项目是一个基于Model Context Protocol (MCP) 的服务器实现,专门用于连接MySQL数据库并提取其Schema(数据库结构)信息。它使得大型语言模型 (LLM) 客户端能够通过标准化的MCP协议访问数据库元数据,而无需直接连接或理解数据库内部细节。
主要功能点
本服务器提供了两个主要的工具(Tool),供与之连接的LLM客户端调用:
- 列出表 ('list_tables'): 获取指定数据库中所有表的列表。对于每个表,会返回表名、注释以及主要的键信息(主键、唯一键、外键),以便LLM快速了解数据库的整体结构和表之间的关系。
- 描述表 ('describe_tables'): 获取一个或多个指定表的详细结构信息。这包括每个表的字段(名称、类型、是否可空、默认值、注释)、主键、唯一键、外部键以及其他索引信息,为LLM提供深入理解表结构的详细数据。
安装步骤
- 安装 Go 语言: 确保您的系统安装了 Go 1.18 或更高版本。
- 安装 MySQL 驱动: 运行以下命令安装Go的MySQL驱动:
go get github.com/go-sql-driver/mysql - 安装 MCP Go 库: 运行以下命令安装MCP的Go语言库:
go get github.com/mark3labs/mcp-go - 配置数据库连接: 设置以下环境变量来指向您的MySQL数据库实例:
- 'DB_HOST': 数据库服务器主机名 (默认为 'localhost')
- 'DB_PORT': 数据库服务器端口 (默认为 '3306')
- 'DB_USER': 数据库用户名
- 'DB_PASSWORD': 数据库密码
- 运行服务器: 在项目根目录下运行 'main.go' 文件来启动服务器。
服务器将通过标准输入/输出 (stdio) 监听MCP请求。go run main.go
服务器配置 (供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')。
- 获取数据库表列表: LLM可以向客户端发起请求,通过调用 'list_tables' 工具并指定数据库名(例如 'my_database'),获取该数据库下所有表的名称、注释和简要键信息列表。
- 获取特定表结构: 如果LLM需要了解某个或某些表的详细结构,它可以调用 'describe_tables' 工具,指定数据库名和需要查看的表名列表(例如 '["users", "products"]')。服务器将返回这些表的字段定义、主键、唯一键、外部键和索引等详细信息,格式化为易于LLM理解的文本。
通过这些工具,LLM可以方便地探索和理解MySQL数据库的结构,从而更好地执行与数据相关的任务,例如生成SQL查询、解释数据含义等。
信息
分类
数据库与文件