模型管理TCP服务器

一个基于Rust的TCP服务器,用于处理模型创建协议(MCP)请求,支持模型注册、会话管理和飞行数据获取。

  • by RGGH
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 rggh/mcp-server

使用说明

MCPServer-用于模型管理的简单TCP服务器

该项目实现了一个用Rust编写的基本TCP服务器,使用 tokio 和 reqwest 以处理模型创建协议(MCP)请求。服务器监听传入的连接并处理JSON-RPC请求,以与注册的模型交互、创建会话、生成响应和关闭会话。

特性

  • 模型注册:注册自定义模型处理程序。
  • 会话管理:为每个模型创建、生成和关闭会话。
  • HTTP解析:使用基本的HTTP解析器处理POST请求。
  • 错误处理:出错时返回详细的错误响应。
  • 飞行数据获取:从OpenSky Network API获取并过滤附近的航班数据。

入门指南

先决条件

  • Rust(最新稳定版本)
  • Cargo(Rust包管理器)
  • tokio 用于异步处理
  • reqwest 对于HTTP请求

安装

  1. 克隆存储库:

    git clone https://github.com/your-username/mcp-server.git
    cd mcp-server
    
  2. 安装依赖项:

    cargo build
    
  3. 运行服务器:

    cargo run
    

    服务器将开始监听 127.0.0.1:8080.

结构

  • MCPServer:管理模型和会话的主服务器结构。
  • MCPRequest:表示传入JSON-RPC请求的结构。
  • MCPResponse:表示对JSON-RPC请求的响应的结构。
  • MCPError:表示错误响应的结构。
  • Session:存储会话相关数据的结构。
  • ModelHandler:为处理模型提示的函数键入别名。

示例请求

要与服务器交互,请发送 POST 使用JSON有效载荷进行请求,如下所示:

{
  "id": "1",
  "method": "session.create",
  "params": {
    "model": "example-model"
  }
}

示例响应

服务器将响应如下:

{
  "id": "1",
  "result": {
    "session_id": "uuid-string"
  },
  "error": null
}

支持的方法

  • session.create:为模型创建新会话。
  • session.generate:根据会话从模型生成响应。
  • session.close:关闭现有会话。
  • 模型列表:列出所有已注册的型号。

飞行数据获取

您可以通过拨打 fetch_flight_data 函数,从中提取数据 OpenSky网络 API并过滤半径为1度的飞行。

使用示例 fetch_flight_data:

let lon = -0.1278;  // Longitude of London
let lat = 51.5074;  // Latitude of London
let flight_data = fetch_flight_data(lon, lat).await?;

这将以JSON格式返回附近的航班。

测试

您可以通过以下方式发送JSON-RPC请求来测试服务器 curl 或者使用任何HTTP客户端(例如Postman)。下面是一个使用 curl:

curl -X POST http://127.0.0.1:8080 -d '{"id": "1", "method": "session.create", "params": {"model": "example-model"}}'

模型处理程序示例

提供了一个示例模型处理函数。它只是根据对话历史(上下文)和传入提示生成响应:

fn example_model_handler(prompt: &str, context: &[String]) -> Result<String, Box<dyn Error + Send + Sync>> {
    let context_len = context.len() / 2;
    Ok(format!("Response to: {}. This is turn #{} in the conversation.", prompt, context_len + 1))
}

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。