项目简介
Plasma 是一个基于 Ruby 的 SDK,旨在帮助开发者以 Rails 框架所倡导的“约定优于配置”方式构建 Model Context Protocol (MCP) 服务器。它提供了一套基础架构,用于管理和提供 LLM 客户端所需的上下文信息和功能,包括托管资源 (Resources)、注册工具 (Tools) 和定义 Prompt 模板 (Prompts)。通过 Plasma,开发者可以更便捷地创建与 LLM 交互的应用后端。
主要功能点
- 组件生成: 提供命令行工具,快速生成 MCP 服务器所需的 Tools(工具)、Prompts(Prompt 模板)和 Resources(资源)等核心组件的代码骨架。
- 数据存储: 内建简单的存储系统,支持持久化存储会话级变量 (Variables) 和通用记录 (Records),为服务器提供数据管理能力。
- MCP 协议支持: 基于 'model_context_protocol' gem 实现,遵循 MCP 规范,通过标准 JSON-RPC 协议与 LLM 客户端通信。
- 传输协议: 当前主要支持 STDIN/STDOUT 传输模式,并计划支持 SSE (Server-Sent Events) 和 WebSocket 等更多传输方式。
- 项目结构约定: 遵循清晰的目录结构约定,帮助组织 Tools、Prompts、Resources、Variables 和 Records 等文件。
安装步骤
-
确保你的系统已安装 Ruby 3.4 或更高版本以及 Bundler。
-
通过 RubyGems 安装 Plasma gem:
gem install plasma-mcp
服务器配置 (面向 MCP 客户端)
LLM 客户端需要配置如何启动 Plasma MCP 服务器进程以便进行通信。典型的 MCP 客户端配置会包含以下信息:
- 'server name': 服务器的名称 (例如:'My Custom Server Name' 或默认的 '<Project Name> MCP Server')
- 'command': 启动服务器的可执行文件路径 (通常是 'plasma' 命令的完整路径)
- 'args': 传递给 'command' 的参数列表 (对于启动服务器,通常是 '["server"]')
- 'protocol': 通信协议 (例如:'stdio' 表示 STDIN/STDOUT)
例如,一个 MCP 客户端的配置可能如下所示(请注意,这是一个概念性的 JSON 结构描述,实际配置方式取决于客户端实现):
{ "server": { "name": "MyServer MCP Server", // 服务器名称,可在config/application.rb中配置 "command": "/path/to/your/plasma", // 你的系统中plasma命令的路径 "args": ["server"], // 启动plasma服务器的参数 "protocol": "stdio" // 使用标准输入输出进行通信 } // 其他可能的客户端配置 }
MCP 客户端将执行指定的 'command' 和 'args' 来启动 Plasma 服务器,然后通过该进程的标准输入和输出来发送和接收 JSON-RPC 消息。
基本使用方法
-
创建新项目: 打开终端,使用 'plasma new' 命令创建一个新的 MCP 服务器项目目录:
plasma new my_server cd my_server -
生成工具 (Tool): 使用 'plasma g tool' 命令生成一个工具,例如一个简单的问候工具:
plasma g tool greeting name:string这会在 'app/tools/' 目录下创建一个 'greeting_tool.rb' 文件,你可以在其中实现工具逻辑。
-
启动服务器: 在项目根目录下,使用 'plasma server' 命令启动 MCP 服务器:
plasma server服务器将以 STDIN/STDOUT 模式运行,等待接收 JSON-RPC 请求。
-
测试交互: 通过标准输入向服务器发送一个 JSON-RPC 请求来调用刚刚生成的工具:
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"greeting","arguments":{"name":"Jean-Luc Picard"}}}服务器将处理请求并通过标准输出返回 JSON-RPC 响应,展示工具执行结果。
关键词
Ruby, LLM后端, 工具调用, 上下文管理, 开发框架
信息
分类
开发者工具