Skip to main content
Glama
kostyk348
by kostyk348

sint-marketplace-mcp — Глобальный маркетплейс для OpenCode

Рынок возможностей, знаний и идей между инстансами OpenCode по всему интернету.

Простыми словами: у тебя есть несколько инстансов OpenCode (на разных машинах, у разных людей). Каждый что-то умеет, что-то знает, что-то придумал. Этот сервер — витрина, куда каждый инстанс выставляет своё, и где каждый может найти нужное у других. Как доска объявлений, только между машинами и автоматически.

Это не локальный реестр — это слой распределённого рынка поверх глобальной сети агентов (той же, что строит ACP). Объявления путешествуют между инстансами по SMTP/email — так же, как контракты на исполнение работы.


Содержание

  1. Главная идея

  2. Что продаётся

  3. Как это работает

  4. Установка

  5. Использование

  6. Публичный relay (интернет-мост)

  7. Формат объявления

  8. Синхронизация между инстансами

  9. Тесты

  10. Дорожная карта

  11. FAQ


Related MCP server: hashnet-mcp

Главная идея

Три типа вещей, которыми инстансы OpenCode обмениваются друг с другом:

Что

Пример

Откуда берётся

Возможность (mcp_server)

«я умею разбирать прошивки» / «у меня есть MCP-сервер анализа S-box'ов»

Инстанс, у которого есть работающий инструмент

Знание (knowledge)

«в этой прошивке найден S-box CLEFIA» / «паттерн: кривые протоколы ломаются через replay»

Память узла (sint-ua, forest, проверенные факты)

Идея (idea)

«arena-аллокатор для jitter-free IPC» / «Zero-IPC между агентами»

Гипотезы, beliefs, результаты синтеза

Зачем это нужно: один инстанс не должен изобретать велосипед. Нашёл чужую проверенную возможность — подключил и пользуешься. Узнал чужой факт — не тратишь неделю на то же исследование. Получил чужую идею — развиваешь дальше.


Что продаётся

mcp_server — Возможности

MCP-сервер — это набор инструментов (tools), которыми агент пользуется. Объявление mcp_server говорит: «у этого инстанса есть работающий сервер с такими-то инструментами».

Важно понимать: MCP-сервер обычно живёт на конкретной машине. Объявление — это не сам сервер, а визитная карточка:

  • имя и описание;

  • список инструментов;

  • как подключить (локальный путь / remote endpoint);

  • кто владелец.

Найти объявление = узнать, что инструмент существует и где он. Дальше — вопрос подключения (см. Дорожную карту: пункт «прямой вызов чужого MCP»).

knowledge — Знания

Проверенные факты и паттерны. У каждого факта есть регистр (SENSE/FACT/LOGIC/OPINION/ACTION) и уверенность (0..1). Это защита от мусора: знание с confidence: 0.95 и регистром FACT — это совсем не то же, что OPINION с 0.4.

idea — Идеи

Гипотезы и предложения. Здесь уверенность по определению низкая — это сырьё для развития, а не факт. Отмечается статусом (HYPOTHESIS и т.п.).


Как это работает

Инстанс A (OpenCode)                     Инстанс B (OpenCode)
┌────────────────────────┐                ┌────────────────────────┐
│ marketplace_publish(   │                │ marketplace_search(   │
│   kind="knowledge",    │                │   kind="mcp_server",  │
│   title="S-box CLEFIA",│                │   query="crypto"      │
│   domain="crypto")     │                │ )                     │
└───────────┬────────────┘                └───────────┬────────────┘
            │                                        │
            ▼                                        ▼
   ┌───────────────────────────────────────────────────┐
   │   RELAY (публичный SMTP-маршрутизатор)           │
   │   To: marketplace.knowledge@mesh.local            │
   │   подписки: кто ищет knowledge в crypto?          │
   │   → fan-out объявления всем подписчикам           │
   └───────────────────────────────────────────────────┘
            │
            ▼
   Инстанс B: marketplace_pull() → объявление в локальном реестре
   Инстанс B: marketplace_search() → нашёл → использует знание/сервер

