Skip to main content
Glama

Fermi

一个可移植的 AI 控制平面,构建为 Cloudflare Workers 上的单个 MCP 服务器。将其连接到 Claude.ai、Claude Desktop、Claude Code、Cursor 或 ChatGPT,它们共享相同的记忆、相同的权限模型和相同的技能。对于无人值守的渠道(Telegram、Slack),它针对 Anthropic API 运行自己的推理循环。

一个服务器、一个记忆、一个权限脊柱——主机改变,代理不变。

深入架构:docs/ARCHITECTURE.md。 设置和日常使用:docs/USAGE.md。

功能

  • 跨主机记忆 — 事实、偏好和事件存储在 D1 中,可从任何连接的主机中回忆。夜间任务总结会话,通过嵌入相似性去重近乎相同的记忆,并衰减过时的记忆。

  • 技能 — 以版本化的 SKILL.md 文档存储在 R2 中,元数据存储在 D1 中。您可以直接编写它们,或从记忆中提升;每周任务从最近的会话摘要中提出草稿技能供您完善。

  • 权限脊柱 — 每个工具都声明一个范围和风险级别。高风险工具需要两阶段批准令牌。变更工具在计划模式下被阻止。Shell 代码根据阻止列表进行筛选。每次调用都会审计到 D1。

  • 钩子 — 声明式、全局匹配的拒绝门,在工具之前运行,以 deny > ask > allow 优先级评估(目前 deny 是强制执行的决策)。

  • 统一搜索 — 对能力、技能、记忆和消息历史进行 Reciprocal Rank Fusion(k=60),融合关键词、FTS5 和 Vectorize 语义通道。

  • 代码模式 — execute 工具在隔离的 Worker 沙箱中运行 JavaScript,其中能力可作为 codemode.<name>(...) 访问。出站 HTTP 通过注入秘密并强制执行每个秘密的主机允许列表的网关。

  • 双通道浏览器 — 用于抓取的无头云通道(Cloudflare Browser Rendering)和用于需要真实硬件指纹和认证状态的站点的有头本地通道(通过 Cloudflare Tunnel 的 macOS 桥接)。

  • 渠道和子代理 — 具有自己的推理循环的 Telegram 和 Slack webhook;team_spawn 运行角色提示的子代理。

  • 实时画布 — 通过 Durable Object + WebSocket 的代理驱动 UI,跨回合和主机持久化。

Related MCP server: agentprofile

