Skip to main content
Glama

kje-mcp

Servidor MCP compatible con Claude.ai que envuelve a Jim Brain (memoria persistente + estado del imperio + bóveda) y un despachador de Claude Code sin interfaz gráfica en el VPS de RackNerd, para que cualquier sesión web de Claude.ai pueda:

  • leer el estado actual del imperio, los proyectos y las memorias recientes,

  • buscar en la memoria semántica y en la bóveda de credenciales,

  • escribir registros rápidos y memorias semánticas de vuelta a Brain,

  • enviar sesiones de compilación claude -p en el VPS.

El servidor utiliza MCP Streamable HTTP (el transporte que espera la interfaz de "Conector personalizado" de Claude.ai). Utiliza el modo sin estado / respuesta JSON, por lo que puede ejecutarse en cualquier lugar donde pueda hacerlo una API HTTP normal, en este caso, Railway.

Herramientas expuestas

Herramienta

Qué hace

brain_status

/health de Brain + /context completo del imperio (KPIs, proyectos, prompt del sistema)

brain_search

Búsqueda semántica sobre memorias de Qdrant (/memory/search)

brain_get_project

Contexto del proyecto en profundidad `minimal

standard

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

brain_vault_search

Búsqueda de credenciales en lenguaje natural (/vault/search)

brain_log

Registro rápido de Supabase (/log) — sub-segundo

brain_memory

Escritura de memoria semántica (/memory) — ~30–60s de embedding

cc_dispatch

Inicia claude -p sin interfaz en el VPS de RackNerd, con transferencia automática a Brain

Todas las herramientas se autentican en Brain con el encabezado en minúsculas x-brain-key (el único encabezado que acepta Brain, grabado en la depuración de BridgeDeck del 27-04-2026). La capa MCP en sí acepta un token Bearer en el encabezado Authorization, que es lo que envía la interfaz de conector de Claude.ai.

Diseño de archivos

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. Desplegar kje-mcp en Railway

1a. Enviar el repositorio a GitHub

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. Crear el servicio de Railway

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

O a través del panel de control: New Project → Deploy from GitHub Repo → jharriGH/kje-mcp. Railway detecta automáticamente Nixpacks Python y utiliza el startCommand de railway.toml.

1c. Configurar variables de entorno

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>

Según la REGLA DE AUTOMATIZACIÓN DE VARIABLES DE ENTORNO, Claude Code gestiona esto; Jim nunca hace clic en los paneles de control de Railway.

1d. Verificar el despliegue

# 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. Conectar desde la web de Claude.ai

  1. Abre claude.ai → Settings → Connectors → Add custom connector.

  2. Nombre: KJE MCP.

  3. URL: https://<tu-host-de-railway>/mcp/ (ten en cuenta la barra diagonal final y la ruta /mcp/).

  4. Autenticación: API key / Bearer token → pega jim-brain-kje-2026-kingjames (o lo que hayas configurado en MCP_AUTH_KEY).

  5. Guardar. Claude.ai realiza el protocolo de enlace initialize + tools/list de MCP; si aparece la marca de verificación verde junto a "KJE MCP", las 7 herramientas estarán disponibles en el chat.

En cualquier conversación nueva de Claude.ai:

  • Abre el menú de herramientas/conectores de la conversación y activa KJE MCP.

  • Comienza tu prompt con el equivalente a brain_session_start:

    "Usa KJE MCP. Llama a brain_status y brain_get_project para kj_codedeck (depth=standard) antes de responder. Luego [tarea]."

Cuando termines, Claude.ai ejecutará el ritual de cierre a través del mismo conector: brain_memory para el resumen, brain_log para el progreso y cc_dispatch si es necesario seguir trabajando en el VPS.


3. (Opcional) Configurar el despachador VPS para cc_dispatch

Sin esto, cc_dispatch devuelve un error limpio cc_dispatch_not_configured y las otras seis herramientas funcionan bien. Configúralo cuando realmente quieras que Claude.ai inicie sesiones de CC en el VPS.

3a. Sincronizar la carpeta vps/ en 104.223.120.21

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

3b. Crear un venv e instalar dependencias en el VPS

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

3c. Configurar .env

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. Instalar + iniciar la unidad de systemd

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. Exponer con TLS (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. Conectar el servicio kje-mcp a él

# 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 en el servicio kje-mcp ahora debería mostrar "vps_dispatch_configured": true.


Cómo utiliza esto una sesión de Claude.ai de principio a fin

  1. Inicio de sesión. Conector activado. Claude.ai llama a brain_status → contexto del imperio, luego brain_get_project("kj_codedeck", "standard") → prompt de inyección.

  2. Trabajando. Claude.ai responde desde el razonamiento en el chat. A mitad del proceso, llama a brain_search para decisiones previas o brain_vault_search para credenciales que necesita discutir.

  3. Trabajo pesado. Cuando el trabajo requiere una sesión de compilación CC real, Claude.ai llama a cc_dispatch(project="kj_codedeck", prompt="<prompt completo de compilación>"). El despachador del VPS responde inmediatamente con un session_id. La sesión de CC se ejecuta en segundo plano.

  4. Transferencia. Cuando termina la sesión de CC, el despachador del VPS publica una transferencia a Brain /codedeck/handoff (registro rápido + actualización de next_action del proyecto + tarjeta de compilación si se tocaron más de 3 archivos + memoria semántica en cola). La siguiente sesión de Claude.ai lo ve a través de brain_search.

  5. Ritual de cierre. Claude.ai llama a brain_memory (resumen completo), brain_log (evento de progreso), y el guardado de la tarjeta de compilación ocurre automáticamente en el lado del servidor a través de la transferencia. No le preguntes a Jim "¿qué opción?", esa es la regla.

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