mcpField
P
Phosphor

Phosphor

本地服务
github.com云与基础设施03 周前更新

关于 Phosphor

Phosphor 是一款 macOS 终端应用,通过每台主机的一条 SSH 连接管理终端、Docker、监控、文件和密钥,面向需要集中管理服务器的用户。它也可作为 MCP 服务,让 Agent 按主机策略访问这些能力,并记录调用审计。

主要功能

  1. 01每台主机复用一条 SSH 连接
  2. 02Docker 容器与日志管理
  3. 03系统及容器指标监控
  4. 04SFTP 文件传输与断点续传
  5. 05authorized_keys 查看和编辑
  6. 06按主机策略控制 MCP 操作

适用场景

  1. 01通过一个界面管理多台 SSH 主机
  2. 02检查容器状态并跟踪实时日志
  3. 03传输文件并查看系统资源指标
  4. 04允许 Agent 按策略操作服务器

MCP 相关

Phosphor 内置 MCP 服务,通过 stdio shim 将客户端请求转发给正在运行的应用,提供主机、指标、容器、日志、命令和密钥管理工具。主机默认禁用,可配置只读、确认或完全访问模式;写入需人工决策,操作记录在审计日志中。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbphosphor-mcp-0.3.0.mcpb0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Phosphor

一款也能运行服务器的 macOS 终端。

Shell、Docker、指标、密钥和文件——每台主机只需一个 SSH 连接。 用指纹解锁。黑底绿字,这才是它应有的样子。

SSH 客户端 · Docker 管理器 · 服务器监控 · SFTP · authorized_keys 编辑器 · 适用于 Claude Code 和 Claude Desktop 的 MCP 服务 · macOS 26 · Swift 6 · MIT

终端


问题所在

你要开着四个窗口才能完成一项工作。一个终端用来运行 Shell。另一个 终端用来运行 docker logs -f。第三个用来运行 htop。还有一个浏览器标签页, 打开有人在服务器上安装的某个仪表盘。它们各自单独登录,每次都要再次输入 密钥口令,而且彼此都不知道对方正在查看什么。

Phosphor 每台主机只打开一个 SSH 连接,并通过它复用所有功能——交互式 Shell、容器日志、docker 命令、/proc 快照、SFTP 传输和端口转发。一次登录。通过代理的一条隧道。 状态集中于一处。

而且,由于这些状态已经保存在应用中,它还提供了一个 MCP 服务: Claude Code 和 Claude Desktop 可以通过你的连接、密钥和访问策略使用你的服务器, 每次调用都会写入审计日志。


功能

无需离开终端即可管理 Docker

Docker

容器列表位于侧边栏中,无需打开单独的应用。通过已有的 SSH 连接查看详情、统计数据、挂载项、环境变量和实时日志,并支持 --tail 和筛选条件。 名称看起来像机密的环境变量(PASS、KEY、TOKEN、SECRET)会在界面中屏蔽, 且绝不会复制到审计日志中。

无需开放 Docker Engine API,也无需创建套接字隧道:Phosphor 会调用 docker 并使用 JSON 输出,适用于所有已运行 Docker 的服务器。

只占用一个通道的指标

指标

各核心负载、单独列出缓存的内存数据、磁盘、网络,以及每个容器的 CPU 和内存—— 均来自通过单个长连接通道获取的 /proc 快照。无需在服务器上安装 Agent, 也无需大量 exec 通道。窗口隐藏时会停止轮询,并且每个缓冲区都有容量上限。

主机、分组和标签

主机

每台主机一个分组,标签数量不限。分组包含设置——如何连接、使用哪个密钥、 采用哪种主题、MCP 可以执行哪些操作;标签则仅用于查找。导入 ~/.ssh/config 后即可继续使用。

使用指纹解锁

Touch ID

Phosphor 没有自己的账户或密码。这台 Mac 上有一个配置档,用你的指纹即可打开。 密码、口令和 TOTP 种子都保存在生物识别保护的 Keychain 中;密钥可以保存在 Secure Enclave 中,完全无法从这台机器复制出去。执行有风险的操作时需要再次确认。

按照方案配置新服务器

配置

连接到一台新服务器后,Phosphor 会检查它:安装了哪些软件、有哪些服务正在监听、 之前是否有人使用过。如果服务器是空的,它会提供一个方案——安装软件包并启用无人值守升级、 安装 Docker 并设置日志大小上限、配置 nginx、certbot,以及只开放 22/80/443 的防火墙, 最后禁用密码登录。每一步都可重复执行,每一步都会显示确切命令;防止锁定的保护机制会确保 只有在通过密钥建立第二个连接并确认一切正常后,才关闭密码登录。

一目了然的密钥

密钥