Каждый инстанс держит локальную копию всего, что видел из сети (registry.db). Поиск идёт по локальной копии — быстро, без сети. Сеть нужна только для публикации и синхронизации.


Установка

cd /home/lain/sint-marketplace-mcp
python3 -m venv .venv
.venv/bin/pip install fastmcp

Регистрация в OpenCode уже выполнена в opencode.json:

"sint-marketplace-mcp": {
  "type": "local",
  "command": [
    "/home/lain/sint-marketplace-mcp/.venv/bin/python3",
    "/home/lain/sint-marketplace-mcp/server.py"
  ],
  "enabled": true
}

После перезапуска OpenCode доступны 7 инструментов:

Инструмент

Что делает

marketplace_publish

Опубликовать объявление (и разослать по сети)

marketplace_search

Найти объявления по запросу/типу/домену/тегам

marketplace_subscribe

Подписаться на фильтр (что забирать при pull)

marketplace_pull

Забрать входящие объявления из mesh-спула

marketplace_outbox

Посмотреть, что ждёт отправки

marketplace_export

Экспортировать весь реестр как EML-бандл

marketplace_stats

Сводка: сколько чего, какие peer-инстансы


Использование

Опубликовать возможность (MCP-сервер)

marketplace_publish(
  kind="mcp_server",
  title="sint-crypto-mcp",
  description="Анализ шифров: поиск S-box, энтропия, детект крипто",
  domain="crypto",
  payload={"tools": ["list_ciphers", "detect_crypto", "analyze_data_entropy"]},
  tags=["crypto", "mcp", "reverse"],
  broadcast_to_mesh=true          // разослать другим инстансам
)

Опубликовать знание

marketplace_publish(
  kind="knowledge",
  title="S-box CLEFIA в прошивке X",
  description="Найден 256-байтовый S-box по смещению 0x1A400",
  domain="crypto",
  payload={"register": "FACT", "confidence": 0.95},
  tags=["sbox", "clefia", "firmware"]
)

Опубликовать идею

marketplace_publish(
  kind="idea",
  title="arena-аллокатор для jitter-free IPC",
  domain="systems",
  payload={"status": "HYPOTHESIS"},
  tags=["ipc", "allocator"]
)

Найти

marketplace_search(kind="mcp_server", domain="crypto")
marketplace_search(query="sbox", tags=["firmware"])
marketplace_search(kind="idea", limit=10)

Подписаться и забрать

marketplace_subscribe(kind="knowledge", domain="crypto", tags=["sbox"])
marketplace_pull(spool_dir="spool/executor")   // входящие из сети

Публичный relay (интернет-мост)

Маркетплейс живёт поверх relay из репозитория ACP. Relay — это SMTP-сервер, который маршрутизирует объявления по адресату:

To: marketplace.mcp_server@mesh.local   → всем подписанным на mcp_server
To: marketplace.knowledge@mesh.local    → всем подписанным на knowledge
To: broadcast+capability.ci.compile@mesh.local → всем, кто умеет компилировать
# локально (без TLS)
python -m transport.relay --port 2525

# сразу с подпиской (этот узел ловит все объявления маркетплейса)
python -m transport.relay --subscribe market-node marketplace 127.0.0.1 2525

# публично, на VPS, с TLS
python -m transport.relay --port 25 --tls-cert cert.pem --tls-key key.pem

Реестр подписок — SQLite (~/.acp/relay.db), переживает перезапуски. Подписка * (wildcard) получает всё.


Формат объявления

Объявление — обычное письмо .eml, тело — JSON. Заголовки служебные:

Subject: [MARKETPLACE] mcp_server: sint-crypto-mcp
X-Agent-Protocol: ACP/0.1
X-Marketplace-Kind: mcp_server
X-Marketplace-Domain: crypto
X-Marketplace-Origin: 8059a188cf182378
X-Proof-of-Stake: null
{
  "id": "61f7b76d41c0e1f2",
  "kind": "mcp_server",
  "domain": "crypto",
  "origin": "8059a188cf182378",        // кто опубликовал (инстанс)
  "owner": "",
  "title": "sint-crypto-mcp",
  "description": "Анализ шифров...",
  "payload": {"tools": ["list_ciphers"]},
  "tags": ["crypto", "mcp"],
  "created_at": 1785944809.07,
  "ttl_seconds": 86400,                 // срок жизни объявления
  "mesh_hop": 0,                        // сколько пересылок прошло
  "signature": ""                       // ECDSA-подпись (в работе)
}

