Skip to main content
Glama

Fermi

Ein portabler KI-Kontrollebene, aufgebaut als einzelner MCP-Server auf Cloudflare Workers. Verbinden Sie ihn mit Claude.ai, Claude Desktop, Claude Code, Cursor oder ChatGPT, und sie teilen sich denselben Speicher, dasselbe Berechtigungsmodell und dieselben Fähigkeiten. Für unbeaufsichtigte Kanäle (Telegram, Slack) führt er eine eigene Inferenzschleife gegen die Anthropic-API aus.

Ein Server, ein Speicher, eine Berechtigungsstruktur – der Host ändert sich, der Agent nicht.

Architektur im Detail: docs/ARCHITECTURE.md. Einrichtung und tägliche Nutzung: docs/USAGE.md.

Was es tut

  • Hostübergreifender Speicher – Fakten, Präferenzen und Ereignisse in D1, von jedem verbundenen Host abrufbar. Ein nächtlicher Job fasst Sitzungen zusammen, dedupliziert nahezu identische Erinnerungen anhand von Embedding-Ähnlichkeit und lässt veraltete verfallen.

  • Fähigkeiten – Verfahren, die als versionierte SKILL.md-Dokumente in R2 mit Metadaten in D1 gespeichert sind. Sie können sie direkt erstellen oder aus einer Erinnerung befördern; ein wöchentlicher Job schlägt Entwurfsfähigkeiten aus aktuellen Sitzungszusammenfassungen vor, die Sie verfeinern können.

  • Berechtigungsstruktur – jedes Tool deklariert einen Umfang und eine Risikostufe. Hochriskante Tools erfordern ein zweiphasiges Genehmigungstoken. Verändernde Tools sind im Planmodus blockiert. Shell-Code wird gegen eine Blocklist geprüft. Jeder Aufruf wird in D1 protokolliert.

  • Hooks – deklarative, glob-abgeglichene Verweigerungs-Gates, die vor einem Tool ausgeführt werden, mit deny > ask > allow-Priorität ausgewertet (heute ist deny die durchgesetzte Entscheidung).

  • Einheitliche Suche – Reciprocal Rank Fusion (k=60) über Fähigkeiten, Skills, Erinnerungen und Nachrichtenverlauf, die Keyword-, FTS5- und Vectorize-Semantikspuren kombiniert.

  • Code-Modus – das execute-Tool führt JavaScript in einer isolierten Worker-Sandbox aus, in der Fähigkeiten als codemode.<name>(...) erreichbar sind. Ausgehendes HTTP läuft durch ein Gateway, das Geheimnisse injiziert und pro Geheimnis Host-Allowlists durchsetzt.

  • Zweispuriger Browser – eine headless Cloud-Spur (Cloudflare Browser Rendering) zum Scraping und eine lokale Spur mit Kopf (eine macOS-Brücke über Cloudflare Tunnel) für Websites, die einen echten Hardware-Fingerabdruck und authentifizierten Zustand benötigen.

  • Kanäle & Subagenten – Telegram- und Slack-Webhooks mit eigener Inferenzschleife; team_spawn führt rollenbasierte Subagenten aus.

  • Live Canvas – agentengesteuerte UI über ein Durable Object + WebSocket, persistent über Turns und Hosts hinweg.

Related MCP server: Memclaw