将 authorized_keys 显示为表格,而不是文本文件:本地计算指纹、标记较弱的 RSA 密钥、 显示选项,并将已禁用的条目保留为注释。当前连接所用的密钥无法在未明确确认的情况下删除, 写入采用原子操作,并会在服务器上保留备份。

双侧文件

SFTP

两个窗格,可在窗格间拖动文件,也可以从 Finder 拖入。共用同一个 SSH 连接和代理。传输中断后,重新开始会从停止的位置继续。

打造专属体验

Theme

主题采用 themes/ 中的纯 JSON 文件——可纳入 git 管理、与他人分享,也可导入 .itermcolors、alacritty 和 base16。可设置调色板、字体、连字、行高、背景图片、扫描线、辉光、暗角和窗口不透明度。将主题绑定到分组,让生产环境一眼就能认出是红色。

角落里还有一只猫,或者一只蜜袋鼯。应用锁定时它会睡觉,绝不会遮挡你的输出,还可以用一个开关永久关闭它。


让 Agent 访问你的服务器,而不交出密钥

Phosphor 也是一个 Model Context Protocol 服务。只需注册一条命令,Claude Code、Claude Desktop、Cursor 或任何其他 MCP 客户端就能列出你的主机、读取指标、检查容器、跟踪日志;并且在你允许时,运行命令、重启容器、管理 authorized_keys,以及在你自己的列表中添加、更改或移除主机。在任何模式下,凡是会编辑列表的操作都会先征求你的同意。

与把 shell 交给模型不同:连接由应用持有,Agent 什么也拿不到。

使用原始 ssh 的 Shell 工具MCP 配置中的凭据Phosphor
密钥存放位置磁盘上,Agent 可读取磁盘上,Agent 可读取钥匙串 / 安全隔区,由 Touch ID 保护
可访问范围所有内容所有内容仅限你启用的主机,以及你设定的模式
rm -rf /会执行会执行会被拒绝列表拦截,该列表优先于所有模式
人工介入无无每次写入都需确认,授权 15 min 后过期
事后记录Shell 历史记录,可能有无只有审计日志,没有写入工具
输出中的机密屏幕上显示的任何内容屏幕上显示的任何内容在模型看到之前先行屏蔽
失控循环不受限制不受限制写入操作受速率限制
claude mcp add phosphor /Applications/Phosphor.app/Contents/MacOS/phosphor-mcp

在 MCP 注册表中的标识为 io.github.Kirusshenkin/phosphor;每个版本也会附带一个 .mcpb 捆绑包,并发布 SHA-256 校验和,供通过这种方式安装的客户端使用。

共 13 个工具,其中 7 个为只读。每台主机初始均为 disabled——只有为其选择 read-only、confirm 或 full 后,才能访问;生产服务器应保持 read-only。遭到入侵的服务器可以在模型读取的日志行中写入任意内容,但仍无法自行授予模式、绕过拒绝列表,也无法抹去尝试操作的记录。

完整详情:docs/MCP.md ——工具目录、策略、审计,以及应用关闭、锁定或拒绝请求时 Agent 收到的确切错误。

原则

不做集成。 应用唯一的网络流量是连接到你自己服务器的 SSH 流量和更新源。没有遥测、没有账户、没有第三方服务,也不会偷偷回传数据。

机密始终保密。 绝不会出现在日志行、崩溃报告、MCP 审计条目或错误消息中。默认不会将终端滚动缓冲区写入磁盘。

错误会告诉你该怎么做。 “无法连接”是个缺陷。“127.0.0.1:10808 上的代理未响应——V2Box 是否正在运行?”才是错误消息。应用会区分代理失效、服务器不可达和凭据遭拒,否则诊断就只能靠猜。

全天运行依然迅速。 网络字节会先按约 16 ms 的时间窗口批量处理,再送入模拟器;绘制路径不会分配内存,所有缓冲区都有上限;窗口不可见时会停止轮询;动画只会操作 transform 和 opacity。

严格遵循 Swift 6 并发模型,适用于每个目标,没有任何绕行手段。网络、解析和磁盘操作都在 actor 中执行;只有视图模型位于主 actor 上。

支持两种语言。 英语和俄语,均通过 String Catalog 实现。没有任何硬编码的界面字符串——并由检查器进行检查。


状态

可构建、可运行,179 项测试全部通过。共 11 个界面:锁定、主机、带持久会话的终端、文件、Docker、监控、密钥、配置、AI 活动和设置。界面支持俄语和英语。

在真实服务上可用的功能:每台主机通过一个复用连接进行 SSH 通信、列出容器并执行操作及流式传输日志、读取 /proc 指标、读取和编辑 authorized_keys、配置配方、双面板文件浏览,以及通过同一套接字连接的交互式 Shell。

