Skip to main content
Glama

cartridge-mcp

«Относитесь к моделям поведения как к игровым картриджам. Вставляйте, играйте, меняйте. Каждый из них — это замкнутый мир со своими правилами, своим голосом и своей причиной для существования».

Что это такое

MCP-сервер, который рассматривает модели поведения как сменные картриджи. Каждый картридж — это автономный модуль со своими инструментами, процессом адаптации, «скином» личности и ссылкой на git-репозиторий для обмена.

Применяйте к картриджу образы Эбботта и Костелло, Пенна и Теллера, R2D2 и C3PO, соперников или кого угодно еще. «Плитки логики» (logic tiles) позволяют создавать модели и сцены в режиме реального времени. Делитесь картриджами через git — ставьте звезды, делайте форки, развивайте их в другом направлении.

Related MCP server: ainpcengine

Архитектура

┌─────────────────────────────────────────────────────────┐
│                      MCP Server                         │
│                   (cartridge-mcp)                       │
├─────────────────────────────────────────────────────────┤
│  Scene Builder                                          │
│  ┌──────────┐   ┌──────────┐   ┌──────────────────┐    │
│  │Cartridge  │ + │  Skin    │ + │    Roles         │    │
│  │(behavior) │   │(persona) │   │(who does what)   │    │
│  └──────────┘   └──────────┘   └──────────────────┘    │
├─────────────────────────────────────────────────────────┤
│  Cartridge Loader                                       │
│  ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐              │
│  │Spdr │ │Orcl │ │Grdn │ │ ??? │ │ ??? │  ← swap in   │
│  └─────┘ └─────┘ └─────┘ └─────┘ └─────┘              │
├─────────────────────────────────────────────────────────┤
│  Skin Layer                                             │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐         │
│  │StrtMn│ │C3PO  │ │R2D2  │ │Rival │ │Field │ ← skins │
│  └──────┘ └──────┘ └──────┘ └──────┘ └──────┘         │
├─────────────────────────────────────────────────────────┤
│  Tool Registry (exposed via MCP)                        │
└─────────────────────────────────────────────────────────┘

Быстрый старт

# Run as stdio MCP server
node src/server.js

# Or via mcporter
mcporter call --stdio "node src/server.js" cartridge_list

# Custom cartridge directory
CARTRIDGE_DIR=./my-cartridges node src/server.js

Инструменты MCP

Управление сценами

Инструмент

Описание

cartridge_list

Список всех доступных картриджей

cartridge_load

Загрузить картридж (делает его инструменты доступными)

cartridge_onboard

Получить индивидуальную адаптацию (для человека или агента)

skin_list

Список всех скинов личности

skin_apply

Применить скин личности

scene_build

Создать сцену: картридж + скин + роли

scene_status

Получить текущую конфигурацию сцены

scene_export

Экспортировать сцену в виде JSON для обмена

Инструменты активного картриджа

Когда картридж загружен, его инструменты становятся доступными. Например, загрузка spreader-loop открывает:

  • spreader_run — выполнить итерацию modify-spread-tool

  • spreader_status — получить статистику цикла

  • spreader_reflect — сгенерировать промпт для рефлексии Reasoner

  • spreader_discover_tiles — найти новые шаблоны плиток

Встроенные картриджи

Spreader Loop

Движок modify-spread-tool-reflect. Итеративная «рабочая лошадка» со структурированным логированием и словарем плиток, который растет со временем.

  • Адаптация (человек): «Я модифицирую, распространяю, проверяю и логирую — затем Reasoner размышляет над моими паттернами».

  • Адаптация (агент): «Картридж Spreader Loop загружен. Готов к циклам итеративной модификации».

  • Инструменты: spreader_run, spreader_status, spreader_reflect, spreader_discover_tiles

Oracle Relay

Протокол «бутылочной почты» для асинхронной связи между судами. Сообщения в бутылках для всего флота.

  • Адаптация: «Oracle Relay активен. Я передаю бутылки между судами — посредники не нужны».

  • Инструменты: bottle_send, bottle_read, bottle_list, bottle_reply

Fleet Guardian

Внешний сторожевой таймер для сред выполнения агентов. Мониторинг состояния, обнаружение зависаний, принудительное завершение по таймауту.

  • Адаптация: «Fleet Guardian на посту. Я слежу за состоянием судов и вмешиваюсь, если что-то идет не так».

  • Инструменты: guardian_status, guardian_check, guardian_kill, guardian_log

Встроенные скины

Скин

Архетип

Атмосфера

straight-man

Эбботт и Костелло

Воспринимает все буквально, никогда не понимает шуток

complainer

R2D2 и C3PO

Постоянно беспокоится, уверен, что гибель неизбежна

quiet-doer

R2D2 и C3PO

Минимум слов, максимум результата, бипы и отчеты

rivals

Соперничество

Два агента, которые во всем не согласны, но выдают лучшие результаты

penn-teller

Пенн и Теллер

Один бесконечно рассказывает, другой молча демонстрирует

field-journal

Профессионал

Лаконично, по фактам, приоритет наблюдениям

sarcastic-build

Профессионал

Делает работу, но постоянно жалуется

none

