项目简介

本项目是使用 Go+ 语言开发的 Model Context Protocol (MCP) 服务器构建框架。它提供了一种简洁的方式来定义和实现 MCP 服务器的核心功能,包括资源托管、工具注册和 Prompt 模板管理,使得开发者能够快速构建为大型语言模型 (LLM) 应用提供上下文和功能的后端服务。

主要功能点

  • 资源管理: 允许你定义和提供结构化的数据资源,LLM应用可以通过标准URI访问这些资源,获取所需的背景信息或数据。
  • 工具集成: 使你能够封装外部服务或函数作为LLM可以调用的工具,扩展LLM的能力范围,执行实际操作或获取实时信息。
  • Prompt定义: 提供灵活的方式来构建Prompt模板,根据LLM应用的需要动态生成对话或任务指令。
  • 协议支持: 内置支持 Stdio 和 SSE 等传输协议,方便与不同的MCP客户端进行通信。
  • Go+ 开发体验: 利用 Go+ 语言的特性,提供比原生 Go 更直观、简洁的语法来声明和实现 MCP 组件。

安装步骤

  1. 确保你的系统中已经安装了 Go+ (gop) 环境。你可以访问 Go+ 官方网站获取安装指南。
  2. 创建一个新的 Go+ 项目文件夹,并在其中初始化模块:
    mkdir your_mcp_server
    cd your_mcp_server
    gop mod init your_module_name
  3. 引入 Go+ MCP 框架作为项目依赖:
    gop get github.com/goplus/mcp@latest
  4. 现在你可以在你的项目文件夹中创建 '.gox' 文件,开始编写你的 MCP 服务器代码(例如 'main_mcp.gox', 'my_tool.gox', 'my_resource.gox')。
  5. 通过运行以下命令构建并启动你的 MCP 服务器:
    gop run .

服务器配置

作为 MCP 服务器的开发者,你在代码中定义了服务器的名称、版本以及监听的传输协议(如 Stdio 或 SSE)。LLM 客户端需要知道如何启动你的服务器进程才能与它建立连接。

MCP 客户端通常需要以下配置信息来启动并连接你的服务器:

  • 服务器名称: 一个描述性的字符串(例如:"我的知识库服务器")。
  • 启动命令 (command): 用于启动服务器进程的可执行文件路径。如果你使用 Go+ 源码直接运行,这个命令可能是 'gop';如果你编译生成了可执行文件,则是该文件的路径。
  • 命令参数 (args): 传递给启动命令的参数列表。例如,如果启动命令是 'gop run .',则参数列表为 '["run", "."]'。如果你的服务器可执行文件需要其他命令行参数(例如配置文件路径),也应在此列出。

客户端根据你服务器代码中配置的监听方式(默认 Stdio,或显式指定的 SSE/WebSocket 地址)来建立通信,无需在客户端配置具体的网络地址或端口,客户端只需要知道如何启动服务器进程。

基本使用方法

  1. 在 '_mcp.gox' 文件中定义你的 MCP 应用入口,使用 'this.Server("服务器名称", "服务器版本")' 进行初始化。
  2. 在单独的 '.gox' 文件中(如 'your_resource_name_res.gox')实现你的资源处理器,使用 'this.Resource("资源URI模板", "资源名称", func() {...})' 定义资源和元数据,并在 'Main' 函数中返回资源内容。
  3. 在单独的 '.gox' 文件中(如 'your_tool_name_tool.gox')实现你的工具函数,使用 'this.Tool("工具名称", func() {...})' 定义工具及其输入参数 schema,并在 'Main' 函数中编写工具执行逻辑并返回结果。
  4. 在单独的 '.gox' 文件中(如 'your_prompt_name_prompt.gox')实现你的 Prompt 模板,使用 'this.Prompt("Prompt名称", func() {...})' 定义 Prompt 及其参数,并在 'Main' 函数中返回 Prompt 描述和消息列表。
  5. 在实现中,使用 'this.Gop_Env("参数名")' 获取请求中传递的参数值。
  6. 工具函数和资源处理器应返回符合 MCP 规范的内容对象,可以使用框架提供的辅助函数如 'server.Text(...)', 'server.Number(...)', 'server.NewError(...)' 等来创建不同类型的内容。

信息

分类

开发者工具