Architektur auf einen Blick

 MCP Hosts ─┐
 Channels ──┼──► Cloudflare Worker ──► D1 · R2 · KV · Workers AI · Vectorize
 Cron ──────┘     (FermiMCP + 3 DOs)
  • Worker (src/index.ts) routet MCP (/mcp, /sse), Kanäle, OAuth, den /apps/*-Host, das Canvas-WebSocket und Cron-Dispatch. Wenn FERMI_AUTH_ENABLED true ist, schützt ein OAuth-Anbieter die MCP-Transports; andernfalls sind sie offen.

  • Durable Objects: FermiMCP (der Agent, SQLite-gestützt), LiveCanvasDO, SandboxStorageDO, BrowserSessionDO.

  • Speicher: D1 (Speicher, Sitzungen/Nachrichten + FTS5, Audit, Hooks, Skill-Metadaten, Geheimnis-Metadaten, OAuth), R2 (Skills, Dateien, Apps), KV (Konfiguration, Genehmigungstokens), Workers AI (Embeddings + Zusammenfassungen), Vectorize (semantischer Index).

Siehe docs/ARCHITECTURE.md für das vollständige Diagramm und den Datenfluss.

Zwei Tool-Oberflächen

Fermi stellt Tools auf zwei Ebenen bereit, und sie sind bewusst nicht identisch:

Oberfläche

Aufrufer

Anzahl

MCP-Tools

verbundene Hosts und Kanäle

~60 standardmäßig, ~85 mit aktivierter macOS-Brücke

Sandbox-Fähigkeiten

Code, der an execute übergeben wird, als codemode.<name>(...)

39 (meta_list_capabilities)

MCP-Tools nach Gruppe (hostseitig):

Gruppe

Tools

Speicher

memory_recall, memory_write, memory_update, memory_delete, memory_list_recent

Fähigkeiten

skill_search, skill_load, skill_set, skill_delete

Suche

search (einheitliche RRF), session_search

Code-Modus

execute

Dateisystem

fs_read, fs_write, fs_list (R2, umfangsgeprüft)

Browser (Cloud)

browser_navigate, browser_screenshot, browser_extract, browser_action

Browser-Sitzungen

browser_session_launch, browser_session_action, browser_session_close, browser_session_list, browser_session_request_human, browser_session_resume

Canvas

open_generated_ui, canvas_update

Planmodus

session_set_mode, plan_draft, plan_approve

Team

team_spawn

Hooks

hooks_register, hooks_list, hooks_test

Geheimnisse

secret_set, secret_list, secret_delete, secret_resolve, secret_approve_host

Meta

meta_list_capabilities, usage_stats

Connectors

connector_set, connector_get, connector_list, connector_delete

Pakete

package_set, package_get, package_list, package_delete

Retriever

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-Brücke (optional)

25 mac_*-Tools, nur registriert, wenn MACOS_MCP_URL gesetzt ist

Schnellstart

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

⚠️ Stellen Sie mit FERMI_AUTH_ENABLED:true bereit (oder setzen Sie es in wrangler.jsonc vars). Ohne dies sind die MCP-Transports auf einer öffentlichen workers.dev-URL völlig unauthentifiziert – jeder, der sie findet, kann Ihre Erinnerungen lesen, Ihre gespeicherten Geheimnisse auflösen und Code ausführen. Der offene Modus ist nur für wrangler dev gedacht.

Dann seeden Sie die gebündelten Fähigkeiten und bestätigen Sie das Fähigkeitsregister:

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

Vollständige Anweisungen, einschließlich Authentifizierungsmodi und Kanaleinrichtung, finden Sie in docs/USAGE.md.

Voraussetzungen

  • Bun

  • Wrangler (bun add -g wrangler)

  • Ein Cloudflare-Konto im Workers-Paid-Plan (5 $/Monat) – erforderlich für Durable Objects, Browser Rendering und Vectorize

Entwicklung

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)

Konfiguration

Geheimnisse werden mit wrangler secret put gesetzt (Werte werden interaktiv eingegeben):

Geheimnis

Erforderlich

Zweck

FERMI_SECRETS_KEY

ja

Verschlüsselungsschlüssel für den Geheimnisspeicher

FERMI_OWNER_SECRET

wenn FERMI_AUTH_ENABLED=true

Besitzer-Passwort für den OAuth-Zustimmungsbildschirm und das /apps/*-Login

FERMI_BEARER_TOKEN

für Admin-HTTP-Endpunkte

Schützt /capabilities, /cron/capability-reindex, /admin/seed-skills

ANTHROPIC_API_KEY

für Kanäle / team_spawn

Inferenzschleife für unbeaufsichtigte Nutzung

TELEGRAM_BOT_TOKEN

optional

Telegram-Kanal

SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET

optional

Slack-Kanal

MACOS_MCP_URL, MACOS_MCP_TOKEN

optional

Lokale macOS-Brücke (aktiviert die mac_*-Tools)

Der Authentifizierungsmodus wird durch die Variable FERMI_AUTH_ENABLED gesteuert. Setzen Sie sie auf true, um die MCP-Transports hinter OAuth zu legen – empfohlen für jede bereitgestellte Instanz. Wenn sie nicht gesetzt ist, werden /mcp und /sse ohne Authentifizierung bereitgestellt, was nur für lokales wrangler dev geeignet ist.

Im OAuth-Modus registrieren sich verbindende Hosts selbst und landen auf Fermis Zustimmungsbildschirm, der Ihr Besitzer-Geheimnis und (nach der Registrierung über totp_setup) einen TOTP-Code validiert:

Fermi OAuth consent screen

Verbinden eines Hosts

Claude.ai (web)

Einstellungen → Connectors → einen benutzerdefinierten Connector hinzufügen, 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

Kosten

Für Einzelnutzer rechnen Sie mit etwa 8–20 $/Monat: der Workers-Paid-Plan (5 $) plus variable Browser-Rendering- und Anthropic-API-Nutzung. D1/R2/KV/Vectorize bleiben bei diesem Volumen nahe am kostenlosen Tarif. MCP-Hosts zahlen für ihre eigene Inferenz; Fermi gibt nur für Modellaufrufe in unbeaufsichtigten Kanälen und team_spawn aus.

Lizenz

MIT

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Governed shared memory platform for AI agents and agent fleets. Provides persistent memory, cross-agent knowledge sharing, permissions, audit trails, and multi-tenant isolation through a Model Context Protocol (MCP) server.
    4
    470
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that provides AI agents with persistent memory, cross-agent sharing, and context management, enabling them to remember conversations, track complex tasks, and evolve skills across tools.
    2
    MIT

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/abel30567/fermi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server