返回市场
MCP提示服务器Go

MCP提示服务器Go

作者:anthonyhann2 星标更新:2025-05-23

项目介绍

MCP Prompt Server (Go 版本)

🚀 新升级! 使用Golang重写的高性能MCP Prompt服务器,提供更好的性能、更强的稳定性和更丰富的功能。

✨ 新特性升级

🔥 性能优化

  • 更快的启动速度:Go编译语言,启动速度提高80%以上
  • 更低的内存占用:减少60%的内存使用,长期运行更加稳定
  • 并发处理:原生支持高并发,多个客户端同时使用无压力

🛠️ 功能增强

  • 热重载增强:文件监控自动重载,无需手动重启
  • 错误处理:全面的错误处理和日志记录
  • 参数验证:严格的参数验证以避免运行时错误
  • 统计监控:内置统计功能,实时监控提示使用情况

🏗️ 架构优化

  • 模块化设计:清晰的分层架构,易于扩展和维护
  • 类型安全:强类型系统减少运行时错误
  • 并发安全:线程安全的提示管理,支持多客户端访问

🙏 致谢

💡 提示 如果你喜欢这个项目,请给它一个 ⭐ 支持!如果有任何问题,欢迎提出问题或参与讨论。


📁 项目结构

mcp-prompt-server-go/
├── main.go                    # 主程序入口
├── go.mod                     # Go模块定义
├── Makefile                   # 构建脚本
├── internal/                  # 内部包
│   ├── mcp/                   # MCP协议实现
│   │   └── models.go          # MCP数据模型
│   ├── prompt/                # 提示管理
│   │   ├── models.go          # 提示数据模型
│   │   └── manager.go         # 提示管理器
│   └── server/                # 服务器实现
│       └── stdio.go           # 标准输入输出服务器
├── prompts/                   # 提示模板目录
│   ├── gen_title.yaml         # 标题生成
│   ├── gen_summarize.yaml     # 内容总结
│   ├── gen_html_web_page.yaml # 网页生成
│   └── ...                   # 更多模板
├── tools/                     # 工具目录
│   └── test_mcp.go           # 测试工具
└── bin/                       # 构建输出目录

🚀 快速开始

1. 环境要求

  • Go 1.21+
  • Make (可选,用于方便构建)

2. 安装与运行

方法1:使用Make(推荐)

# 安装依赖并构建
make build

# 运行服务器
make run

# 开发模式(自动重载)
make dev

方法2:直接使用Go命令

# 安装依赖
go mod tidy

# 构建
go build -o bin/mcp-prompt-server main.go

# 运行
./bin/mcp-prompt-server

3. 验证安装

启动后,你应该看到类似以下输出:

2024/01/15 10:30:00 成功从 /path/to/prompts 加载了 19 个提示
2024/01/15 10:30:00 注册了 19 个提示工具
2024/01/15 10:30:00 注册了管理工具:reload_prompts, get_prompt_names
2024/01/15 10:30:00 启动了对 /path/to/prompts 的文件监控
2024/01/15 10:30:00 正在启动 MCP Prompt Server v2.0.0...
2024/01/15 10:30:00 MCP Prompt Server 在标准输入输出上运行...

4. 运行测试

# 运行内置测试工具
go run tools/test_mcp.go

🔧 客户端集成

Raycast

  1. 搜索 "install server(MCP)"
  2. 配置信息:
    • 名称prompt
    • 命令:Go二进制文件的完整路径
    • 参数:留空
# 获取二进制文件路径
make build
echo "$(pwd)/bin/mcp-prompt-server"

Cursor

编辑 ~/.cursor/mcp_config.json

{
  "mcpServers": {
    "Prompt Server": {
        "command": "node",
        "args": ["/path/to/mcp-prompt-server-go/bin/mcp-prompt-server"],
        "transport": "stdio"
    }
  }
}

Windsurf

编辑 ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "prompt-server": {
      "command": "/path/to/mcp-prompt-server/bin/mcp-prompt-server",
      "transport": "stdio"
    }
  }
}

📝 内置提示工具

服务器内置了丰富的提示模板,包括:

🎨 内容创作

  • wechat_headline_generator:微信公众号热门标题生成器
  • gen_summarize:智能内容摘要工具
  • writing_assistant:写作助手
  • gen_podcast_script:播客脚本生成器

