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
uv sync
# baixa os modelos uma vez (~1 GB), para a 1ª indexação não estourar o timeout do cliente MCP
uv run python -c "from mcp_okf import store; store.embed_dense(['x']); store.embed_sparse(['x'])"
claude mcp add okf -- uv --directory /caminho/mcp-okf run mcp-okf
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.1.0
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.1.0.tar.gz | 14.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_okf-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.5 kB
Release files / mcp_okf-0.1.0.tar.gz
| Download URL | mcp_okf-0.1.0.tar.gz |
|---|---|
| Size | 14.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07f6843dd560a81e6c76bf55a4a817b16b0fc936c7442bd11c6d1a0f012d00e4
|
|
BLAKE2b-256 checksum How to use checksums |
56c625e32b421b0fdad7c1627d2eb4abe507a7eb8ea9f42979779b904c57999a
|
| 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.1.0-py3-none-any.whl
| Download URL | mcp_okf-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
36d60b3ca8f8a6e35ab4ecea7a597d38ac65c2312f6a4a149e801a3cf4f5c6e7
|
|
BLAKE2b-256 checksum How to use checksums |
087141eff95d6cf7ea577675c3fb41b1cc05631dc3ad11ce2e4ed8c96c8465ae
|
| 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}
|