Remnus
Alternativa de código aberto nativa do MCP ao Notion: leitura e escrita de páginas, bancos de dados personalizáveis e quadros kanban/calendário através de um servidor MCP remoto (OAuth 2.1 + PKCE, tokens com escopo, registro de auditoria).
Documentação
Remnus
Espaço de trabalho de código aberto nativo de MCP para humanos e agentes de IA.
Quadros Kanban, bancos de dados e páginas que Claude, Cursor e qualquer agente de IA podem ler e escrever via MCP — junto com você.
O que é o Remnus?
O Remnus é o Espaço de Trabalho Colaborativo Humano-Agente, construído em torno do Model Context Protocol (MCP). Cada página, banco de dados e quadro Kanban no seu espaço de trabalho é acessível a agentes de IA por meio de um servidor MCP de primeira classe — conecte editores com OAuth 2.1 (PKCE) em um clique, ou use um token de portador com escopo para agentes headless / CI.
Diferente da integração MCP do Notion, o Remnus foi projetado para fluxos de trabalho headless, CI/CD e agentes de codificação desde o primeiro dia.
Contexto nativo OKF, não um despejo do espaço de trabalho
O Remnus usa ideias do Open Knowledge Format (OKF) como um contrato de conhecimento portátil. As páginas podem carregar descrições, tipos, tags, fontes, estado do ciclo de vida, datas de atualização e sinais de revisão vinculados a revisões. A importação/exportação OKF v0.2 é a camada de intercâmbio; o espaço de trabalho editável do Remnus permanece canônico.
A ferramenta MCP prepare_context transforma uma tarefa concreta em Context Pack v2: um conjunto de conceitos com orçamento de tokens classificado por relevância BM25, metadados nativos, links de páginas, atualização e confiança. O modo Inteligente anuncia esse fluxo de contexto em primeiro lugar automaticamente para trabalhos significativos. O modo Estrito adicionalmente exige o contextRunId de curta duração do mesmo agente antes de mutações MCP do Remnus.
Isso não permite que um servidor MCP controle arquivos locais, comandos de shell ou Git. A aplicação em nível de repositório usa os trechos AGENTS.md e CLAUDE.md fornecidos. Leia o guia público Context-First MCP e a história de implementação, Como o Remnus usa OKF para dar melhor contexto aos agentes de IA.
Recursos
- Páginas — Editor Markdown com comandos de barra, subpáginas aninhadas e ícones
- Bancos de dados — Colunas personalizáveis, visualizações de Tabela / Kanban / Calendário, filtros, classificações
- Dashboards — Telas de status ao vivo (métricas, gráficos, listas, visualizações incorporadas) que um agente constrói a partir de algumas centenas de tokens de JSON e um humano pode editar bloco por bloco
- Servidor MCP — 27 ferramentas + 7 recursos + 7 prompts sobre Streamable HTTP sem estado
- Contexto nativo OKF — Metadados de conhecimento portátil, revisões de revisão exata, Context Pack v2 e políticas MCP Inteligente/Estrito
- Autenticação de agente — OAuth 2.1 + PKCE em um clique (registro dinâmico RFC 7591) para editores, ou tokens de acesso pessoal com escopo de leitura/escrita para agentes headless
- Multi-espaço de trabalho — Convide membros, acesso baseado em funções (proprietário / membro / visualizador)
- Aplicativo de desktop — Shell Tauri v2 para Windows, macOS, Linux
- Mobile — Capacitor v8 para iOS e Android (carrega remnus.com)
- i18n — Inglês, Türkçe, हिन्दी, Espanhol, Francês, Alemão, 中文, Russo
Início Rápido — Auto-hospedado
Desenvolvimento Local
git clone https://github.com/Ranork/remnus-app.git
cd remnus-app
cp .env.example .env # fill in AUTH_SECRET + OAuth credentials
npm install
npm run db:migrate
npm run dev
Abra http://localhost:3000. O primeiro usuário a se cadastrar é promovido automaticamente a administrador.
Docker Compose (configuração de 5 minutos)
Se você preferir executar o Remnus usando Docker:
- Clone o repositório e navegue até ele:
git clone https://github.com/Ranork/remnus-app.git cd remnus-app - Copie o modelo de ambiente e preencha as variáveis necessárias (especialmente
AUTH_SECRETe credenciais OAuth):cp .env.example .env - Inicie o aplicativo:
docker compose up -d - Acesse o Remnus em
http://localhost:3000. O banco de dados SQLite será persistido automaticamente usando um volume Docker.
Implantar
Adicionar MCP ao seu editor
Após entrar, abra o painel Agentes de IA na barra lateral e clique em Conectar editor. Ele orienta você por cada editor suportado (Cursor, VS Code, Claude Code, Codex, Windsurf e mais).
Instalar a partir de um registro
O Remnus está publicado no Registro MCP oficial (io.github.Ranork/remnus) e no Smithery, para que clientes e diretórios compatíveis com MCP possam descobri-lo automaticamente. O Smithery oferece instalação em um clique em vários clientes (Claude, Cursor, VS Code, Codex, Windsurf e mais) — abra a página do Smithery e clique em Adicionar à caixa de ferramentas, ou use a CLI do Smithery para instalar diretamente na configuração de um cliente:
npx -y smithery@latest mcp add ranorkk/remnus --client claude
Troque --client por cursor, vscode, codex, windsurf, etc. De qualquer forma, a primeira conexão executa o mesmo login OAuth 2.1 — sem token para colar.
Recomendado — OAuth (sem token): aponte seu editor para a URL MCP e aprove a tela de consentimento na primeira conexão. Seu editor executa o fluxo OAuth 2.1 automaticamente — nada para copiar.
{
"mcpServers": {
"remnus": {
"type": "http",
"url": "https://your-instance.com/api/mcp"
}
}
}
Headless / CI — token de acesso pessoal: crie um token com escopo no painel de Agentes de IA e envie-o como cabeçalho de portador.
{
"mcpServers": {
"remnus": {
"type": "http",
"url": "https://your-instance.com/api/mcp",
"headers": {
"Authorization": "Bearer <your-token>"
}
}
}
}
Ferramentas MCP
| Ferramenta | Escopo | Descrição |
|---|---|---|
prepare_context | leitura | Construir Context Pack v2 (BM25 + metadados OKF + grafo) e retornar um contextRunId de curta duração |
search_workspace | leitura | Pesquisa de texto completo em páginas e bancos de dados |
list_workspace | leitura | Listar itens da barra lateral com paginação |
get_page | leitura | Obter uma página, linha de banco de dados ou dashboard (como sua especificação de bloco) por ID |
get_pages | leitura | Obter várias páginas/linhas por ID em uma chamada (lote get_page) |
get_database_schema | leitura | Obter esquema de colunas de um banco de dados |
query_database | leitura | Consultar linhas com filtros e paginação |
list_members | leitura | Listar membros do espaço de trabalho com funções |
query_audit_log | leitura | Log de atividade de agentes filtrado |
get_changes_since | leitura | Feed compacto e cronológico do que mudou desde um timestamp ou cursor |
get_related_pages | leitura | Pai de uma página, filhos, links de saída, backlinks, irmãos de banco de dados e arquivos de origem — ou, dado um caminho de arquivo, as páginas que dependem dele |
create_page | escrita | Criar uma página independente ou linha de banco de dados, com um ícone |
bulk_create_pages | escrita | Criar até 50 páginas ou linhas em uma chamada, aninhando páginas via ref/parentRef |
update_page | escrita | Atualizar título, conteúdo ou propriedades |
bulk_update_pages | escrita | Atualizar várias linhas em uma chamada |
delete_page | escrita | Excluir uma página, banco de dados, dashboard ou linha (requer confirm: true) |
bulk_delete_pages | escrita | Excluir até 100 páginas/linhas/bancos de dados em uma chamada (requer confirm: true) |
move_item | escrita | Mover item para um novo pai |
bulk_move_items | escrita | Mover até 100 itens em uma chamada, reparentando ou movendo linhas para um banco de dados diferente |
create_database | escrita | Criar um banco de dados com esquema personalizado, ícone e visualizações |
update_database_schema | escrita | Adicionar ou remover colunas |
create_database_view | escrita | Adicionar uma visualização de tabela/kanban/calendário |
update_database_view | escrita | Renomear uma visualização ou corrigir sua configuração |
delete_database_view | escrita | Excluir uma visualização salva (requer confirm: true) |
create_dashboard | escrita | Criar um dashboard ao vivo a partir de blocos JSON; retorna sua URL e avisos para blocos que renderizariam vazios |
update_dashboard | escrita | Corrigir um dashboard por ID de bloco — adicionar, atualizar, remover, reordenar |
add_comment | escrita | Adicionar um comentário a uma página ou linha (comentários de agentes são somente anexação) |
Pilha de Tecnologia
- Framework: Next.js 16.2.6 (App Router)
- Banco de dados: SQLite via Drizzle ORM +
@libsql/client(compatível com Turso) - Autenticação: Auth.js v5 — OAuth Google e GitHub
- Estilo: Tailwind CSS + ícones Lucide
- Desktop: Tauri v2 (Rust)
- Mobile: Capacitor v8
Contribuindo
Veja CONTRIBUTING.md. Todas as contribuições são bem-vindas — correções de bugs, novas ferramentas MCP, traduções e documentação.
Licença
AGPL-3.0 — gratuito para auto-hospedar e modificar. Forks SaaS devem abrir o código de suas alterações.