Skip to main content
Glama

kje-mcp

Ein mit Claude.ai kompatibler MCP-Server, der Jim Brain (persistenter Speicher + Empire State + Vault) und einen Headless-Claude-Code-Dispatcher auf dem RackNerd-VPS kapselt, sodass jede Claude.ai-Websitzung:

  • den aktuellen Status des Imperiums, Projekte und kürzliche Erinnerungen lesen,

  • den semantischen Speicher und den Anmeldedaten-Vault durchsuchen,

  • schnelle Protokolle und semantische Erinnerungen an Brain zurückschreiben,

  • claude -p Build-Sitzungen auf dem VPS starten kann.

Der Server spricht MCP Streamable HTTP (das Transportprotokoll, das die „Custom Connector“-UI von Claude.ai erwartet). Er verwendet den stateless / JSON-Response-Modus, sodass er überall dort laufen kann, wo eine normale HTTP-API funktioniert – in diesem Fall auf Railway.

Verfügbare Tools

Tool

Was es tut

brain_status

Brain /health + vollständiger Empire /context (KPIs, Projekte, System-Prompt)

brain_search

Semantische Suche über Qdrant-Erinnerungen (/memory/search)

brain_get_project

Projektkontext in der Tiefe `minimal

standard

full (/codedeck/context/{slug}`)

brain_vault_search

Suche nach Anmeldedaten in natürlicher Sprache (/vault/search)

brain_log

Schnelles Supabase-Protokoll (/log) — unter einer Sekunde

brain_memory

Schreiben in den semantischen Speicher (/memory) — ~30–60s Embedding

cc_dispatch

Startet Headless claude -p auf dem RackNerd-VPS, mit automatischer Übergabe an Brain

Alle Tools authentifizieren sich gegenüber Brain mit dem kleingeschriebenen x-brain-key-Header (der einzige Header, den Brain akzeptiert – fest codiert beim BridgeDeck-Debugging am 27.04.2026). Die MCP-Schicht selbst akzeptiert ein Bearer-Token im Authorization-Header – das ist es, was die Connector-UI von Claude.ai sendet.

Dateistruktur

kje-mcp/
├── main.py                       # FastAPI + FastMCP server (deployed to Railway)
├── requirements.txt
├── railway.toml
├── .env.example
├── README.md
└── vps/
    ├── cc_dispatch_server.py     # Companion dispatcher — runs on the RackNerd VPS
    ├── requirements.txt
    └── kje-cc-dispatch.service   # systemd unit

1. kje-mcp auf Railway bereitstellen

1a. Das Repository auf GitHub pushen

cd C:\Users\Jim\Documents\GitHub\kje-mcp
git add .
git commit -m "feat: kje-mcp v1.0.0 — Claude.ai MCP wrapper for Jim Brain + CC dispatch"
gh repo create jharriGH/kje-mcp --public --source=. --remote=origin --push

1b. Den Railway-Service erstellen

# from inside the kje-mcp dir
railway init                         # name it: kje-mcp
railway link                         # link to the new project
railway up                           # builds + deploys

Oder über das Dashboard: New Project → Deploy from GitHub Repo → jharri → jharriGH/kje-mcp. Railway erkennt automatisch Nixpacks Python und verwendet den startCommand aus der railway.toml.

1c. Umgebungsvariablen festlegen

railway variables --set BRAIN_KEY=jim-brain-kje-2026-kingjames
railway variables --set BRAIN_URL=https://jim-brain-production.up.railway.app
railway variables --set MCP_AUTH_KEY=jim-brain-kje-2026-kingjames

# OPTIONAL — only set these once the VPS dispatcher is up (step 2):
# railway variables --set VPS_DISPATCH_URL=https://cc.kj.empire/dispatch
# railway variables --set VPS_DISPATCH_KEY=<long-random-string>

Gemäß der ENV VAR AUTOMATION RULE steuert Claude Code dies – Jim klickt niemals durch Railway-Dashboards.

1d. Die Bereitstellung überprüfen

# replace <host> with the Railway-assigned URL (railway domain or your custom one)
curl -s https://<host>/health | jq
# expect: {"status":"ok","service":"kje-mcp",...,"vps_dispatch_configured":false,...}

# initialize handshake (Claude.ai will send the same)
curl -s -X POST https://<host>/mcp/ \
  -H "Authorization: Bearer jim-brain-kje-2026-kingjames" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}' | jq

# list tools
curl -s -X POST https://<host>/mcp/ \
  -H "Authorization: Bearer jim-brain-kje-2026-kingjames" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | jq '.result.tools[].name'
# expect 7 names: brain_status, brain_search, brain_get_project, brain_vault_search,
#                 brain_log, brain_memory, cc_dispatch

2. Verbindung von Claude.ai Web herstellen

  1. Öffnen Sie claude.ai → Settings → Connectors → Add custom connector.

  2. Name: KJE MCP.

  3. URL: https://<your-railway-host>/mcp/ (beachten Sie den abschließenden Schrägstrich und den Pfad /mcp/).

  4. Auth: API key / Bearer token → fügen Sie jim-brain-kje-2026-kingjames ein (oder was auch immer Sie für MCP_AUTH_KEY festgelegt haben).

  5. Save. Claude.ai führt den MCP initialize + tools/list Handshake durch; wenn das grüne Häkchen neben „KJE MCP“ erscheint, sind die 7 Tools im Chat verfügbar.

