Skip to main content
Glama

Fermi

Cloudflare Workers上で単一のMCPサーバーとして構築された、ポータブルなAIコントロールプレーンです。Claude.ai、Claude Desktop、Claude Code、Cursor、ChatGPTに接続すると、それらは同じメモリ、同じ権限モデル、同じスキルを共有します。無人チャネル(Telegram、Slack)では、Anthropic APIに対して独自の推論ループを実行します。

1つのサーバー、1つのメモリ、1つの権限スパイン — ホストが変わっても、エージェントは変わりません。

アーキテクチャの詳細: docs/ARCHITECTURE.md。 セットアップと日常的な使い方: docs/USAGE.md。

機能

  • クロスホストメモリ — 事実、好み、イベントをD1に保存し、接続された任意のホストから呼び出せます。夜間ジョブがセッションを要約し、埋め込み類似度でほぼ同一のメモリを重複排除し、古いものを減衰させます。

  • スキル — バージョン管理されたSKILL.mdドキュメントとしてR2に保存され、メタデータはD1に保存される手順です。直接作成するか、メモリから昇格させることができます。週次ジョブが最近のセッション要約からドラフトスキルを提案し、あなたが洗練させます。

  • 権限スパイン — すべてのツールはスコープとリスクレベルを宣言します。高リスクツールは2段階の承認トークンを必要とします。変更を加えるツールはプランモードでブロックされます。シェルコードはブロックリストに対してスクリーニングされます。すべての呼び出しは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のウェブフック。team_spawnはロールプロンプトのサブエージェントを実行します。

  • ライブキャンバス — Durable Object + WebSocket上のエージェント駆動UIで、ターンとホストをまたいで永続化されます。

Related MCP server: Nouva MCP Server

アーキテクチャ概要

 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を参照してください。

2つのツールサーフェス

Fermiは2つのレイヤーでツールを公開しており、それらは意図的に同一ではありません:

サーフェス

呼び出し元

数

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有料プラン(月額$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有料プラン($5)に加え、変動するBrowser RenderingとAnthropic APIの使用量。このボリュームではD1/R2/KV/Vectorizeは無料枠に近いままです。MCPホストは独自の推論に支払います。Fermiは無人チャネルとteam_spawnでのモデル呼び出しにのみ費用がかかります。

ライセンス

MIT

Maintenance

ActivityActive
ResponsivenessResponsive

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