Ratary

Memória de codificação persistente para assistentes de IA — MCP stdio + URL remota, busca híbrida, grafo de conhecimento, contexto eficiente em tokens. Auto-hospedável no Cloudflare D1 ou Postgres.

Documentação

Ratary — Servidor MCP

Categoria: Memória · Transporte: stdio (local) + HTTP Streamable (remoto, opt-in)
Repositório: github.com/ontorata/ratary
Listagem: envie para mcpservers.org com o link https://github.com/ontorata/ratary/tree/main/MCP

Memória de codificação persistente para assistentes de IA — salve, pesquise, construa contexto eficiente em tokens, navegação em grafo de conhecimento e sincronização multi-cliente. Funciona com Cursor, Claude Code, Roo, Cline, Gemini CLI e hosts MCP remotos (URL do aplicativo ChatGPT quando implantado).

Ecossistema: Criado pela Ontorata. Este documento cobre o Ratary Memory MCP (id ratary). Ontorata MCP e Ontorata Studio são repositórios separados.

npm: Proxy REST hospedado — @ratary/mcp-server (org @ratary). O stdio completo (30 ferramentas) exige clonar este repositório.


Onde está o código do servidor?

ModoLocalizaçãoQuando usar
Servidor completo (30 ferramentas)src/mcp/stdio.tssrc/transport/mcp/mcp-server.tsClone o repositório; qualquer SQL_PROVIDER (D1, Postgres, Supabase, MariaDB, …)
Proxy npm (6 ferramentas)packages/mcp-server/ (@ratary/mcp-server)Conectar à API REST hospedada com RATARY_API_KEY
HTTPS remotosrc/transport/mcp/remote/REMOTE_MCP_ENABLED=true em deploy Vercel

Registro SSOT de ferramentas: src/capabilities/mcp-tool-names.ts


Início rápido (stdio local)

Configure um provedor de metadados SQL primeiro — veja CONFIGURAÇÃO — armazenamento de metadados SQL.

1. Pré-requisitos

git clone https://github.com/ontorata/ratary.git
cd ratary
npm install
cp .env.example .env
# Set SQL_PROVIDER + matching credentials (D1, DATABASE_URL, or MARIADB_CONNECTION_STRING)
npm run db:migrate   # D1 only — use db:apply-postgres-schema for Postgres / Supabase

Servidor de desenvolvimento REST: npm run devhttp://localhost:9876 (Swagger /docs). Substitua com PORT em .env.

2. Gerar configuração do MCP

npm run setup

Grava .cursor/mcp.json e .mcp.json automaticamente.

3. Configuração manual (qualquer IDE)

Veja docs/examples/mcp/cursor.mcp.json.example — substitua REPO_PATH pelo caminho do seu clone.

{
  "mcpServers": {
    "ratary": {
      "command": "npx",
      "args": ["-y", "tsx", "REPO_PATH/src/mcp/stdio.ts"],
      "cwd": "REPO_PATH"
    }
  }
}

Recarregue o MCP na sua IDE. Nenhuma chave de API é necessária no Cursor ao usar o modo D1 direto.


API remota / hospedada (pacote npm)

Para equipes que usam um endpoint REST Ratary implantado:

npm install -g @ratary/mcp-server
export RATARY_BASE_URL=https://ratary.ontorata.com
export RATARY_API_KEY=aic_...
ratary-mcp

Exemplo de configuração: docs/examples/mcp/remote-api.mcp.json.example


URL MCP remota (ChatGPT / clientes web)

Implante com:

REMOTE_MCP_ENABLED=true

Endpoint: https://your-host/mcp (Bearer aic_... ou OAuth quando habilitado).
Smoke test de CI: tests/transport/remote-mcp-chatgpt-smoke.test.ts (payload de inicialização estilo ChatGPT).
Detalhes: GUIA — ChatGPT · CONFIGURAÇÃO — Nível 4


Ferramentas (servidor completo — 28)

FerramentaFinalidade
save_memory, update_memory, delete_memoryCRUD
get_memory, get_memory_by_codename, get_memory_by_path, search_memoryLeitura e busca (modos de precisão quando PRECISION_SEARCH_ENABLED=true)
get_context, build_promptContexto eficiente em tokens (~85% de economia padrão)
list_projects, list_tagsNavegação
link_memories, list_relations, traverse_relations, get_graph_capabilitiesGrafo de conhecimento
list_workspaces, list_agents, register_agentEspaço de trabalho multi-IA
get_capabilities, negotiate_capabilitiesDescoberta de agentes
submit_signalFeedback de qualidade (adaptação de classificação)
run_stewardship, get_compression_statusManutenção
sync_pull, sync_push, sync_statusSincronização multi-cliente (opt-in)
toggle_favorite, archive_memoryCiclo de vida

Contrato de erros ({error, retryable})

Falhas de ferramentas nunca aparecem como erros de protocolo MCP. Qualquer exceção de handler — e qualquer argumento inválido/ausente — retorna um resultado de ferramenta estruturado (isError: true) cujo texto é JSON analisável:

{ "error": "<message>", "retryable": false }

