项目简介
本项目是使用 Go+ 语言开发的 Model Context Protocol (MCP) 服务器构建框架。它提供了一种简洁的方式来定义和实现 MCP 服务器的核心功能,包括资源托管、工具注册和 Prompt 模板管理,使得开发者能够快速构建为大型语言模型 (LLM) 应用提供上下文和功能的后端服务。
主要功能点
- 资源管理: 允许你定义和提供结构化的数据资源,LLM应用可以通过标准URI访问这些资源,获取所需的背景信息或数据。
- 工具集成: 使你能够封装外部服务或函数作为LLM可以调用的工具,扩展LLM的能力范围,执行实际操作或获取实时信息。
- Prompt定义: 提供灵活的方式来构建Prompt模板,根据LLM应用的需要动态生成对话或任务指令。
- 协议支持: 内置支持 Stdio 和 SSE 等传输协议,方便与不同的MCP客户端进行通信。
- Go+ 开发体验: 利用 Go+ 语言的特性,提供比原生 Go 更直观、简洁的语法来声明和实现 MCP 组件。
安装步骤
- 确保你的系统中已经安装了 Go+ (gop) 环境。你可以访问 Go+ 官方网站获取安装指南。
- 创建一个新的 Go+ 项目文件夹,并在其中初始化模块:
mkdir your_mcp_server cd your_mcp_server gop mod init your_module_name - 引入 Go+ MCP 框架作为项目依赖:
gop get github.com/goplus/mcp@latest - 现在你可以在你的项目文件夹中创建 '.gox' 文件,开始编写你的 MCP 服务器代码(例如 'main_mcp.gox', 'my_tool.gox', 'my_resource.gox')。
- 通过运行以下命令构建并启动你的 MCP 服务器:
gop run .
服务器配置
作为 MCP 服务器的开发者,你在代码中定义了服务器的名称、版本以及监听的传输协议(如 Stdio 或 SSE)。LLM 客户端需要知道如何启动你的服务器进程才能与它建立连接。
MCP 客户端通常需要以下配置信息来启动并连接你的服务器:
- 服务器名称: 一个描述性的字符串(例如:"我的知识库服务器")。
- 启动命令 (command): 用于启动服务器进程的可执行文件路径。如果你使用 Go+ 源码直接运行,这个命令可能是 'gop';如果你编译生成了可执行文件,则是该文件的路径。
- 命令参数 (args): 传递给启动命令的参数列表。例如,如果启动命令是 'gop run .',则参数列表为 '["run", "."]'。如果你的服务器可执行文件需要其他命令行参数(例如配置文件路径),也应在此列出。
客户端根据你服务器代码中配置的监听方式(默认 Stdio,或显式指定的 SSE/WebSocket 地址)来建立通信,无需在客户端配置具体的网络地址或端口,客户端只需要知道如何启动服务器进程。
基本使用方法
- 在 '_mcp.gox' 文件中定义你的 MCP 应用入口,使用 'this.Server("服务器名称", "服务器版本")' 进行初始化。
- 在单独的 '.gox' 文件中(如 'your_resource_name_res.gox')实现你的资源处理器,使用 'this.Resource("资源URI模板", "资源名称", func() {...})' 定义资源和元数据,并在 'Main' 函数中返回资源内容。
- 在单独的 '.gox' 文件中(如 'your_tool_name_tool.gox')实现你的工具函数,使用 'this.Tool("工具名称", func() {...})' 定义工具及其输入参数 schema,并在 'Main' 函数中编写工具执行逻辑并返回结果。
- 在单独的 '.gox' 文件中(如 'your_prompt_name_prompt.gox')实现你的 Prompt 模板,使用 'this.Prompt("Prompt名称", func() {...})' 定义 Prompt 及其参数,并在 'Main' 函数中返回 Prompt 描述和消息列表。
- 在实现中,使用 'this.Gop_Env("参数名")' 获取请求中传递的参数值。
- 工具函数和资源处理器应返回符合 MCP 规范的内容对象,可以使用框架提供的辅助函数如 'server.Text(...)', 'server.Number(...)', 'server.NewError(...)' 等来创建不同类型的内容。
信息
分类
开发者工具