MCP 端到端可用:软件包内置 phosphor-mcp 适配程序,通过 stdio 使用 JSON-RPC,并代理到应用管理的本地套接字。每台主机默认禁用;写入操作需要由用户决定;拒绝列表优先于所有模式;审计日志没有写入工具——模型可以执行操作,但无法抹去痕迹。

主机可从 ~/.ssh/config、known_hosts 和 Termius 密钥库导入。导入完成后,密钥库的明文导出文件会被删除。

尚未实现的功能:原生 Citadel 传输方式(基于进程的方式已经过测试且可正常运行)、角落里的小宠物,以及通过 Sparkle 进行应用内更新。

空闲时 CPU 使用率为零——没有计时器;窗口位于后台时会暂停轮询。

安装

curl -fsSL https://github.com/Kirusshenkin/terminalOs/releases/latest/download/Phosphor.zip -o Phosphor.zip
unzip -q Phosphor.zip -d /Applications
xattr -dr com.apple.quarantine /Applications/Phosphor.app

或者从发布页面下载 Phosphor.zip,并将应用拖到“应用程序”文件夹中。

**macOS 首次启动时会发出警告。**该应用使用临时签名——没有 Apple Developer 证书——因此从互联网下载的内容都会被隔离。这不是损坏:

  1. 双击应用,关闭警告。
  2. 打开“系统设置”→“隐私与安全性”→向下滚动→仍要打开。
  3. 确认。之后不会再提示。

上面的 xattr 命令可以一步完成同样的操作。

每个版本都会附带 SHA256SUMS.txt;使用 shasum -a 256 -c SHA256SUMS.txt 验证。

目前还没有应用内更新程序——请查看发布页面。当前运行的版本可在“关于”面板中查看。

开始使用

首次运行指南:docs/GUIDE.ru.md (俄语)、docs/GUIDE.en.md(英语)。

面向 AI Agent

每个版本都附带 latest.json,无需抓取网页:

curl -fsSL https://github.com/Kirusshenkin/terminalOs/releases/latest/download/latest.json
{
  "version": "0.1.0",
  "url": "https://github.com/.../Phosphor-0.1.0.zip",
  "sha256": "…",
  "mcp": { "command": "/Applications/Phosphor.app/Contents/MacOS/phosphor-mcp",
           "transport": "stdio" }
}

软件包内含一个 MCP stdio 适配程序。注册后,Phosphor 即可提供其工具:

{
  "mcpServers": {
    "phosphor": {
      "command": "/Applications/Phosphor.app/Contents/MacOS/phosphor-mcp"
    }
  }
}

适配程序通过用户主目录中的 Unix 套接字与运行中的应用通信;它本身不携带任何凭据。如果应用已关闭或已锁定,适配程序会说明情况,且所有工具调用都会默认拒绝——MCP 访问默认关闭,必须在应用中按会话授权,并通过指纹确认。

发布

打标签并推送:

git tag v0.1.0 && git push origin v0.1.0

.github/workflows/release.yml 会运行测试,然后执行 .github/scripts/package.sh——本地也使用同一脚本,因此始终可以在自己的机器上复现发布结果:

MARKETING_VERSION=0.1.0 BUILD_NUMBER=1 ./.github/scripts/package.sh

脚本会生成 dist/Phosphor-<version>.zip、一个名为 Phosphor.zip 的副本(/releases/latest/download/ 路径只支持完全匹配的文件名)、SHA256SUMS.txt 和 latest.json。发布前,工作流会再次解压归档文件并对其运行 codesign --verify:如果签名在解压后无法保留,该软件包就无法在任何人的机器上打开。

构建

需要 macOS 26+ 和 Swift 6.3 工具链。

git clone https://github.com/Kirusshenkin/terminalOs.git
cd terminalOs
swift build
swift test
./.github/scripts/check.sh     # format, lint, build, tests — before every commit
git config core.hooksPath .github/hooks   # once: blocks commits with real addresses or keys

目录结构

Sources/          PhosphorCore, VaultKit, HostsKit, SSHKit, DockerKit,
                  MetricsKit, KeysKit, ThemeKit, ProvisionKit, PhosphorUI
design/           UI artboards (.dc.html), one per screen
docs/PLAN.md      The full architecture plan, in Russian
docs/images/      Screenshots rendered from the artboards

参与贡献

先制定计划——所有需求都必须先写入 docs/PLAN.md,再开始编写代码。提交拉取请求前,请了解以下约定:代码、名称和提交消息使用英语;用户可见的字符串必须通过 Strings 同时提供英语和俄语版本,绝不硬编码;每个目标都必须遵循严格的 Swift 6 并发规则;不得吞掉错误,每条消息都必须说明发生了什么以及该怎么做;日志、错误和审计记录中不得包含机密;缓冲区必须有上限,绘制路径中不得分配内存。

安全

请私下报告漏洞——参见 SECURITY.md。 威胁模型见 docs/PLAN.md §15。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。