mcp-okf
Servidor MCP que transforma um bundle OKF (pasta com index.md e um .md por documento, como o gerado pela
alm-sync do mcp-alm) numa base de conhecimento consultável em linguagem natural.
- Índice vetorial: Qdrant em modo local (pasta no disco, sem servidor), busca híbrida denso + BM25 com fusão RRF.
- Embeddings: fastembed local,
paraphrase-multilingual-mpnet-base-v2(PT-BR); nada sai da máquina. - Enriquecimento: feito pela própria LLM do cliente (sem chave de API): resumo, palavras-chave/sinônimos, entidades e perguntas que o documento responde.
- Links:
linksdo frontmatter (nomes do DOORS Next), links do corpo para outros arquivos do bundle (cita) e URL do ALM de artefato que está no bundle; backlinks e documentos semanticamente similares na leitura.
Instalação
Requer o uv. Baixe os modelos uma vez (~1 GB), para a 1ª indexação não estourar o timeout do cliente MCP:
uvx --from mcp-okf python -c "from mcp_okf import store; store.embed_dense(['x']); store.embed_sparse(['x'])"
Configuração do cliente MCP (Kiro: ~/.kiro/settings/mcp.json ou .kiro/settings/mcp.json do projeto):
{
"mcpServers": {
"okf": {
"command": "uvx",
"args": ["mcp-okf@latest"],
"env": { "UV_SYSTEM_CERTS": "true" }
}
}
}
Claude Code: claude mcp add okf -- uvx mcp-okf@latest.
Dados em ~/.config/mcp-okf/ (%APPDATA%\mcp-okf no Windows; ou MCP_OKF_HOME): qdrant/ e
state/<sha1(root)>.json (hash, links e enriquecimento de cada documento). Nada é gravado no bundle.
O Qdrant local trava a pasta: só um processo do mcp-okf por vez.
Tools
root é sempre o caminho absoluto do bundle.
| Tool | Parâmetros | Devolve |
|---|---|---|
okf_index |
root, limit=200, force=False |
{documentos, indexados, removidos, restantes, a_enriquecer}; incremental por sha256; chame até restantes=0 |
okf_enrich_next |
root, limit=5 |
{restantes, instrucoes, documentos: [{path, id, type, title, description, body, links}]} |
okf_save_enrichment |
root, items: [{path, summary, keywords, entities, questions}] |
{gravados, restantes} |
okf_search |
root, query, limit=8, folder?, type? |
[{path, id, title, type, folder, score, summary, trechos: [{section, text}]}] |
okf_list_documents |
root, folder?, type? |
[{path, id, title, type, folder, description, indexado, enriquecido}] |
okf_get_document |
root, ref (path ou id) |
{path, markdown, enrichment, links: {saida, entrada, similares}} |
Fluxo: okf_index até restantes=0 → okf_enrich_next / okf_save_enrichment até restantes=0 → perguntas
com okf_search e okf_get_document. Depois de um novo sincronismo da alm-sync, rode okf_index de novo: só o que
mudou é reindexado, e só o que mudou volta para a fila de enriquecimento.
Como indexa
Cada documento vira pontos chunk (corpo dividido por heading #..###, seções longas por parágrafo; cada chunk
leva o prefixo <tipo> <id> — <título> | <pasta> | <seção>) e um ponto doc (cabeçalho + enriquecimento). A busca
funde o ranking denso e o BM25 (RRF) e agrupa por documento.
Testes
uv run pytest
Os testes usam Qdrant em memória e embeddings falsos (não baixam modelo).
Metadata
Release files for mcp-okf 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_okf-0.2.3.tar.gz | 19.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_okf-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 39.2 kB
Release files / mcp_okf-0.2.3.tar.gz
| Download URL | mcp_okf-0.2.3.tar.gz |
|---|---|
| Size | 19.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2a97079ba820a68c563443357e2fb0913a0eb07aa71f124e12cfa6f56a0d0ead
|
|
BLAKE2b-256 checksum How to use checksums |
86a753ecb76c7a514f4fb143385c19f79ac0ce9eade7cb100e138120cf3719ec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / mcp_okf-0.2.3-py3-none-any.whl
| Download URL | mcp_okf-0.2.3-py3-none-any.whl |
|---|---|
| Size | 19.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6d5b685933d9432d90ed41d92df52e9b771da97f129ab8b5c6d1d5d0700707af
|
|
BLAKE2b-256 checksum How to use checksums |
fe62e614174ce9209da8aee2a0576afc24038540d28dce8e565281701c53fd59
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.24 {"installer":{"name":"uv","version":"0.12.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|