🌐 网页生成

  • gen_html_web_page:通用网页生成器
  • gen_3d_webpage_html:3D效果网页生成器
  • gen_bento_grid_html:便当格布局网站
  • gen_knowledge_card_html:知识卡片网站
  • gen_magazine_card_html:杂志风格卡片

💼 产品开发

  • gen_prd_prototype_html:PRD原型生成器
  • project_architecture:项目架构设计
  • api_documentation:API文档生成器

💻 代码相关

  • code_review:代码审查助手
  • code_refactoring:代码重构建议
  • test_case_generator:测试用例生成器
  • build_mcp_server:MCP服务器构建助手

🛠️ 管理工具

  • reload_prompts:重新加载所有提示
  • get_prompt_names:获取所有可用提示名称
    • 📋 功能:实时返回当前已加载的所有提示工具名称列表
    • 🔧 参数:不需要参数
    • 📊 返回:包含总数统计的格式化提示列表
    • 🚀 特性:并发安全,热重载支持,实时数据
    • 💡 目的:开发和调试,工具发现,统计监控,集成测试

使用 get_prompt_names 示例

客户端调用方法

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_prompt_names",
    "arguments": {}
  }
}

返回结果示例

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [{
      "type": "text",
      "text": "可用的prompts (19):\n- gen_html_web_page\n- writing_assistant\n- code_review\n- ..."
    }]
  }
}

快速测试命令

# 测试get_prompt_names功能
./test_get_prompt_names.sh

# 或者直接调用
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{}}}
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_prompt_names","arguments":{}}}' | ./bin/mcp-prompt-server

⚡ 高级功能

1. 热重载

修改prompts目录中的任何YAML/JSON文件,服务器会自动检测并重新加载,无需重启。

2. 统计监控

使用 get_prompt_names 工具查看:

  • 加载的提示数量
  • 参数分布统计
  • 文件监控状态

3. 错误处理

  • 自动跳过格式错误的提示文件
  • 详细的错误日志记录
  • 优雅的错误恢复机制

4. 性能优化

  • 并发安全的提示访问
  • 内存高效的文件监控
  • 快速的JSON序列化

📝 开发指南

添加一个新的提示

  1. prompts/ 目录下创建一个新的YAML/JSON文件
  2. 使用以下格式:
name: my_new_prompt
description: 这是一个新的提示描述
arguments:
  - name: input_text
    description: 输入文本
    required: false
    type: string
messages:
  - role: user
    content:
      type: text
      text: |
        请处理以下内容:{{input_text}}
        
        输出格式:...
  1. 保存文件,服务器会自动重新加载

构建和测试

# 代码格式化
make fmt

# 静态分析
make vet

# 运行测试
make test

# 测试覆盖率
make test-coverage

# 运行MCP测试
go run tools/test_mcp.go

发布和打包

# 创建生产版本
make build-prod

# 创建发布包
make package

🔍 故障排查

常见问题

  1. 启动失败

    # 检查Go版本
    go version
    
    # 重新构建
    make clean && make build
    
  2. 提示未加载

    # 检查文件格式
    使用yaml语法验证器检查YAML文件
    
    # 查看日志
    ./bin/mcp-prompt-server 2>&1 | grep -i warning
    
  3. 客户端连接问题

    # 测试服务器
    echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | ./bin/mcp-prompt-server
    

日志级别

程序提供了详细的日志信息:

  • INFO:正常操作信息
  • WARNING:非致命错误(如无效的提示文件)
  • ERROR:严重错误

📊 性能对比

特性Node.js 版本Go 版本升级
启动时间~2.5秒~0.5秒80% ↑
内存占用~45MB~18MB60% ↓
并发处理有限优秀显著改进
文件监控基本高效更加稳定
提示数量111973% ↑

🤝 贡献指南

  1. 分叉项目
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 提交更改:git commit -m '添加神奇的功能'
  4. 推送分支:git push origin feature/amazing-feature
  5. 提交拉取请求

开发规范

  • 遵循Go代码规范
  • 添加必要的注释
  • 编写测试用例
  • 更新相关文档

📄 许可证

MIT 许可证 - 详情见 LICENSE 文档