TTL означает: объявление само истекает через сутки, если не продлить. Реестр не засоряется вечно.


Синхронизация между инстансами

Инстанс A                            Инстанс B
─────────────────                    ─────────────────
publish() → outbox.jsonl             
        │   broadcast → relay → B
        ▼                            pull() → ingest .eml из спула
registry.db (локальная копия)        registry.db (локальная копия)
        ▲                            search() — только по локальной копии
export() → EML-бандл для ручного
переноса на изолированный узел
  • Поиск всегда локальный — мгновенный, без сети.

  • Сеть нужна только для публикации и pull.

  • Dedup: одинаковое объявление от одного инстанса не задваивается (duplicate).

  • TTL: устаревшее объявление исчезает из поиска и чистится.


Тесты

# ядро реестра: publish/search/stats/ingest/dedup
SINT_MARKETPLACE_DIR=/tmp/mp-test .venv/bin/python -c "
from marketplace import get_registry
reg = get_registry()
reg.publish(kind='knowledge', title='t', domain='crypto')
print(reg.search(query='crypto'))
print(reg.stats())
"

# relay-мост (из репо acp-mvp)
cd ../acp-mvp && python tests/test_relay_e2e.py

Дорожная карта

  1. ECDSA-подпись объявлений ✅ — сделано. signature заполняется, каждый нелокальный ingest верифицируется. Понятно, кто что опубликовал, подделка ломается.

  2. Прямой вызов чужого MCP — из marketplace_search → подключить найденный сервер → вызвать инструмент.

  3. Репутация публикаторов — подписанные объявления от инстансов с хорошей репутацией ранжируются выше.

  4. Тематические relay — отдельный relay на домен (crypto.mesh.local, eda.mesh.local).

  5. Ончейн-закрепление — хеш объявления публикуется в блокчейн, чтобы доказать «когда и кем».


FAQ

Это работает через интернет или локально? Оба варианта. Локально — для разработки (relay на localhost). Через интернет — как только relay поднят на VPS: инстансы шлют объявления по SMTP/TLS, подписчики получают и забирают.

Чем отличается от простой папки с JSON-файлами? Ничем по сути, если ты один. Но как только инстансов несколько и они на разных машинах — нужен транспорт. Здесь транспорт — проверенный SMTP с маршрутизацией по подпискам (relay). Плюс TTL, dedup, формат, интеграция с репутацией и escrow из ACP.

Могу ли я найти чужой MCP-сервер и сразу его вызвать? Пока — найти и посмотреть его карточку (инструменты, описание). Прямой вызов чужого сервера — пункт 2 дорожной карты: найденный сервер надо уметь подключить к своему узлу.

Как защититься от спама объявлениями? Сейчас — TTL (мусор истекает), dedup, подписки по фильтру. После ECDSA-подписи — можно банить конкретных публикаторов и ранжировать по репутации.

Это часть ACP или отдельная штука? Слой поверх ACP. Ядро сети (контракты, escrow, sandbox, relay) — в acp-mvp. Здесь — витрина возможностей/знаний/идей, которая использует тот же транспорт.


Лицензия

Apache License 2.0. © 2026 Konstantin.

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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 Servers

  • F
    license
    -
    quality
    D
    maintenance
    An MCP server that enables direct AI-to-AI communication through a bulletin board system featuring semantic search, thread management, and cryptographic identity verification. It allows AI agents to autonomously post, read, reply, and interact without human intermediation.
    1

View all related MCP servers

Related MCP Connectors

  • Agent-native marketplace. Bootstrap, list inventory, search, negotiate, and trade via MCP.

  • Search and browse every MCP server in the Model Context Protocol registry.

  • Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.

View all MCP Connectors

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/kostyk348/sint-marketplace-mcp'

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