项目简介

GoMCP 是一个强大的Go语言库,旨在实现 Model Context Protocol (MCP) 的标准。它提供了构建 MCP 服务器和 MCP 客户端所需的核心组件和功能,使得AI语言模型/代理能够通过结构化的方式与外部数据、工具和功能进行交互。

GoMCP库支持多个版本的MCP规范,并提供了多种通信传输协议的实现。

主要功能点

  • 完全兼容MCP规范: 支持 MCP 2025-03-26 和 2024-11-05 规范,并自动协商协议版本。
  • 多种传输协议: 内建支持通过标准输入/输出 (Stdio)、Server-Sent Events (SSE) + HTTP POST、WebSocket 以及 TCP 进行通信。
  • 核心MCP特性: 全面实现了工具调用、资源访问(列表、读取、订阅)、Prompt模板(列表、获取)、日志、进度报告、取消、Client Roots、通知等功能。
  • 扩展性: 提供全面的钩子 (Hooks) 系统,允许在服务器或客户端处理生命周期的各个阶段注入自定义逻辑,例如实现认证和授权。
  • 辅助工具: 包含简化参数解析、进度报告、JSON Schema生成等开发任务的实用工具。

安装步骤

使用 Go Modules 安装 GoMCP 库:

go get github.com/localrivet/gomcp

服务器配置

GoMCP库用于构建MCP服务器可执行程序。MCP客户端通常需要配置启动MCP服务器进程所需的命令及参数,然后通过标准输入/输出(Stdio)或网络连接(如SSE/HTTP、WebSocket)进行通信。

以下是使用GoMCP构建的示例服务器(如'examples/cmd/server/main.go'编译后的可执行文件)的客户端配置信息(JSON格式)示例。请根据您实际构建和部署的服务器可执行文件进行调整。

{
  "server name": "您的MCP服务器名称",
  "command": ["go", "run", "/path/to/your/server/main.go"],
  "args": [],
  "transport": {
    "type": "stdio"
  }
}
  • 'server name': 您的MCP服务器的标识名称。
  • 'command': 启动MCP服务器可执行文件的命令和参数列表。上面的示例假设您使用 'go run' 直接运行示例源代码,'/path/to/your/server/main.go' 应替换为您实际的文件路径。如果您编译了服务器为单独的可执行文件(例如 'my_mcp_server'),则命令可能为 '["/path/to/my_mcp_server"]','args' 为空或包含服务器启动参数。
  • 'args': 传递给 'command' 的命令行参数列表。
  • 'transport': 配置客户端与服务器通信的传输协议。
    • 'type': 传输协议类型,可以是 '"stdio"'、'"sse"' 或 '"websocket"'。
    • 对于 '"stdio"',无需额外配置。
    • 对于 '"sse"' 或 '"websocket"',需要指定服务器的网络地址:
      "transport": {
        "type": "sse",
        "base_url": "http://127.0.0.1:8080",
        "base_path": "/mcp"
      }
      'base_url' 是服务器监听的HTTP/HTTPS地址(对于SSE)或WS/WSS地址(对于WebSocket)。'base_path' 是MCP服务的根路径。
       "transport": {
         "type": "websocket",
         "base_url": "ws://127.0.0.1:8080",
         "base_path": "/mcp"
       }

基本使用方法

开发者可以使用 GoMCP 库来构建自己的 MCP 服务器:

  1. 创建服务器实例: 使用 'server.NewServer("YourServerName", server.WithLogger(yourLogger))' 创建一个 'server.Server' 核心实例。
  2. 注册功能: 使用 'server.AddTool'、'server.AddResource'、'server.AddPrompt' 等辅助函数(或直接使用 'srv.RegisterTool' 等方法)注册您希望暴露给客户端的工具、资源和 Prompt。
  3. 选择并运行传输协议: 根据需求选择合适的传输协议,并调用对应的 'server' 包中的帮助函数来启动服务器监听:
    • 'server.ServeStdio(srv)': 通过标准输入/输出运行服务器。
    • 'server.ServeSSE(srv, "监听地址", "基础路径")': 通过SSE/HTTP运行服务器。
    • 'server.ServeWebSocket(srv, "监听地址", "路径")': 通过WebSocket运行服务器。
    • 或者,您可以将 'server.Server' 实例与您选择的HTTP框架(如Gin, Chi, Echo, etc.)或TCP监听器集成,调用 'srv.HandleMessage' 方法处理传入的原始消息。

示例代码可以在 'examples/' 目录下找到,展示了如何使用 GoMCP 构建不同功能和传输协议的服务器。

信息

分类

AI与计算