Go MCP MSSQL
March 31, 2025 · View on GitHub
这是一个基于 MSSQL 的 MCP(Model-Controller-Persistence)服务实现。它提供了一组工具来管理和操作 MSSQL 数据库。
什么是 MCP
MCP (Model-Controller-Persistence) 是一种用于构建 AI 工具的协议和框架,它允许 AI 助手与外部服务和数据源交互。MCP 框架的核心理念包括:
- 工具定义 - 服务定义一组"工具",每个工具代表一个可被 AI 调用的操作
- 参数约束 - 每个工具定义明确的参数和类型,确保 AI 调用时提供正确的数据
- 标准化通信 - 使用标准化的通信协议在 AI 和外部服务之间交换数据
- 安全边界 - 限制 AI 只能通过预定义的工具与外部系统交互
MCP 的组成部分
- 工具 (Tools): 定义服务可执行的操作,包括名称、描述和参数
- 工具处理程序 (Tool Handlers): 实现工具的业务逻辑
- 服务器 (Server): 负责接收请求、路由到相应的处理程序并返回结果
- 协议 (Protocol): 定义 AI 和服务之间的通信格式和流程
功能特性
- 数据库管理:列出数据库和表
- 表操作:创建、修改和描述表结构
- 数据操作:执行查询、插入、更新和删除操作
- 查询计划分析:支持执行计划检查
- 只读模式:可选的只读模式以防止数据修改
安装
go get github.com/knight0zh/go-mcp-mssql
使用方法
命令行参数
-host: MSSQL 服务器主机名(默认:localhost)-user: MSSQL 用户名(默认:sa)-pass: MSSQL 密码-port: MSSQL 端口(默认:1433)-db: MSSQL 数据库名-dsn: MSSQL DSN(可选,如果提供则忽略其他连接参数)-read-only: 启用只读模式-with-explain-check: 在执行查询前检查执行计划
示例
# 使用基本连接参数
go-mcp-mssql -host localhost -user sa -pass mypassword -db mydatabase
# 使用 DSN
go-mcp-mssql -dsn "server=localhost;user id=sa;password=mypassword;database=mydatabase"
# 启用只读模式
go-mcp-mssql -host localhost -user sa -pass mypassword -db mydatabase -read-only
# 启用执行计划检查
go-mcp-mssql -host localhost -user sa -pass mypassword -db mydatabase -with-explain-check
MCP 工具说明
本项目使用 MCP 框架实现了一系列数据库操作工具。每个工具代表一个可以被 AI 助手调用的操作。
MCP 工具定义模式
工具的定义遵循以下模式:
toolName := mcp.NewTool(
"tool_name", // 工具名称
mcp.WithDescription("描述信息"), // 工具描述
mcp.WithString("参数名", // 字符串参数
mcp.Required(), // 参数是否必需
mcp.Description("参数描述"), // 参数描述
),
// 其他参数...
)
MCP 工具实现模式
工具的实现遵循以下模式:
s.AddTool(toolName, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// 从请求中获取参数
param := request.Params.Arguments["参数名"].(string)
// 执行业务逻辑
result, err := DoSomething(param)
if err != nil {
return mcp.NewToolResultError(err.Error()), nil
}
// 返回成功结果
return mcp.NewToolResultText(result), nil
})
数据库工具
list_database: 列出所有数据库list_table: 列出所有表desc_table: 描述表结构
表操作工具
create_table: 创建新表alter_table: 修改现有表
数据操作工具
read_query: 执行只读查询write_query: 执行写入操作update_query: 执行更新操作delete_query: 执行删除操作
MCP 集成到 AI 助手
要将此 MCP 服务集成到 AI 助手中,可以在配置文件中添加以下内容:
{
"mcpServers": {
"mssql": {
"command": "go-mcp-mssql",
"args": [
"--host", "localhost",
"--user", "sa",
"--pass", "yourpassword",
"--db", "yourdatabase"
]
}
}
}
然后 AI 助手可以通过以下方式调用工具:
使用 mssql.list_table 列出所有表
使用 mssql.desc_table 查看表结构,表名为 'users'
使用 mssql.read_query 执行查询 'SELECT * FROM users WHERE id = 1'
注意事项
- 在执行写入操作前,建议先使用
desc_table了解表结构 - 更新和删除操作必须包含 WHERE 条件
- 在生产环境中建议启用
-read-only模式以防止意外的数据修改 - 使用
-with-explain-check可以帮助优化查询性能
许可证
MIT License