React Native调试服务器

Radon MCP Server是一个为React Native应用提供调试工具的服务器,支持Metro日志查看、模拟器截图和系统健康诊断等功能。

  • by noma4i
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 noma4i/radon-mcp

使用说明

Radon MCP服务器

MCP(模型上下文协议)服务器,用于与Radon IDE集成的React Native调试。

概述

该服务器提供通过Claude Code和其他MCP兼容客户端调试React Native应用程序的工具。它可以自动检测Radon IDE实例,并提供对Metro bundler日志、模拟器屏幕截图和模拟器控制的直接访问。

特性

  • 地铁日志:通过带有过滤和分页功能的CDP WebSocket访问JavaScript控制台输出
  • 截图:从iOS模拟器捕获压缩的JPEG屏幕截图
  • 系统健康:诊断氡IDE和Metro bundler连接
  • 模拟器控制:暗/亮模式、状态栏、URL/深度链接、权限、设备信息
  • npm包信息:从npm注册表中获取包元数据和README
  • 文档链接:生成React Native和Expo文档的链接

需求

  • macOS(使用 xcrun simctl 和 sips 截图)
  • Bun 1.0+
  • 运行iOS模拟器的Radon IDE
  • 使用Metro bundler的React Native应用程序

安装

# Via npm (recommended)
npm install -g @noma4i/radon-mcp

# Or run directly with npx/bunx
npx @noma4i/radon-mcp
bunx @noma4i/radon-mcp

# From source
git clone https://github.com/noma4i/radon-mcp
cd radon-mcp
bun install
bun run build

配置

添加到您的Claude Code MCP配置中(~/.claude.json 或项目 .mcp.json):

{
  "mcpServers": {
    "radon": {
      "command": "bunx",
      "args": ["@noma4i/radon-mcp@latest"]
    }
  }
}

或者使用npx:

{
  "mcpServers": {
    "radon": {
      "command": "npx",
      "args": ["@noma4i/radon-mcp@latest"]
    }
  }
}

工具(11)

调试

view_screenshot

将iOS模拟器的当前屏幕捕获为压缩的JPEG(最大800px,~50-100KB)。

{}

view_application_logs

通过带有过滤和分页功能的CDP WebSocket获取Metro bundler JS控制台日志。

参数 类型 说明
filter string 正则表达式模式到grep日志行(不区分大小写)
last number 过滤后返回最后N行
// All logs (first 50 + last 150 lines)
{}

// Last 50 lines
{last: 50}

// Filter errors
{filter: "error|Error"}

// Last 100 error lines
{filter: "error", last: 100}

检查系统健康

诊断氡IDE和Metro bundler状态。将系统运行状况返回为 healthy, degraded,或 unavailable.

{}

模拟器控制

open_url

在iOS模拟器中打开URL或深度链接。

参数 类型 说明
url string 要打开的url或深度链接(必需)
{url: "myapp://profile/123"}
{url: "https://example.com"}

设置_外观

在暗模式和亮模式之间切换iOS模拟器。

参数 类型 说明
mode 字符串 dark 或 light (必填)
{mode: "dark"}

set_status_bar

覆盖iOS模拟器状态栏以获得一致的屏幕截图。

参数 类型 说明
time string 显示时间(例如,“9:41”)
电池电量 数量 电池百分比(0-100)
cellularBars 数字 蜂窝信号条(0-4)
wifiBars 数字 WiFi信号条(0-3)
{time: "9:41", batteryLevel: 100, wifiBars: 3}

clear_status_bar

将iOS模拟器状态栏重置为默认值。

{}

set_隐私

在iOS模拟器中授予或撤销应用程序权限。

参数 类型 说明
action 字符串 grant, revoke,或 reset (必填)
service string 权限服务:相机、照片、位置、麦克风等。(必填)
bundleId string 应用程序捆绑标识符(必填)
{action: "grant", service: "camera", bundleId: "com.mycompany.myapp"}

get_device_info

返回有关当前iOS模拟器设备的信息(名称、UDID、运行时、状态)。

{}

文档

get_library_description

获取npm包信息,包括元数据、依赖关系和README。

参数 类型 说明
library_npm_name string npm包名(必填)
readmeLimit number 最大README字符数(默认值:5000)
{library_npm_name: "react-native-reanimated"}
{library_npm_name: "expo-camera", readmeLimit: 1000}

查询文档

生成指向React Native或Expo文档的链接。

参数 类型 说明
text string 搜索查询(必填)
源 字符串 react-native, expo,或 both (默认)
{text: "flatlist"}
{text: "camera", source: "expo"}

调试工作流程

  1. check_system_health -验证Radon IDE和Metro连接
  2. view_screenshot -查看当前UI状态
  3. view_application_logs -检查JS控制台是否有错误
  4. 修复代码
  5. 从步骤1开始重复

发展

# Build
bun run build

# Run tests
bun test

# Start server
bun run start

测试

bun test

CI在GitHub Actions上运行(macos最新版本为Bun)。

建筑

Claude Code <--MCP/stdio--> radon-mcp
                              |
         +--------------------+--------------------+
         |                    |                    |
         v                    v                    v
    npm registry        xcrun simctl         Metro CDP/HTTP

服务器自动检测:

  • 设备标识符:从 simulator-server-macos 过程
  • 设备设置:Radon IDE设备目录
  • 地铁港口:来自进程或端口扫描(8081、50377)

输出格式

所有工具返回MCP兼容内容:

// Text response
{
  content: [{ type: 'text', text: '...' }];
}

// Image response (screenshots)
{
  content: [{ type: 'image', data: 'base64...', mimeType: 'image/jpeg' }];
}

日志响应包括摘要标头:

[matched 42 of 1000, last 100 of 42 lines]

<log content>

许可证

麻省理工学院