【MCP-SERVER】Golang开发的mcp服务支持mysql数据库操作 和 终端操作 以及各种小工具 让ai更准确智能
ai-mcp 是一个基于 Go 语言构建的 MCP(Model Context Protocol)服务端,提供开箱即用的工具集和 SSE 服务。项目采用 GoFrame v2 框架,支持 MySQL 数据库,通过 config.yaml 管理配置。内置工具包括安全执行终端命令、数据编解码、SQL执行、时间处理等。支持日志记录到文件和终端,提供清晰的目录结构和开发文档。快速启动只需配置 yaml 文
ai-mcp
https://github.com/xgd16/ai-mcp
一个用 Go 构建的 MCP(Model Context Protocol)服务端,基于 mark3labs/mcp-go 与 GoFrame v2。项目内置多种可即用的工具(Tools),可通过 MCP 客户端(如 Cursor、继续集成的 IDE/Agent)进行调用。
功能特性
- SSE 服务:提供基于 Server-Sent Events 的 MCP 服务端;
- 工具集合:开箱即用的多种工具(见下方“内置工具”);
- 日志输出:支持文件与控制台日志,格式与级别可配;
- 数据库支持:通过 GoFrame gdb,支持 MySQL 等常见数据库;
- 简洁配置:使用
config.yaml管理服务、日志、数据库等配置。
目录结构
/Users/xuguodong/code/go/ai-mcp
├── main.go
├── config.yaml
├── makefile
├── internal/
│ ├── consts/
│ │ └── config.go
│ ├── mcp/
│ │ ├── handler.go
│ │ ├── mcp_tool_shell.go
│ │ ├── mcp_tool_db.go
│ │ └── mcp_tool_time.go
│ └── model/
│ ├── config.go
│ └── mcp.go
├── utility/
│ ├── db_data_conv.go
│ └── err.go
└── logs/
环境要求
- Go
1.25.1(见go.mod) - 已安装
make(可选) - 如需数据库相关工具,建议可访问的 MySQL 实例
快速开始
- 获取依赖
go mod download
- 构建可执行文件
- 使用
make:
make build
- 或直接使用 go(开启 greenteagc 实验特性与瘦身):
GOEXPERIMENT=greenteagc go build -ldflags="-s -w" -o mcp-server
- 配置
编辑config.yaml:
mcp-server:
address: "127.0.0.1:18232"
logger:
path: "./logs"
file: "{Y-m-d}.log"
prefix: "ai-mcp"
level: "all"
timeFormat: "2006-01-02 15:04:05"
ctxKeys: []
header: true
stdout: true
database:
default:
type: "mysql"
link: "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb3&parseTime=true&loc=Local"
prefix: ""
createdAt: "createTime"
updatedAt: "updateTime"
debug: true
提示:仓库默认配置包含示例数据库连接,请替换为你自己的连接信息,避免敏感信息泄露。
- 运行
./mcp-server
启动后,终端会打印:
MCP SSE服务已启动地址: http://127.0.0.1:18232/sse
- 连接到 MCP 客户端
在支持 MCP 的客户端中新增一个服务端配置,指向上述 SSE 地址(例如http://127.0.0.1:18232/sse)。不同客户端配置方式略有差异,请参考对应客户端文档。
内置工具(Tools)
以下工具名称与参数定义自 internal/mcp/handler.go 注册,处理函数位于对应 mcp_tool_*.go 文件:
-
RunSafeShellCommand:安全执行终端命令(禁用危险操作符、限制超时与管道数)。- 参数:
command(必填):命令文本,最多 3 个|管道,禁止&&/||/重定向等;timeoutSeconds(可选):超时秒,默认 10,最大 60;cwd(可选):工作目录。
- 参数:
-
Md5Encode:对给定文本进行 MD5(小写十六进制)。- 参数:
text(必填)
- 参数:
-
Base64Encode:文本转 Base64。- 参数:
text(必填)
- 参数:
-
Base64Decode:Base64 解码为文本。- 参数:
data(必填)
- 参数:
-
JwtParse:解析 JWT(不校验签名),返回 header 与 payload。- 参数:
token(必填)
- 参数:
-
JsonEncode:校验并压缩 JSON 字符串。- 参数:
raw(必填)
- 参数:
-
SQL_Actuator:把自然语言转 SQL 的上层调用者可将 SQL 传入本工具执行,结果以 Markdown 表格返回。- 参数:
sql(必填)
- 参数:
-
GetDatabaseInfo:返回数据库类型、主机、端口、库名、用户名、版本、大小等信息。- 参数:
dbname(可选)
- 参数:
-
NowTime:获取当前时间信息与毫秒时间戳。 -
TimestampToDateTime:将时间戳转换为日期时间字符串。- 参数:
timestamp(必填)
- 参数:
-
GetCalendarDays:获取指定年与月的所有日期信息(是否周末、英文月名等)。- 参数:
year、month(必填)
- 参数:
日志
- 日志配置位于
config.yaml的logger段; - 当
path配置为目录时,会按file模板写日志; stdout: true时会同时输出到终端。
开发说明
- 模块名:
ai-mcp(见go.mod) - 主要依赖:
github.com/mark3labs/mcp-go(MCP 协议实现)github.com/gogf/gf/v2(配置、日志、时间、数据库等)
- 入口:
main.go,启动 SSE 服务,地址来自config.yaml的mcp-server.address。 - 工具注册:
internal/mcp/handler.go遍历GetList()注册 Tools。
常见问题
- 端口被占用:修改
config.yaml中的mcp-server.address。 - 无法连接数据库:确认
database.default.link正确、网络可达,必要时关闭或放通防火墙。 - 客户端连不上:确保使用 SSE 地址(形如
http://host:port/sse)。
许可协议
MIT License
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)