Skip to main content
Glama

kje-mcp

MCP-сервер, совместимый с Claude.ai, который объединяет Jim Brain (постоянная память + состояние империи + хранилище) и диспетчер Claude Code без графического интерфейса на VPS RackNerd, чтобы любой веб-сеанс Claude.ai мог:

  • читать текущее состояние империи, проекты и недавние воспоминания,

  • выполнять семантический поиск по памяти и хранилищу учетных данных,

  • записывать быстрые логи и семантические воспоминания обратно в Brain,

  • запускать сеансы сборки claude -p на VPS.

Сервер использует MCP Streamable HTTP (транспорт, который ожидает пользовательский интерфейс «Custom Connector» в Claude.ai). Он работает в режиме без сохранения состояния / JSON-ответов, поэтому его можно запустить везде, где работает обычный HTTP API — в данном случае на Railway.

Доступные инструменты

Инструмент

Что он делает

brain_status

/health Brain + полный /context империи (KPI, проекты, системный промпт)

brain_search

Семантический поиск по воспоминаниям Qdrant (/memory/search)

brain_get_project

Контекст проекта с глубиной `minimal

standard

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

brain_vault_search

Поиск учетных данных на естественном языке (/vault/search)

brain_log

Быстрый лог Supabase (/log) — менее секунды

brain_memory

Запись семантической памяти (/memory) — ~30–60 с на эмбеддинг

cc_dispatch

Запуск claude -p без графического интерфейса на VPS RackNerd с автоматической передачей в Brain

Все инструменты проходят аутентификацию в Brain с помощью заголовка x-brain-key в нижнем регистре (единственный заголовок, который принимает Brain — зафиксировано при отладке BridgeDeck 2026-04-27). Сам уровень MCP принимает токен Bearer в заголовке Authorization — именно его отправляет интерфейс коннектора Claude.ai.

Структура файлов

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 на Railway

1a. Отправка репозитория на 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. Создание сервиса Railway

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

Или через панель управления: New Project → Deploy from GitHub Repo → jharriGH/kje-mcp. Railway автоматически определяет Nixpacks Python и использует startCommand из railway.toml.

1c. Установка переменных окружения

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>

Согласно ПРАВИЛУ АВТОМАТИЗАЦИИ ПЕРЕМЕННЫХ ОКРУЖЕНИЯ, этим управляет Claude Code — Джим никогда не кликает по панелям управления Railway.

1d. Проверка развертывания

# 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. Подключение из веб-версии Claude.ai

  1. Откройте claude.ai → Settings → Connectors → Add custom connector.

  2. Name: KJE MCP.

  3. URL: https://<your-railway-host>/mcp/ (обратите внимание на косую черту в конце и путь /mcp/).

  4. Auth: API key / Bearer token → вставьте jim-brain-kje-2026-kingjames (или то, что вы указали в MCP_AUTH_KEY).

  5. Save. Claude.ai выполняет рукопожатие MCP initialize + tools/list; если рядом с «KJE MCP» появилась зеленая галочка, 7 инструментов доступны в чате.

В любом новом разговоре в Claude.ai:

  • Откройте меню инструментов/коннекторов разговора и включите KJE MCP.

  • Начните свой промпт с эквивалента brain_session_start:

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

Когда вы закончите, Claude.ai выполнит ритуал завершения через тот же коннектор — brain_memory для резюме, brain_log для прогресса и cc_dispatch, если нужно продолжить сборку на VPS.


3. (Опционально) Настройка диспетчера VPS для cc_dispatch

Без этого cc_dispatch вернет чистую ошибку cc_dispatch_not_configured, а остальные шесть инструментов будут работать нормально. Настройте это, когда действительно захотите, чтобы Claude.ai запускал сеансы CC на VPS.

3a. Синхронизация папки vps/ с 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. Создание venv и установка зависимостей на 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. Настройка .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. Установка + запуск модуля 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. Открытие через 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. Подключение к нему сервиса kje-mcp

# 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 в сервисе kje-mcp теперь должен показывать "vps_dispatch_configured": true.


Как сеанс Claude.ai использует это от начала до конца

  1. Начало сеанса. Коннектор включен. Claude.ai вызывает brain_status → контекст империи, затем brain_get_project("kj_codedeck", "standard") → промпт внедрения.

  2. Работа. Claude.ai отвечает на основе рассуждений в чате. В процессе он вызывает brain_search для поиска предыдущих решений или brain_vault_search для учетных данных, которые ему нужно обсудить.

  3. Тяжелая работа. Когда для работы нужен реальный сеанс сборки CC, Claude.ai вызывает cc_dispatch(project="kj_codedeck", prompt="<full build prompt>"). Диспетчер VPS немедленно подтверждает получение с помощью session_id. Сеанс CC выполняется в фоновом режиме.

  4. Передача. Когда сеанс CC завершается, диспетчер VPS отправляет передачу в Brain /codedeck/handoff (быстрый лог + обновление next_action проекта + карточка сборки, если затронуто 3+ файла + семантическая память в очереди). Следующий сеанс Claude.ai увидит это через brain_search.

  5. Ритуал завершения. Claude.ai вызывает brain_memory (полное резюме), brain_log (событие прогресса), а сохранение карточки сборки происходит автоматически на стороне сервера через передачу. Никаких вопросов Джиму «какой вариант выбрать?» — это правило.

Related MCP Connectors