使用说明

项目简介

Scaled MCP Server 是一个使用 Go 语言开发的库,用于构建可水平扩展的 MCP (Model Context Protocol) 服务器。它实现了 MCP 2025-03 规范,旨在为大型语言模型 (LLM) 应用提供可扩展、安全的上下文服务框架。该库可以嵌入到您的 Go 应用程序中,并支持负载均衡部署。

主要功能点

  • 资源管理: 托管和管理各种资源,例如文本、代码、文档等,并提供数据访问能力。
  • 工具注册与执行: 允许注册和执行外部工具,使 LLM 能够调用外部功能,例如计算器、天气查询等。
  • Prompt 模板: 支持定义和渲染 Prompt 模板,实现可定制的 LLM 交互模式。
  • HTTP 传输: 提供灵活的 HTTP 传输方式,包括主 '/mcp' 端点和可选的 SSE 端点。
  • 会话管理: 支持分布式会话管理,可以使用 Redis 或内存存储。
  • 水平扩展: 支持在多节点上进行负载均衡部署,提高服务器的可用性和性能。

安装步骤

  1. 确保已安装 Go 1.24 或更高版本。

  2. 使用 'go get' 命令安装 scaled-mcp 库:

    go get github.com/traego/scaled-mcp@latest

服务器配置

MCP 服务器的配置主要通过代码进行,以下是一个基本的配置示例(JSON 格式,用于描述 MCP 服务器的启动配置,并非配置文件):

{
  "server name": "Example MCP Server",
  "command": "./your-server-binary",
  "args": []
}

配置参数说明:

  • 'server name': 服务器的名称,可以自定义,用于标识服务器实例。例如: '"Example MCP Server"'。
  • 'command': 启动 MCP 服务器的可执行文件路径。例如,如果您将服务器代码编译为名为 'scaled-mcp-server' 的可执行文件,则此处应填写 '"./scaled-mcp-server"'。
  • 'args': 启动服务器可执行文件时需要传递的命令行参数,以字符串数组形式提供。在基础使用场景中,通常无需额外参数,可以留空 '[]'。更复杂的配置可以通过代码或环境变量实现。

注意: Scaled MCP Server 的配置主要通过 Go 代码完成,例如在 'main.go' 文件中创建和配置 'server.NewMcpServer' 实例。上述 JSON 格式的配置信息仅为描述 MCP 服务器的启动方式,在实际部署 MCP 客户端时可能需要提供类似的信息,以便客户端能够正确连接和调用服务器。

基本使用方法

  1. 创建 MCP 服务器实例: 在 Go 代码中,使用 'server.NewMcpServer(cfg, ...options)' 创建 MCP 服务器实例,'cfg' 为服务器配置,'options' 可以配置工具注册表、Prompt 注册表、资源注册表等。
  2. 注册工具、Prompt 和资源: 使用静态或动态注册表注册工具 (Tools)、Prompt 模板 (Prompts) 和资源 (Resources),并实现相应的处理函数。示例代码中提供了静态注册和动态注册的例子。
  3. 启动服务器: 调用 'srv.Start(context.Background())' 启动 MCP 服务器。
  4. 客户端交互: MCP 客户端可以通过 JSON-RPC 协议与服务器通信,发送请求(例如 'tools/list', 'prompts/get', 'resources/read')并接收响应。可以使用 'test/harness/mcp_test_harness.go' 中的 'MCPTestClient' 进行测试和交互。

示例客户端请求 (JSON-RPC):

{
  "jsonrpc": "2.0",
  "id": "1",
  "method": "tools/list",
  "params": {}
}

请参考仓库中的 examples 目录获取更详细的使用示例,例如:

  • 'examples/static_tool_server': 静态工具注册服务器示例
  • 'examples/dynamic_tool_server': 动态工具注册服务器示例
  • 'examples/minimal_server': 最小化 MCP 服务器示例
  • 'examples/clustered_server': 集群部署的 MCP 服务器示例

信息

分类

AI与计算