项目简介

Cortex 是一个使用 Golang 编写的库,旨在帮助开发者快速构建符合 Model Context Protocol (MCP) 规范的服务器。它提供了一套声明式的 API,让开发者能够轻松地定义和管理 资源 (Resources)工具 (Tools)Prompt 模板 (Prompts),并通过标准化的 JSON-RPC 协议与 LLM 客户端进行通信。Cortex 致力于简化 MCP 服务器的开发流程,让开发者专注于业务逻辑的实现,而无需关注底层的协议细节和传输机制。

主要功能点

  • 声明式服务器构建:通过简洁的 Golang 代码声明式地定义 MCP 服务器,降低开发复杂性。
  • 资源管理:支持托管和管理各种类型的资源,并通过 URI 提供数据访问能力。
  • 工具注册与执行:允许注册和执行外部工具,扩展 LLM 的功能,实现与外部世界的交互。
  • Prompt 模板支持:支持定义和渲染 Prompt 模板,实现可定制的 LLM 交互模式。
  • 多传输协议支持:内置支持 STDIO 和 HTTP (SSE) 传输协议,方便在不同场景下部署和使用。
  • 会话管理:服务器端负责管理客户端会话,确保安全可靠的连接。
  • 能力声明:自动生成并声明服务器能力,方便客户端了解服务器的功能。
  • 插件系统:支持通过插件扩展服务器功能,提高灵活性和可扩展性。

安装步骤

  1. 安装 Golang: 确保您的开发环境中已安装 Golang,并且配置了 Go Modules。
  2. 获取 Cortex 库: 使用 'go get' 命令下载 Cortex 库:
    go get github.com/FreePeak/cortex

服务器配置

MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与其建立连接。以下是针对 Cortex 仓库,您可以生成的 MCP 服务器配置信息,以 JSON 格式提供:

1. STDIO 服务器配置:

{
  "serverName": "Echo Server Example",
  "command": "go",
  "args": [
    "run",
    "examples/stdio-server/main.go"
  ],
  "description": "一个简单的 STDIO MCP 服务器示例,提供 echo 工具。",
  "protocol": "stdio"
}

参数注释:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 运行服务器程序的可执行命令,这里是 'go'。
  • 'args': 传递给 'go run' 命令的参数,指定了运行 'examples/stdio-server/main.go' 文件。
  • 'description': 对服务器的简短描述,方便客户端用户理解。
  • 'protocol': 指定使用的协议为 'stdio'。

2. HTTP SSE 服务器配置:

{
  "serverName": "Example SSE MCP Server",
  "command": "go",
  "args": [
    "run",
    "examples/sse-server/main.go"
  ],
  "description": "一个 HTTP SSE MCP 服务器示例,提供 echo 和 weather 工具,默认监听 :8080 端口。",
  "protocol": "http",
  "serverUrl": "http://localhost:8080"
}

参数注释:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 运行服务器程序的可执行命令,这里是 'go'。
  • 'args': 传递给 'go run' 命令的参数,指定了运行 'examples/sse-server/main.go' 文件。
  • 'description': 对服务器的简短描述,方便客户端用户理解。
  • 'protocol': 指定使用的协议为 'http'。
  • 'serverUrl': HTTP 服务器的 URL,默认为 'http://localhost:8080'。

3. 多协议服务器配置 (同时支持 STDIO 和 HTTP):

{
  "serverName": "Multi-Protocol Server",
  "command": "go",
  "args": [
    "run",
    "examples/multi-protocol/main.go",
    "-protocol",
    "http",
    "-address",
    "localhost:8080"
  ],
  "description": "一个多协议 MCP 服务器示例,同时支持 STDIO 和 HTTP 协议,提供 weather 和数据库工具。",
  "protocol": "http",
  "serverUrl": "http://localhost:8080"
},
{
  "serverName": "Multi-Protocol Server (STDIO)",
  "command": "go",
  "args": [
    "run",
    "examples/multi-protocol/main.go",
    "-protocol",
    "stdio"
  ],
  "description": "多协议 MCP 服务器的 STDIO 访问方式,提供 weather 和数据库工具。",
  "protocol": "stdio"
}

参数注释:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 运行服务器程序的可执行命令,这里是 'go'。
  • 'args':
    • 对于 HTTP 协议,参数指定运行 'examples/multi-protocol/main.go' 文件,并使用 '-protocol http -address localhost:8080' 启动 HTTP 服务器。
    • 对于 STDIO 协议,参数指定运行 'examples/multi-protocol/main.go' 文件,并使用 '-protocol stdio' 启动 STDIO 服务器。
  • 'description': 对服务器的简短描述,方便客户端用户理解。
  • 'protocol': 指定使用的协议,分别为 'http' 和 'stdio'。
  • 'serverUrl': HTTP 服务器的 URL,设置为 'http://localhost:8080'。

请注意:

  • 您可以根据需要修改 'serverName' 和 'description' 字段。
  • 'command' 和 'args' 字段需要根据您实际运行 Go 程序的环境进行调整。
  • 如果您需要修改 HTTP 服务器的监听地址,请修改 '-address' 参数。

基本使用方法

  1. 选择示例程序: 在 'examples' 目录下,选择您需要的服务器示例 (如 'stdio-server', 'sse-server', 'multi-protocol')。
  2. 运行服务器: 根据选择的示例,使用 'go run main.go' 命令运行服务器。对于 HTTP 服务器,可能需要指定监听地址和协议等参数。
  3. 配置 MCP 客户端: 在支持 MCP 协议的 LLM 客户端 (例如 Cursor) 中,配置连接到 Cortex 服务器。根据您运行的服务器类型,配置相应的协议 (STDIO 或 HTTP) 和服务器地址。
  4. 与服务器交互: 客户端连接成功后,即可通过客户端界面调用服务器提供的 工具 (Tools)Prompt 模板 (Prompts),利用服务器提供的上下文信息和功能。
  5. 查看日志: 服务器的运行日志会输出到标准输出 (stdout) 或标准错误输出 (stderr),您可以查看日志了解服务器的运行状态和请求处理情况。

信息

分类

开发者工具