In jeder neuen Claude.ai-Konversation:

  • Öffnen Sie das Tool-/Connector-Menü der Konversation und aktivieren Sie KJE MCP.

  • Beginnen Sie Ihren Prompt mit dem Äquivalent von brain_session_start:

    "Use KJE MCP. Call brain_status and brain_get_project for kj_codedeck (depth=standard) before answering. Then [task]."

Wenn Sie fertig sind, führt Claude.ai das Abschlussritual über denselben Connector aus – brain_memory für die Zusammenfassung, brain_log für den Fortschritt und cc_dispatch, falls weiterhin auf dem VPS gearbeitet werden muss.


3. (Optional) Den VPS-Dispatcher für cc_dispatch einrichten

Ohne dies gibt cc_dispatch einen sauberen cc_dispatch_not_configured-Fehler zurück und die anderen sechs Tools funktionieren einwandfrei. Richten Sie dies ein, wenn Sie möchten, dass Claude.ai tatsächlich CC-Sitzungen auf dem VPS startet.

3a. Den vps/-Ordner auf 104.223.120.21 synchronisieren

# from your laptop, in the kje-mcp repo
scp -r vps/ jim@104.223.120.21:/home/jim/kje-mcp/

3b. Ein venv erstellen und Abhängigkeiten auf dem VPS installieren

ssh jim@104.223.120.21
cd /home/jim/kje-mcp
python3 -m venv .venv
.venv/bin/pip install -r vps/requirements.txt

3c. .env konfigurieren

cat > /home/jim/kje-mcp/vps/.env <<'EOF'
VPS_DISPATCH_KEY=<long-random-string-paste-same-on-railway>
BRAIN_URL=https://jim-brain-production.up.railway.app
BRAIN_KEY=jim-brain-kje-2026-kingjames
PROJECT_REPOS_BASE=/home/jim/repos
# Optional overrides for slugs whose repo dir name differs from the slug:
# PROJECT_REPOS_OVERRIDES={"kj_autonomous":"/home/jim/n8n-canvas/kj-autonomous"}
CLAUDE_BIN=/usr/local/bin/claude
DISPATCH_LOG_DIR=/var/log/kje-cc-sessions
EOF

sudo mkdir -p /var/log/kje-cc-sessions
sudo chown jim:jim /var/log/kje-cc-sessions

3d. Die systemd-Unit installieren + starten

sudo cp /home/jim/kje-mcp/vps/kje-cc-dispatch.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now kje-cc-dispatch
sudo systemctl status kje-cc-dispatch
curl -s http://127.0.0.1:8088/health

3e. Mit TLS freigeben (nginx + Let's Encrypt)

# /etc/nginx/sites-available/cc.kj.empire
server {
    listen 443 ssl http2;
    server_name cc.kj.empire;

    ssl_certificate     /etc/letsencrypt/live/cc.kj.empire/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/cc.kj.empire/privkey.pem;

    client_max_body_size 4m;
    proxy_read_timeout   65s;

    location /dispatch {
        proxy_pass         http://127.0.0.1:8088/dispatch;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Dispatch-Key $http_x_dispatch_key;
    }

    location /health {
        proxy_pass http://127.0.0.1:8088/health;
    }
}
sudo ln -s /etc/nginx/sites-available/cc.kj.empire /etc/nginx/sites-enabled/
sudo certbot --nginx -d cc.kj.empire
sudo nginx -t && sudo systemctl reload nginx

3f. Den kje-mcp-Service damit verbinden

# from the kje-mcp repo on your laptop
railway variables --set VPS_DISPATCH_URL=https://cc.kj.empire/dispatch
railway variables --set VPS_DISPATCH_KEY=<same-random-string>
railway redeploy

/health auf dem kje-mcp-Service sollte nun "vps_dispatch_configured": true anzeigen.


Wie eine Claude.ai-Sitzung dies durchgängig nutzt

  1. Sitzungsstart. Connector aktiviert. Claude.ai ruft brain_status → Empire-Kontext auf, dann brain_get_project("kj_codedeck", "standard") → Injection-Prompt.

  2. Arbeiten. Claude.ai antwortet basierend auf dem Reasoning im Chat. Währenddessen ruft es brain_search für frühere Entscheidungen oder brain_vault_search für Anmeldedaten auf, die es besprechen muss.

  3. Schwere Arbeit. Wenn die Arbeit eine echte CC-Build-Sitzung erfordert, ruft Claude.ai cc_dispatch(project="kj_codedeck", prompt="<full build prompt>") auf. Der VPS-Dispatcher bestätigt dies sofort mit einer session_id. Die CC-Sitzung läuft im Hintergrund.

  4. Übergabe. Wenn die CC-Sitzung endet, postet der VPS-Dispatcher eine Übergabe an Brain /codedeck/handoff (schnelles Protokoll + Update der next_action des Projekts + Build-Karte, falls 3+ Dateien geändert wurden + semantische Erinnerung in der Warteschlange). Die nächste Claude.ai-Sitzung sieht dies über brain_search.

  5. Abschlussritual. Claude.ai ruft brain_memory (vollständige Zusammenfassung), brain_log (Fortschrittsereignis) auf, und das Speichern der Build-Karte erfolgt automatisch serverseitig über die Übergabe. Kein Fragen an Jim „welche Option?“ – das ist die Regel.

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/jharriGH/kje-mcp'

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