架构概览

 MCP Hosts ─┐
 Channels ──┼──► Cloudflare Worker ──► D1 · R2 · KV · Workers AI · Vectorize
 Cron ──────┘     (FermiMCP + 3 DOs)
  • Worker(src/index.ts)路由 MCP(/mcp、/sse)、渠道、OAuth、/apps/* 主机、画布 WebSocket 和 cron 调度。当 FERMI_AUTH_ENABLED 为 true 时,OAuth 提供程序门控 MCP 传输;否则它们是开放的。

  • Durable Objects:FermiMCP(代理,SQLite 支持)、LiveCanvasDO、SandboxStorageDO、BrowserSessionDO。

  • 存储:D1(记忆、会话/消息 + FTS5、审计、钩子、技能元数据、秘密元数据、oauth)、R2(技能、文件、应用)、KV(配置、批准令牌)、Workers AI(嵌入 + 摘要)、Vectorize(语义索引)。

有关完整图表和数据流,请参阅 docs/ARCHITECTURE.md。

两个工具表面

Fermi 在两个层上公开工具,并且它们故意不相同:

表面

调用者

数量

MCP 工具

连接的主机和渠道

默认约 60 个,启用 macOS 桥接后约 85 个

沙箱能力

传递给 execute 的代码,作为 codemode.<name>(...)

39(meta_list_capabilities)

按组划分的 MCP 工具(面向主机):

组

工具

记忆

memory_recall、memory_write、memory_update、memory_delete、memory_list_recent

技能

skill_search、skill_load、skill_set、skill_delete

搜索

search(统一 RRF)、session_search

代码模式

execute

文件系统

fs_read、fs_write、fs_list(R2,范围检查)

浏览器(云)

browser_navigate、browser_screenshot、browser_extract、browser_action

浏览器会话

browser_session_launch、browser_session_action、browser_session_close、browser_session_list、browser_session_request_human、browser_session_resume

画布

open_generated_ui、canvas_update

计划模式

session_set_mode、plan_draft、plan_approve

团队

team_spawn

钩子

hooks_register、hooks_list、hooks_test

秘密

secret_set、secret_list、secret_delete、secret_resolve、secret_approve_host

元

meta_list_capabilities、usage_stats

连接器

connector_set、connector_get、connector_list、connector_delete

包

package_set、package_get、package_list、package_delete

检索器

retriever_set、retriever_run、retriever_get、retriever_list、retriever_delete

OAuth

oauth_register_client、oauth_get_client、oauth_list_clients、oauth_delete_client、oauth_authorize_url、totp_setup

macOS 桥接(可选)

25 个 mac_* 工具,仅在设置 MACOS_MCP_URL 时注册

快速开始

git clone <repo-url> fermi && cd fermi
bun install
wrangler login

chmod +x bootstrap.sh
./bootstrap.sh my-instance-name        # provisions D1, R2, KV, Vectorize; writes wrangler.jsonc

cd packages/worker
wrangler secret put FERMI_SECRETS_KEY   # required: encrypts stored secrets
wrangler secret put FERMI_OWNER_SECRET  # owner password for the OAuth consent screen
wrangler secret put FERMI_BEARER_TOKEN  # gates the admin HTTP endpoints
bun run migrate:remote
wrangler deploy --var FERMI_AUTH_ENABLED:true

⚠️ 使用 FERMI_AUTH_ENABLED:true 部署(或在 wrangler.jsonc vars 中设置)。否则,MCP 传输在公共 workers.dev URL 上完全未认证——任何找到它的人都可以读取您的记忆、解析您存储的秘密并运行代码。开放模式仅用于 wrangler dev。

然后种子内置技能并确认能力注册表:

curl -X POST https://<worker>/admin/seed-skills -H "Authorization: Bearer $FERMI_BEARER_TOKEN"
curl https://<worker>/capabilities             -H "Authorization: Bearer $FERMI_BEARER_TOKEN"

完整说明,包括认证模式和渠道设置,请参阅 docs/USAGE.md。

先决条件

  • Bun

  • Wrangler(bun add -g wrangler)

  • 一个 Workers Paid 计划($5/月)的 Cloudflare 账户——Durable Objects、Browser Rendering 和 Vectorize 需要

开发

bun run dev            # wrangler dev --local
bun run check          # Biome lint + format check
bun run format         # auto-format
bun run migrate:local  # apply D1 migrations locally
bun run test           # vitest (worker package)

配置

秘密使用 wrangler secret put 设置(交互式输入值):

秘密

必需

用途

FERMI_SECRETS_KEY

是

秘密存储的加密密钥

FERMI_OWNER_SECRET

当 FERMI_AUTH_ENABLED=true

OAuth 同意屏幕和 /apps/* 登录的所有者密码

FERMI_BEARER_TOKEN

用于管理 HTTP 端点

门控 /capabilities、/cron/capability-reindex、/admin/seed-skills

ANTHROPIC_API_KEY

用于渠道 / team_spawn

无人值守使用的推理循环

TELEGRAM_BOT_TOKEN

可选

Telegram 渠道

SLACK_BOT_TOKEN、SLACK_SIGNING_SECRET

可选

Slack 渠道

MACOS_MCP_URL、MACOS_MCP_TOKEN

可选

本地 macOS 桥接(启用 mac_* 工具)

认证模式由 FERMI_AUTH_ENABLED 变量控制。将其设置为 true 可将 MCP 传输置于 OAuth 之后——建议用于每个部署的实例。保持未设置则 /mcp 和 /sse 无认证服务,仅适用于本地 wrangler dev。

在 OAuth 模式下,连接的主机自行注册并进入 Fermi 的同意屏幕,该屏幕验证您的所有者秘密,并且(一旦通过 totp_setup 注册)验证 TOTP 代码:

Fermi OAuth 同意屏幕

连接主机

Claude.ai(网页)

设置 → 连接器 → 添加自定义连接器,URL https://<worker>/sse。

Claude Desktop / Cursor / VS Code

{ "mcpServers": { "fermi": { "url": "https://<worker>/mcp" } } }

Claude Code

claude mcp add fermi --transport http https://<worker>/mcp

成本

单用户,预计每月约 $8–20:Workers Paid 计划($5)加上可变的 Browser Rendering 和 Anthropic API 使用量。在此规模下,D1/R2/KV/Vectorize 保持在免费层附近。MCP 主机支付自己的推理费用;Fermi 仅在无人值守渠道和 team_spawn 中花费模型调用。

许可证

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to share a unified profile—skills and memory—across different agent tools via a single MCP server, so they maintain context and recall preferences everywhere.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to maintain a persistent identity and structured memory—including reasoning patterns, episodic history, and knowledge—while exposing procedures for managing that memory over MCP.
    Apache 2.0