项目简介

MCPheonix 是一个使用 Elixir 语言和 Phoenix 框架构建的简化版 Model Context Protocol (MCP) 服务器。它旨在为大型语言模型 (LLM) 客户端提供一个标准化的接口,以便访问应用数据(资源)、调用外部功能(工具)并处理实时事件。项目具备一定的分布式和自愈能力。

主要功能点

  • JSON-RPC 接口: 支持通过标准的 JSON-RPC 2.0 协议接收 LLM 客户端的请求,如读取资源、调用工具等。
  • SSE 实时流: 提供 Server-Sent Events (SSE) 端点,允许客户端订阅实时通知和事件流。
  • 资源管理: 提供一个简单的系统来托管和管理应用可暴露给 LLM 的数据资源。
  • 工具调用: 支持注册和执行外部工具,使 LLM 能够与外部服务或API交互。
  • 事件发布/订阅: 内置事件机制,支持系统内部和可能的客户端之间的事件通信。
  • 集成能力: 集成了 Flux(图像生成)和 Dart(任务管理)等外部服务,展示如何通过 MCP 调用外部能力。
  • 可扩展架构: 设计灵活,易于集成自定义的 MCP 服务器或能力。
  • 分布式与自愈: 利用 Cloudflare Durable Objects 和 Workers 构建分布式、具备一定容错和自愈能力的架构。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/jmanhype/MCPheonix.git
    cd MCPheonix
  2. 安装依赖:
    mix deps.get
  3. 配置 Cloudflare 集成 (可选,如果需要分布式和自愈能力):
    • 根据 'cloudflare/durable-objects-worker.js' 创建并部署 Cloudflare Worker。
    • 设置必要的环境变量('CLOUDFLARE_WORKER_URL', 'CLOUDFLARE_ACCOUNT_ID', 'CLOUDFLARE_API_TOKEN')。
  4. 配置 Flux 和 Dart 集成 (可选,如果需要相关能力):
    • 根据项目文档设置 Flux CLI 环境和 Dart MCP 服务器。
  5. 启动服务器:
    mix phx.server

服务器通常会在 'http://localhost:4001' 启动。

服务器配置

MCPheonix 作为 MCP 服务器运行,主要通过 HTTP/SSE 接口与客户端通信。MCP 客户端需要知道服务器的网络地址和端点信息来建立连接。以下是 MCP 客户端可能用于配置连接到 MCPheonix 服务器的示例信息结构,遵循了 MCP 协议常见的配置格式,尽管对于 HTTP 服务器,客户端主要依赖 URL 而非启动命令:

// MCP 客户端配置示例:如何连接到 MCPheonix 服务器
{
  // 为 MCPheonix 服务器指定一个唯一的标识符
  "id": "mcpheonix_local",

  // MCPheonix 通常作为一个独立的 Web 服务运行,客户端通过网络地址连接。
  // 以下的 command 和 args 字段在某些客户端或管理工具中可能用于描述
  // 如何启动服务器进程(对于基于 Stdio 的服务器),
  // 或者仅作为服务器的元数据。对于 MCPheonix (HTTP/SSE),
  // 客户端连接主要依赖于网络地址。
  "command": "mix", // 示例:启动服务器的命令 (需要先进入项目目录)
  "args": ["phx.server"], // 示例:启动命令的参数

  // 可选的环境变量配置,例如指定服务器监听的端口
  "env": {
    "PORT": "4001" // MCPheonix 默认的 HTTP 端口
  },

  // MCPheonix 服务器暴露的工具列表和描述。
  // 客户端可以通过能力声明 (capability declaration) 获取完整的工具列表。
  // 以下仅为结构示例,实际工具信息应通过协议获取或查阅服务器文档。
  // "tools": {
  //   "get_resource": {
  //     "description": "获取指定资源的内容",
  //     "parameters": [{"name": "resource_id", "type": "string", "description": "资源的唯一标识符"}]
  //   },
  //   // 其他通过 MCPheonix 代理或暴露的工具...
  // }
}

核心连接信息:

  • JSON-RPC Endpoint: 'http://localhost:4001/mcp/rpc' (使用 POST 请求)
  • SSE Stream Endpoint: 'http://localhost:4001/mcp/stream' (使用 GET 请求)
  • Client ID: 可通过 'x-mcp-client-id' HTTP 头提供,或由服务器生成并返回。

基本使用方法

  1. 确保服务器已按照“安装步骤”启动并运行。
  2. 开发或使用兼容 MCP 协议的 LLM 客户端。
  3. 配置客户端,使其通过 'http://localhost:4001/mcp/rpc' 地址发起 JSON-RPC 请求,或通过 'http://localhost:4001/mcp/stream' 连接 SSE 流。
  4. 客户端可以通过 JSON-RPC 请求服务器的能力声明,发现可用的资源和工具。
  5. 客户端可以发送相应的 JSON-RPC 请求来读取资源或调用工具。
  6. 客户端可以监听 SSE 流以接收服务器推送的实时通知或事件。

项目的 '/mcp/rpc' 和 '/mcp/stream' 端点是 LLM 客户端与 MCPheonix 交互的主要入口。具体的请求和响应格式需遵循 Model Context Protocol 规范。

信息

分类

AI与计算