项目简介

'rails-mcp-playground' 是一个使用 Ruby on Rails 框架构建的 MCP (Model Context Protocol) 服务器实现示例。它展示了如何通过标准化的 JSON-RPC 接口,让大型语言模型 (LLM) 能够与外部应用程序(在此项目中是一个博客系统)进行交互,管理博客文章资源。

主要功能点

  • 文章列表 (List Posts): 允许LLM客户端获取所有博客文章的列表,支持通过搜索关键词过滤、设置返回数量限制、分页偏移量以及按创建时间、更新时间或标题进行升序或降序排序。
  • 文章详情 (Show Post): 根据文章的唯一ID,查询并返回特定博客文章的详细信息,包括标题、描述、创建和更新时间。
  • 创建文章 (Create Post): 使LLM客户端能够发布新的博客文章。调用此工具需要提供文章的标题和描述。
  • 更新文章 (Update Post): 支持LLM客户端修改现有博客文章的标题、描述或两者。需提供文章ID和要更新的字段。
  • 删除文章 (Delete Post): 允许LLM客户端删除指定的博客文章。需提供文章ID。
  • 工具发现 (Tool Discovery): 服务器提供 'tools/list' JSON-RPC 方法,LLM客户端可以借此发现服务器提供的所有可用工具及其功能描述和参数规范。
  • 工具调用 (Tool Invocation): 服务器通过 'tools/call' JSON-RPC 方法执行LLM客户端请求的特定工具操作,并返回结果。

安装步骤

  1. 环境准备: 确保您的系统已安装 Ruby 编程语言和 Ruby on Rails 框架。
  2. 克隆仓库: 使用 Git 将项目仓库克隆到本地:
    git clone https://github.com/ValterAndrei/rails-mcp-playground.git
  3. 进入项目目录:
    cd rails-mcp-playground
  4. 安装依赖: 安装项目所需的 Ruby Gems 包:
    bundle install
  5. 设置数据库: 运行数据库迁移,创建所需的 'posts' 表:
    bin/rails db:setup
  6. 启动Rails服务器: 启动 MCP 服务器,它将监听 '3000' 端口:
    bin/rails server -b 0.0.0.0 -p 3000

服务器配置 (MCP客户端用)

MCP客户端在配置与此服务器的连接时,需要提供以下信息:

  • 服务器名称 (server name): 'blog_mcp'。这是服务器对外声明的唯一标识符。
  • 启动命令 (command): 'bin/rails'。这是执行MCP服务器应用程序的命令行程序。
  • 命令参数 (args): '["server", "-b", "0.0.0.0", "-p", "3000"]'。这些参数会传递给启动命令,用于指定服务器的运行方式,例如绑定所有网络接口 ('0.0.0.0') 和监听端口 ('3000')。
  • MCP接口地址 (endpoint): 'http://localhost:3000/mcp'。这是MCP客户端发送 JSON-RPC 请求到服务器的 URL 路径。

基本使用方法

服务器启动后,MCP客户端(例如一个LLM代理或一个中间件脚本)可以通过向 'http://localhost:3000/mcp' 发送 JSON-RPC 请求来与服务器交互。

  • 示例:列出所有可用工具 客户端发送一个 JSON-RPC 请求到 '/mcp',包含方法 'tools/list':

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

    服务器将返回一个包含所有已注册工具(如 'post-create-tool', 'post-index-tool' 等)及其元数据的 JSON 响应。

  • 示例:创建一个新的博客文章 客户端发送一个 JSON-RPC 请求到 '/mcp',包含方法 'tools/call' 并指定工具名称 'post-create-tool' 和相应参数:

    {
      "jsonrpc": "2.0",
      "id": 2,
      "method": "tools/call",
      "params": {
        "name": "post-create-tool",
        "arguments": {
          "title": "LLM与Rails的集成",
          "description": "本文探讨了如何使用MCP协议将LLM与Ruby on Rails应用程序集成。"
        }
      }
    }

    服务器将执行创建文章操作,并返回一个包含操作结果的 JSON 响应。

客户端可以根据需要调用其他工具(如 'post-index-tool'、'post-show-tool'、'post-update-tool'、'post-delete-tool'),并提供相应的参数来管理博客文章。

信息

分类

开发者工具