项目简介

这是一个基于 Model Context Protocol (MCP) 的服务器实现。它专注于提供一个接口,允许大型语言模型 (LLM) 客户端通过调用特定的工具来与在线俄罗斯方块编辑器 Fumen (fumen.zui.jp) 进行交互。通过这个服务器,LLM 能够理解并控制 Fumen 中的俄罗斯方块盘面状态。

主要功能点

服务器暴露了一系列工具,使 LLM 客户端能够执行以下操作:

  • 清空盘面: 清除当前帧中的所有方块和障碍物。
  • 获取盘面状态: 获取当前盘面的文本表示,显示方块类型和障碍物的位置。
  • 页面导航: 获取当前页码、总页数,并支持前进、后退或直接跳转到指定页码。
  • 管理页面: 删除当前页码之后的所有页面。
  • 重置: 将整个 Fumen 编辑器状态恢复到初始状态。
  • 生成分享链接: 创建一个当前盘面状态的可分享 Fumen URL。
  • 绘制控制: 设置当前用于绘制方块的颜色类型(对应不同的方块或障碍物),并在指定坐标绘制像素。

安装步骤

  1. 确保您的系统已安装 Node.js (推荐 v18 或更高版本)。
  2. 安装 yarn 包管理器(如果尚未安装):
    npm install -g yarn
  3. 克隆项目仓库:
    git clone https://github.com/EdamAme-x/tetris-mcp.git
  4. 进入项目目录:
    cd tetris-mcp
  5. 安装所有项目依赖:
    yarn install
    安装过程会自动下载 Puppeteer 所需的浏览器(通常是 Chromium),这可能需要一些时间,请耐心等待。

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

为了让支持 MCP 协议的 LLM 客户端能够连接并使用此服务器,您需要为客户端提供服务器的启动命令和元数据。典型的配置信息如下(JSON 格式):

{
  "name": "tetris-mcp-server-jp",
  "command": "yarn",
  "args": ["start"],
  "description": "一个MCP服务器,用于通过LLM控制和操作在线俄罗斯方块编辑器Fumen。",
  "capabilities": {
    "tools": {}
  }
}
  • 'name': 服务器的标识符,由服务器端声明。
  • 'command': 启动 MCP 服务器进程的命令(例如 'node', 'npm', 'yarn', 或服务器的可执行文件路径)。
  • 'args': 传递给 'command' 的命令行参数数组。
  • 'description': 服务器功能的简要描述。
  • 'capabilities': 服务器提供的能力声明,'"tools": {}' 表示服务器提供了工具能力。

请注意:'command' 和 'args' 的具体值应与项目的实际启动脚本配置相符。上述示例假设 'yarn start' 命令被配置用来运行主服务器 ('src/index.ts')。

基本使用方法

  1. 在终端中,进入项目目录并启动服务器:
    yarn start
  2. 服务器启动后,会自动使用 Puppeteer 打开一个浏览器窗口,加载 Fumen 网站。请不要关闭此浏览器窗口,它是服务器与 Fumen 交互的媒介。
  3. 配置您的 LLM 客户端,使用上面提供的 JSON 配置信息连接到此 MCP 服务器。
  4. LLM 客户端现在可以通过调用服务器提供的工具(例如调用 'clearCurrentBoard' 来清空盘面,或调用 'drawPixel' 来在指定位置绘制方块)来与 Fumen 进行交互。
  5. 服务器会执行相应的操作,并通过 MCP 协议向客户端返回操作结果或错误信息。

注意事项

  • 服务器通过控制本地浏览器与 Fumen 网站交互,因此需要在可以运行浏览器并显示图形界面的环境中启动。
  • 如果需要在无头(Headless)环境(如无 GUI 的服务器)中运行,可能需要修改 'src/index.ts' 文件中 Puppeteer 的启动参数,将 'headless: false' 改为 'headless: true'。

信息

分类

网页与API