retryable é uma dica de comportamento do cliente, não uma declaração sobre a implementação atual:

  • retryable: true — leituras idempotentes (search_memory, get_memory*, get_context, build_prompt, list_*, traverse_relations, get_capabilities, negotiate_capabilities, get_compression_status, sync_pull, sync_status) falhando transitoriamente. Repita com um backoff curto e limitado (2–3 tentativas).
  • retryable: false — todas as mutações (save_memory, update_memory, delete_memory, link_memories, toggle_favorite, archive_memory, register_agent, submit_signal, sync_push) além de run_stewardship (uma execução pode ter sucesso parcial entre sub-etapas; repetição automática arrisca manutenção duplicada). Também toda falha determinística (validação, não encontrado, autenticação) em qualquer ferramenta — repetir entrada idêntica não pode ter sucesso.

Orientação ao cliente:

  1. Nunca repita cegamente uma escrita em um timeout ambíguo — um sucesso silencioso seguido de repetição cria duplicatas. Ou passe um request_id (abaixo) para que a repetição seja segura, ou continue o turno e reconcilie no próximo search_memory/recuperação.
  2. Trate a memória como contexto de melhor esforço, não uma dependência rígida. Se uma chamada falhar, prossiga com o contexto que você já tem e tente novamente no próximo turno. Uma escrita perdida é recuperável; um turno de agente travado não é.
  3. Fonte de verdade da classificação: src/transport/mcp/mcp-tool-retry-classification.ts · suíte de regressão do contrato: tests/mcp-error-contract/.

Criações idempotentes (request_id)

save_memory aceita um request_id opcional (UUID, mesmo estilo do submit_signal's signal_id). Gere um por criação lógica e reutilize-o em cada repetição dessa criação:

  • A primeira chamada com um request_id dado cria a memória normalmente.
  • Qualquer repetição com o mesmo request_id — incluindo após um timeout ambíguo — retorna a memória original como sucesso, enriquecida com "duplicate": true, "replayed": true. Nenhuma segunda linha é jamais criada, mesmo que a primeira tentativa tenha falhado no meio da escrita.
  • Itens de criação sync_push recebem a mesma proteção automaticamente, chaveada pelo memory_id do item — reenviar um lote reproduz em vez de duplicar.

A idempotência é garantida enquanto o registro de intenção existir. Registros de intenção concluídos são podados após WRITE_INTENT_TTL_DAYS (padrão de 30 dias) como política de limpeza — uma repetição que chegar após essa janela pode criar uma duplicata. A limpeza nunca exclui uma intenção não resolvida (reivindicada sem resultado); essas são mantidas e apresentadas nas conclusões de administração. Sem um request_id, o comportamento permanece inalterado: salvamentos idênticos criam memórias distintas.

Design: ADR-067 · suíte de contrato: tests/idempotent-writes/.


Listagens de diretórios (Fase 31L)

Envie o Ratary Memory MCP para diretórios públicos usando o pacote de copiar-e-colar em MCP/submission/.

Arquivo do pacoteDiretório
submission/mcpservers-org.mdmcpservers.org/submit — categoria Memória
submission/official-registry.server.jsonOfficial MCP Registry
submission/awesome-mcp-servers-entry.mdPRs do awesome-mcp-servers no GitHub
submission/cursor-marketplace.mdMarketplace de plugins do Cursor
submission/claude-marketplace.mdMarketplace de plugins do Claude Code
submission/directory-status.mdRastreamento do operador (Pronto → Enviado → Listado)

mcpservers.org (cópia rápida)

CampoValor
Nome do servidorRatary
Descrição curtaMemória de codificação persistente para assistentes de IA — salve, pesquise, recuperação híbrida, grafo de conhecimento, contexto eficiente em tokens. MCP stdio (30 ferramentas), proxy npm ou HTTP Streamable remoto. Self-hosting em D1, Postgres, Supabase, MariaDB ou Docker.
Linkhttps://github.com/ontorata/ratary/tree/main/MCP
CategoriaMemória
Contatohello@ontorata.com

Manifestos de marketplace harness

CaminhoPropósito
harness/marketplace/ratary-marketplace.jsonFonte do Claude Code /plugin marketplace add
harness/claude-code/plugin.jsonStub de metadados do plugin
harness/marketplace/README.mdInstruções de publicação

SSOT de metadados

Metadados locais do repositório para ferramentas: server.json (flags stdio + npm + remote). A publicação no registro usa submission/official-registry.server.json.

Limite: Liste apenas Ratary Memory MCP (ratary) — não Ontorata MCP nem Ontorata Studio.


Documentação

DocumentoPropósito
docs/install/README.mdInstalação por harness (Cursor, Claude, remoto, …)
MCP/submission/README.mdListagem de diretório do pacote de submissão (31L)
docs/GUIDE.mdConfiguração e uso
docs/DOCKER.mdSelf-host em contêiner
docs/README.mdÍndice de documentação humana
docs/examples/Configurações MCP, templates de IDE, padrões de SDK

Licença

MIT — consulte LICENSE na raiz do repositório.