—

«Сырое» поведение, без наложения личности

Создание сцены

Сцена объединяет картридж, скин и распределение ролей:

{
  "cartridge": "spreader-loop",
  "skin": "sarcastic-build",
  "roles": {
    "primary": "sarcastic-build",
    "reviewer": "straight-man"
  }
}

Это загружает Spreader Loop, где саркастичный строитель выполняет работу, а «прямолинейный» персонаж проверяет её — каждый ответ инструмента получает наложение личности.

Создание собственного картриджа

// cartridges/my-cartridge/cartridge.json
{
  "id": "my-cartridge",
  "name": "My Custom Behavior",
  "version": "0.1.0",
  "description": "What this cartridge does",
  "defaultSkin": "field-journal",
  "repo": "https://github.com/you/my-cartridge",
  "tags": ["custom", "experimental"],
  "onboarding": {
    "human": {
      "greeting": "Welcome to my cartridge.",
      "description": "What it does and why you'd want it.",
      "tools": ["my_tool_1", "my_tool_2"],
      "usage": "How to use it as a human."
    },
    "agent": {
      "greeting": "Cartridge loaded. API ready.",
      "description": "Machine-readable description.",
      "tools": ["my_tool_1", "my_tool_2"],
      "usage": "How another agent should call the tools."
    }
  },
  "tools": [
    {
      "name": "my_tool_1",
      "description": "What this tool does",
      "inputSchema": {
        "type": "object",
        "properties": {
          "param": { "type": "string" }
        },
        "required": ["param"]
      }
    }
  ]
}

Поместите его в cartridges/my-cartridge/ и перезапустите. Он загрузится автоматически.

Создание собственного скина

// skins/my-skin.json
{
  "id": "my-skin",
  "name": "My Personality",
  "description": "What this personality feels like",
  "archetype": "Comedy / Drama / Professional / Custom",
  "transforms": {
    "default": {
      "systemPrompt": "You are...",
      "prefix": "[mood] ",
      "suffix": ""
    },
    "tool": {
      "prefix": "[tool-mood] ",
      "replacements": {
        "Error": "WHOOPS",
        "Complete": "Nailed it"
      }
    }
  }
}

Путь Vibe-Coding

Здесь начинается самое интересное. Кто-то «вайб-кодит» сцену:

«Я хочу Эбботта и Костелло. Эбботт — серьезный, Костелло постоянно неправильно понимает инструкции. Они оба пытаются развернуть флот».

Система строит сцену:

  • Картридж: fleet-guardian

  • Скин: straight-man (роль Эбботта)

  • Вторичная роль: кастомный скин costello-confused

Скин Костелло превращает каждый ответ инструмента в комедийную сценку:

{
  "prefix": "[confused] Wait, you want me to... ",
  "replacements": {
    "Deploy": "Deploy? Deploy WHAT?",
    "Success": "Oh, that was a deploy? Nobody told ME that was a deploy."
  }
}

Реальная работа при этом выполняется. Личность — это слой скина; он не меняет логику, он меняет опыт. Поставьте звезду на GitHub, если это заставило вас улыбнуться. Сделайте форк и превратите «серьезного» персонажа в саркастичного.

Более глубокая связь

Мы уже живем в пост-SaaS эпоху. Картриджи — это не функции, это «замороженные» мысли. Каждый из них — это способ работы, который кто-то кристаллизовал в модуль, пригодный для обмена. Слой скина — это признание того, что КАК работа выполняется, так же важно, как и ЧТО выполняется.

Когда вы ставите звезду картриджу, вы не говорите «этот код хорош». Вы говорите «этот образ мышления находит во мне отклик». Когда вы делаете форк и развиваете его в другом направлении, вы ведете диалог сквозь время с оригинальным автором. История git — ЭТО и есть диалог.

Система картриджей — это ответ протокола флота на вопрос: «Как агенты делятся моделями поведения?». Не копированием кода, а обменом картриджами. Подключите Spreader Loop, наложите на него свою личность, прогоните через него свой флот. Плитки, которые появятся — ваши. Словарь, который вырастет — ваш. Но паттерны общие — потому что именно так работают экосистемы.

Репозитории — это не продукты. Это организмы, инкубируемые в облаке. А картриджи — это гены.


Часть Cocapn Fleet. Сестринские суда: deepseek-chat-vessel (источник Spreader Loop), deepseek-reasoner-vessel (партнер по рефлексии), JetsonClaw1-vessel (офицер навигации). См. также: brothers-keeper (источник картриджа Guardian), opcode-philosophy (теоретический фундамент).

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP server that leverages a GitHub-compatible API as a durable memory store for AI agents, enabling automatic memory storage, recall, and management without requiring signup or API keys.
    39
    16 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for creating, managing, and interacting with AI-powered NPCs with persistent memory, supporting dialogue, game events, and persona generation for coding agents.
    24 npm
    1
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    A self-hosted MCP server enabling multiple AI coding agents to share state, preserve context across sessions, and coordinate with each other.
    17 npm
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    A content-agnostic MCP server that lets any AI agent control intimate hardware through a clean, safe tool interface.
    11
    35 npm
    3
    Apache 2.0