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"}调试工作流程
check_system_health-验证Radon IDE和Metro连接view_screenshot-查看当前UI状态view_application_logs-检查JS控制台是否有错误- 修复代码
- 从步骤1开始重复
发展
# Build
bun run build
# Run tests
bun test
# Start server
bun run start测试
bun testCI在GitHub Actions上运行(macos最新版本为Bun)。
建筑
Claude Code 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]
许可证
麻省理工学院
