法罗-发射器-mcp
pharo-launder-mcp 是用于控制来自主机的 Pharo 发射器的 MCP 服务器 进程.
它暴露出 Pharo 启动器的图像,模板, VM, 以及作为 MCP 的处理操作 工具。 MCP 客户端可以询问它解决了何种启动器安装, 列出 模板、创建或复制图像、启动图像、包图像、检查运行 Pharo 处理,并删除调用器拥有的图像或 VM.
服务器在目标图像外工作. 它不安装代码在这些 图像,保持工程状态,或者决定哪些图像安全可变. 这是 高层工具在需要混凝土时可以调用的发射管边界 图像或进程动作.
安装
所需经费:
- 节点js 22.12.0或更新
npm财务报告和审定财务报表npx- 安装在主机上的 Pharo 发射器
从 npm 安装 :
npm install @evref-bl/pharo-launcher-mcp
通过 stdio 运行 MCP 服务器 :
npx @evref-bl/pharo-launcher-mcp
该套件还提供了 pharo-launcher-mcp 安装在
项目或全球范围.
当作图书馆用
节点呼叫器不需要协议 。 这些工具是功能:
import { openPharoLauncher } from "@evref-bl/pharo-launcher-mcp/launcher";
const launcher = openPharoLauncher();
const running = await launcher.listProcesses();
const images = await launcher.listImages({ nameFilter: "Task" });
每一次通话都直接回答正常发射装置的发射结果,并回答其 ok, (中文(简体) ),
data, (中文(简体) ), diagnostic 财务报告和审定财务报表 command 字段,而不是 MCP 中的 JSON
调用者解析的文本块.
TypeScript 调用器获得这些形状,所以结果不必 在离开途中再次描述:
import type {
LauncherCommandResult,
LauncherImage,
LauncherProcess,
LauncherTemplate,
} from "@evref-bl/pharo-launcher-mcp/launcher";
范围是一个配置,而不是一个过程。 一个在档案通行证内工作的呼叫员 而不是催生一个过程来控制这些 变量 :
const scoped = openPharoLauncher({
env: { PHARO_LAUNCHER_MCP_PROFILE: "isolated", PHARO_LAUNCHER_MCP_STATE_ROOT: stateRoot },
});
MCP服务器是同一功能的适配器,所以是嵌入它的主机 而不是产卵 进口,相反:
import { callTool, createServer } from "@evref-bl/pharo-launcher-mcp";
import { loadPharoLauncherConfig } from "@evref-bl/pharo-launcher-mcp/config";
import { defaultLauncherDir } from "@evref-bl/pharo-launcher-mcp/platform";
可执行文件作为命令可以达到,而不是导入:加载它开始 a 服务器在stdio.
术语
- A 类 Pharo 发射器安装 是应用程序或数据目录, VM 可执行, 控制图像,以及用于运行"发射"命令的发射包.
- A 类 发射器状态范围 是图像, VM, 模板源, init-script,以及受启动器命令影响的日志目录.
- 无显示模式 使用用户正常的 Pharo 启动器安装和 国家范围.
- A 类 法罗-发射器-mcp 剖面 选择一个明确的孤立状态范围 通过环境变量.
- A 类 发射器工具结果 是大多数返回的普通 JSON 信封 工具。 它包括可用时的解析数据、 生 stdout/ stderr、 解析器 状态、命令持续时间、退出代码和超时状态.
快速启动
检查服务器将使用何种安装而不引用 Pharo 启动器 :
npx @evref-bl/pharo-launcher-mcp --health
如果发现路径不正确,请明确设置路径:
PHARO_LAUNCHER_DIR="/path/to/Pharo Launcher"
PHARO_LAUNCHER_VM="/path/to/pharo"
PHARO_LAUNCHER_IMAGE="/path/to/PharoLauncher.image"
npx @evref-bl/pharo-launcher-mcp --health
配置 MCP 客户端启动 stdio 服务器 。 通用 MCP 配置 看起来像这样:
{
"mcpServers": {
"pharo-launcher": {
"command": "npx",
"args": ["-y", "@evref-bl/pharo-launcher-mcp"]
}
}
}
一旦连接,请从这些工具开始:
pharo_launcher_config
pharo_launcher_image_list
pharo_launcher_template_list
pharo_launcher_config 只检查已解析的配置;另两个
越过发射机的边界.
在连接前检查安装是可执行文件的工作,而不是一个
{\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}工具的 {\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}我用工具. pharo-launcher-mcp --health, (中文(简体) ), --version-check, (中文(简体) ),
--validate-installation 财务报告和审定财务报表 --probe-images 每个打印 JSON 并退出.
配置文件快速启动
当自动化或测试需要孤立的发射器状态范围时使用配置文件:
PHARO_LAUNCHER_MCP_PROFILE=isolated
PHARO_LAUNCHER_MCP_STATE_ROOT=/path/to/launcher-profile
npx @evref-bl/pharo-launcher-mcp --health
在配置模式中,pharo-launker-mcp将发射装置控制图像复制到 需要时配置根, 创建配置目录, 并编写启动器 CLI 对图像、VMs、模板、init脚本和日志进行指点的配置 简介。 不描述模式不活动, 除非配置环境之一 变量已经设置.
读取 配置模式 ưμ㼯a 图像创建, 发布, 或清理 .
共同工作流程
列出可用的模板 :
pharo_launcher_template_update
pharo_launcher_template_list
从模板创建图像 :
{
"tool": "pharo_launcher_image_create",
"arguments": {
"templateName": "Pharo 13.0 - 64bit",
"newImageName": "sample-130",
"noLaunch": true
}
}
复制图像 :
{
"tool": "pharo_launcher_image_copy",
"arguments": {
"imageName": "sample-130",
"newImageName": "sample-130-copy"
}
}
启动图像 :
{
"tool": "pharo_launcher_image_start",
"arguments": {
"imageName": "sample-130-copy",
"displayMode": "headless",
"detached": true
}
}
安全模型
变异工具是明确的,并列出它们的行为。 没有 确认论据: 调用工具是决定调用它, 而秒 同一意图的拼写不会保护任何东西.
保护某样东西的是目标. pharo_launcher_process_kill
需要准确的其中之一 pid 或者说 imageName,然后一个 PID 停止此进程
一个人 更喜欢PID 一个分离的发射器返回 当清理一个发射你
拥有的.
pharo_launcher_image_create 财务报告和审定财务报表 pharo_launcher_image_copy 验证目标
图像在启动器报告成功后 。 如果目标图像无法列出
已检查, MCP 结果在命令输出和校验上都存在错误
诊断.
文档
- 开始 覆盖安装, 环境发现,MCP客户端设置,以及首次健康检查.
- 配置模式 解释无可显示模式, 孤立 剖面图、剖面路径、生成的配置和交叉图像 copy.
- 工具参考 列出 MCP 工具、参数, 结果信封和特殊行为.
- 解决问题 普通设置和活的启动器 具体检查失败.
- 发展 覆盖源布局,测试,局部探测器, 和现场测试边界.
- 清理钩子边界 描述状态, 暂停,停止,并清理合同 呼叫者管理现场检查.
来源开发
npm install
npm run check
npm run check 运行类型检查、构建和单位测试。 现场融合测试
它们是单独的,因为它们引用了当地Pharo发射装置:
npm run test:integration