Knowledge MCP
An MCP server that acts as a knowledge engine for software projects, delivering relevant context at the start of a task and accumulating knowledge at its end through tools like start_task, context, finish_task, remember, and search, with a file-based source of truth and optional semantic retrieval via Graphiti/Neo4j.
README
Knowledge MCP
Um Knowledge Engine para projetos de software: entrega contexto relevante no início de uma tarefa e acumula conhecimento ao final dela. Não é uma memória — a inteligência de decidir o que é relevante e o que merece ser lembrado fica dentro do MCP, não no cliente.
Estado atual
| Fase | Escopo | Status |
|---|---|---|
| 0 | Spike técnico das dependências | ✅ concluída |
| 1 | Núcleo de arquivos (.knowledge/) |
✅ concluída |
| 2 | KnowledgeStore, IndexBackend, KnowledgeIndexer + contrato |
✅ concluída |
| 3 | As 5 tools + extractor, sobre backend em memória | ✅ concluída |
| 4 | Backend Graphiti (recuperação semântica) | ✅ concluída |
| 5 | Empacotamento e integração | ✅ concluída |
O MVP é utilizável de ponta a ponta, validado por E2E real através do protocolo MCP.
Os dois backends de índice
O padrão é graphiti: recuperação semântica é o desenho pretendido do produto.
Se o Neo4j não estiver no ar, o sistema degrada sozinho para a fonte de verdade — sem
erro e sem lentidão (um disjuntor evita repetir o timeout de conexão).
graphiti (padrão) |
memory |
|
|---|---|---|
| Recuperação | semântica (resolve sinônimos) | lexical, com casamento por prefixo |
| Infraestrutura | Neo4j local (sem Docker) | nenhuma |
| LLM por gravação | 2 chamadas, em background | nenhum |
| Relacionamentos entre registros | sim (grafo de entidades e fatos) | não |
Para subir o Neo4j:
scripts\start-neo4j.cmd
Ele não inicia sozinho com o Windows. Com ele parado, remember, search e
context continuam funcionando pela fonte de verdade — só a recuperação semântica
fica indisponível, e as tools avisam.
Com assinatura Pro/Max, as chamadas de LLM não são cobradas por token — consomem as janelas de limite do plano. O valor em dólar que o SDK reporta é estimado a preços de tabela da API e serve como proxy de consumo, não como fatura.
Quanto você espera (medido, backend graphiti)
| Operação | Tempo |
|---|---|
remember |
17–27 ms |
search, context, start_task |
20–50 ms |
| primeira busca da sessão | ~3 s (carrega o modelo na memória) |
| indexação no grafo | 16 s por registro, em background |
Você nunca espera pela indexação: remember grava o arquivo e devolve. O grafo alcança
depois, e enquanto isso a busca funciona pela fonte de verdade (ADR-004).
O modelo de embedding (~1 GB) é baixado uma vez por máquina, em
%LOCALAPPDATA%\knowledge-mcp\models, e compartilhado por todos os projetos.
Com memory, buscar "login" não encontra um registro sobre "autenticação". Com
graphiti, encontra — é o que tests/test_semantic_recall.py verifica.
Para ligar o backend semântico:
set KNOWLEDGE_MCP_INDEX=graphiti
set KNOWLEDGE_MCP_NEO4J_PASSWORD=sua-senha
Se o Neo4j estiver fora do ar, o sistema continua lendo, escrevendo e buscando pela fonte de verdade — só perde a recuperação semântica.
As cinco tools
| Tool | O quê | Escreve? |
|---|---|---|
start_task |
Contexto relevante antes de começar uma tarefa | não |
context |
Consulta livre ao conhecimento do projeto | não |
finish_task |
Sugere o que merece virar conhecimento permanente | não |
remember |
Grava o conhecimento aprovado | sim |
search |
Procura no conhecimento registrado | não |
O fluxo de escrita é sempre finish_task → o usuário aprova → remember. O MCP não
guarda estado de aprovação: ela vive na conversa (ADR-006).
Arquitetura em uma tela
KnowledgeRepository único autorizado a escrever em .knowledge — fonte de verdade
│
▼
KnowledgeIndexer sincroniza .knowledge com o índice; fila, hashes, rebuild
│
▼
KnowledgeStore apenas consulta: busca, relacionamentos, contexto
│
▼
Graphiti detalhe de implementação, substituível
As decisões estruturais estão em docs/adr/ e são verificadas mecanicamente por
testes em tests/test_architecture_rules.py — uma violação quebra o build, não só a convenção.
Princípios
- É melhor deixar de registrar um conhecimento do que registrar um conhecimento incorreto. Precisão importa mais que cobertura.
- A fonte de verdade é o
.knowledge/. O índice é reconstruível. - Evitar modelagem prematura. Campo, estado ou operação só entra quando houver caso real.
- O índice é uma aceleração, não uma dependência funcional. Sem o backend de índice, o sistema continua lendo, escrevendo e buscando — só perde qualidade de recuperação.
O formato .knowledge/
.knowledge/
manifest.yaml versão do schema, projeto, configuração do índice
decisions/ um diretório por tipo de registro
entities/
preferences/
conventions/
technologies/
summaries/
cache/ descartável e não versionado (índice, grafo, embeddings)
Cada registro é Markdown com frontmatter de exatamente quatro campos:
---
id: dec-20260731-adiar-a-escolha-do-backend-de-grafo
type: decision
title: Adiar a escolha do backend de grafo
created_at: 2026-07-31
---
**Contexto:** ...
**Decisão:** ...
**Consequências:** ...
O id é a identidade do registro; o caminho do arquivo é detalhe de armazenamento. Renomear
ou mover o arquivo à mão não cria um registro novo.
O formato é deliberadamente aberto: qualquer ferramenta deve conseguir produzi-lo ou consumi-lo — scripts, outros MCPs, outras IDEs, ou o próprio desenvolvedor editando à mão.
Instalação
Requer Python 3.13 (o 3.14 ainda não tem wheels para parte das dependências de grafo) e o Claude Code autenticado — o MCP usa a sessão existente, sem chave de API separada.
py -3.13 -m venv .venv && .venv/Scripts/python -m pip install -e ".[dev]"
Registrar no Claude Code
O servidor descobre a raiz do projeto pelo diretório de trabalho, então um registro
global serve todos os seus projetos — cada um ganha seu próprio .knowledge/.
claude mcp add knowledge --scope user -- C:\Users\guilh\.virtualenvs\knowledge-mcp\Scripts\knowledge-mcp.exe
Para registrar só num projeto, crie um .mcp.json na raiz dele:
{
"mcpServers": {
"knowledge": {
"command": "C:\\Users\\guilh\\.virtualenvs\\knowledge-mcp\\Scripts\\knowledge-mcp.exe"
}
}
}
Para apontar para um projeto fixo, independentemente do diretório de trabalho, defina a
variável de ambiente KNOWLEDGE_MCP_PROJECT.
Verifique a conexão com:
claude -p "/mcp" --mcp-config .mcp.json
Como usar
O fluxo natural é conversacional — você não gerencia conhecimento:
- Ao começar algo, o agente chama
start_taske recebe as decisões, regras e convenções que importam para aquela tarefa. - Ao terminar, ele chama
finish_taskcom um resumo. O MCP responde com uma sugestão do que merece ser lembrado — sem gravar nada. - Você aprova (ou não) na conversa. Só então o agente chama
remember.
search e context ficam disponíveis para consulta a qualquer momento.
Desenvolvimento
python -m pytest
Os testes em tests/test_architecture_rules.py verificam as decisões dos ADRs
mecanicamente: escrever em .knowledge/ fora do repositório, ou importar
graphiti_core fora de store/graphiti/, quebra o build.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。