# sql-mcp-server-go **Repository Path**: wei_bin_9966/sql-mcp-server-go ## Basic Information - **Project Name**: sql-mcp-server-go - **Description**: MCP工具,可以支持配置数据库链接进行数据库访问操作 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-10 - **Last Updated**: 2026-02-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 达梦数据库 MCP 服务器 (Go 版本) 这是一个用 Go 语言实现的达梦数据库 MCP (Model Context Protocol) 服务器,为 Claude Desktop 提供达梦数据库的交互能力。 ## 功能特性 ### 支持的工具 1. **execute_query** - 执行 SQL 查询 - 支持 SELECT、INSERT、UPDATE、DELETE 等所有 SQL 语句 - 支持参数绑定,防止 SQL 注入 - 返回查询结果和影响行数 2. **get_table_schema** - 获取表结构 - 获取表的所有列信息(列名、数据类型、长度、精度、可空性等) - 获取主键信息 - 获取索引信息(索引名、唯一性、包含列) 3. **list_tables** - 列出所有表 - 列出指定 Schema 下的所有表 - 显示表名、表空间、状态、行数、最后分析时间 4. **get_procedure_info** - 获取存储过程信息 - 获取存储过程的参数列表 - 获取存储过程的完整源代码 5. **list_procedures** - 列出所有存储过程 - 列出指定 Schema 下的所有存储过程和函数 - 显示对象名、状态、创建时间、最后修改时间 6. **execute_procedure** - 执行存储过程 - 调用指定的存储过程 - 支持传递参数 ## 安装要求 ### 系统要求 - Go 1.21 或更高版本 - 达梦数据库 DM8 - 达梦数据库 Go 驱动 ### 安装步骤 1. **克隆项目** ```bash git clone cd dameng-mcp-server-go ``` 2. **安装依赖** ```bash go mod download ``` 3. **配置环境变量** 复制 `.env.example` 到 `.env` 并修改配置: ```bash cp .env.test.example .env.test ``` 编辑 `.env` 文件: ```env DM_HOST=localhost DM_PORT=5236 DM_USER=SYSDBA DM_PASSWORD=SYSDBA DM_DATABASE=DAMENG ``` 4. **编译项目** ```bash go build -o dameng-mcp-server ``` ## 使用方法 ### 命令行运行 ```bash ./dameng-mcp-server ``` 或者直接运行: ```bash go run main.go ``` ### 在 Claude Desktop 中配置 编辑 Claude Desktop 配置文件: **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Linux**: `~/.config/Claude/claude_desktop_config.json` 添加以下配置: ```json { "mcpServers": { "dameng": { "command": "/path/to/dameng-mcp-server", "env": { "DM_HOST": "localhost", "DM_PORT": "5236", "DM_USER": "SYSDBA", "DM_PASSWORD": "SYSDBA", "DM_DATABASE": "DAMENG" } } } } ``` 或者使用绝对路径到 .env 文件: ```json { "mcpServers": { "dameng": { "command": "/path/to/dameng-mcp-server" } } } ``` 重启 Claude Desktop 即可使用。 ## 项目结构 ``` dameng-mcp-server-go/ ├── config/ # 配置管理 │ └── config.go ├── database/ # 数据库连接管理 │ └── connection.go ├── mcp/ # MCP 协议实现 │ ├── types.go │ └── server.go ├── tools/ # 工具实现 │ ├── tools.go # 工具注册和分发 │ ├── schema.go # 表结构查询 │ └── procedure.go # 存储过程查询 ├── main.go # 主程序入口 ├── go.mod # Go 模块定义 ├── go.sum # 依赖版本锁定 ├── .env.example # 环境变量示例 └── README.md # 项目文档 ``` ## 使用示例 ### 1. 查询数据 ``` 查询所有用户信息: SELECT * FROM USERS WHERE STATUS = 'ACTIVE' ``` ### 2. 获取表结构 ``` 获取 USERS 表的结构信息 ``` ### 3. 列出所有表 ``` 列出 SYSDBA Schema 下的所有表 ``` ### 4. 执行存储过程 ``` 执行存储过程 UPDATE_USER_STATUS,参数:user_id=1, status='INACTIVE' ``` ## 安全建议 1. **使用只读账户** 为安全起见,建议创建一个只读数据库用户: ```sql CREATE USER readonly_user IDENTIFIED BY "SecurePassword123"; GRANT CONNECT TO readonly_user; GRANT SELECT ANY TABLE TO readonly_user; GRANT SELECT ANY DICTIONARY TO readonly_user; ``` 2. **环境变量保护** - 不要将 `.env` 文件提交到版本控制系统 - 使用强密码 - 限制数据库用户权限 3. **网络安全** - 仅在可信网络中使用 - 配置防火墙规则 - 使用 VPN 连接远程数据库 ## 常见问题 ### Q: 连接数据库失败 A: 请检查: - 数据库服务是否启动 - 连接配置是否正确(主机、端口、用户名、密码) - 网络是否可达 - 防火墙设置 ### Q: 查询系统表失败 A: 确保数据库用户有足够的权限: ```sql GRANT SELECT ANY DICTIONARY TO your_user; ``` ### Q: 找不到达梦驱动 A: 确保已安装达梦数据库的 Go 驱动: ```bash go get gitee.com/chunanyong/dm ``` ## 开发 ### 运行测试 ```bash go test ./... ``` ### 代码格式化 ```bash go fmt ./... ``` ### 代码检查 ```bash go vet ./... ``` ## 技术栈 - **Go**: 主要编程语言 - **gitee.com/chunanyong/dm**: 达梦数据库 Go 驱动 - **github.com/joho/godotenv**: 环境变量加载 - **MCP Protocol**: Model Context Protocol 实现 ## 与原版 Node.js 版本的区别 1. **性能**: Go 版本具有更好的性能和更低的内存占用 2. **并发**: 利用 Go 的 goroutine 实现高并发处理 3. **部署**: 编译为单一可执行文件,部署更简单 4. **类型安全**: Go 的静态类型系统提供更好的类型安全 ## 贡献 欢迎提交 Issue 和 Pull Request! ## 许可证 MIT License ## 联系方式 如有问题,请提交 Issue 或联系维护者。 --- **注意**: 本项目基于原 Node.js 版本的达梦数据库 MCP 服务器重构而来。