MCP服务器示例
连接到PostgreSQL数据库的示例MCP(模型上下文协议)服务器。
概述
它使用Go with GORM进行数据库操作,使用PostgreSQL进行数据存储。
特性
- 帐户管理(创建、读取、更新、删除)
- 类别管理(创建、读取、更新、删除)
- 交易跟踪(创建、读取、更新、删除)
- 交易汇总(金额、按账户计数)
项目结构
compose/-Docker编写本地开发配置db/-数据库相关代码
- entity/ -数据模型定义 - migrations/ -数据库迁移脚本 - repository/ -数据访问层实现
pkg/-共享包和实用程序vendor/出售依赖关系
数据模型
应用程序使用以下数据模型:
- 账户:表示具有ID、名称和类型的金融账户
- 类别:表示具有ID、名称和类型的事务类别
- 交易:表示财务交易,包括金额、日期、描述以及与账户的关系
分类
先决条件
- 转到1.24或更高(如Go.mod中指定的)
- 法师 生成工具
- Docker和Docker Compose
- PostgreSQL(或使用提供的Docker设置)
安装Mage
要安装Mage,请运行:
go install github.com/magefile/mage@vlatest确保Go bin目录在您的PATH中。
入门指南
使用Docker进行设置
- 克隆存储库
- 启动PostgreSQL数据库:
mage docker:up- 构建并运行应用程序:
mage build发展模式
要在开发模式下启动应用程序:
mage dev这将构建应用程序并启动所需的Docker服务。
测试
运行单元测试
mage test运行集成测试
mage integrationtest这将启动所需的Docker服务,等待PostgreSQL初始化,并运行集成测试。
构建命令
此项目使用 法师 用于构建自动化。可用命令:
mage build-使用GoReleaser构建应用程序mage compilebuild-使用标准Go Build构建mage test-运行单元测试mage integrationtest-运行集成测试mage lint-运行门楣mage dev-构建并启动Docker服务mage docker:up-启动Docker服务mage docker:down-停止Docker服务mage docker:logs-显示Docker日志mage docker:restart-重启Docker服务mage clean-清理构建工件
配置
配置文件
该应用程序可以使用 config.yml 文件。配置文件可以放置在与二进制文件相同的目录中,也可以使用 MCP_SERVER_CONFIG 环境变量。
示例配置文件提供在 config.yml.sample。您可以将此文件复制到 config.yml 并根据您的需要进行修改。
# Copy the sample configuration file
cp config.yml.sample config.yml
# Edit the configuration file
nano config.yml环境变量
您可以使用指定配置文件的路径 MCP_SERVER_CONFIG 环境变量:
export MCP_SERVER_CONFIG=/path/to/your/config.yml数据库配置
PostgreSQL数据库配置了以下默认设置:
- 类型:POSTGRES(也支持MYSQL和MSSQL)
- 主机:localhost(或Docker网络中的postgres)
- 端口: 5432
- 用户认可的:
- 密码:本地主机
- 数据库:mcp_db
- 超时:3秒
- 最大空闲连接数: 5
- 最大打开连接数: 10
许可证
该项目根据麻省理工学院许可证获得许可,详情见下文:
MIT License
Copyright (c) 2025 Sample MCP Server
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.