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: um arquivo SQLite por bundle (sem servidor, vários processos podem abrir): FTS5 (BM25) + vetores densos com cosseno por força bruta (numpy), fusão RRF.
- Embeddings: fastembed local,
paraphrase-multilingual-MiniLM-L12-v2(PT-BR, ~220 MB); nada sai da máquina. - 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; saída e entrada na leitura. - Visualização:
okf_export_htmlgravaokf.htmlno bundle: grafo 3D dos links, lista filtrável e cada documento renderizado (markdown formatado, links internos navegáveis).
Instalação
Requer o uv. Baixe o modelo uma vez, 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(['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): <sha1(root)>.db por bundle.
Nada é gravado no bundle, exceto o okf.html quando pedido. Vindo da 0.2: pode apagar qdrant/ e state/ dessa
pasta (o enriquecimento pela LLM saiu; reindexe com okf_index).
Tools
root é sempre o caminho absoluto do bundle.
| Tool | Parâmetros | Devolve |
|---|---|---|
okf_index |
root, limit=200, force=False |
{documentos, indexados, removidos, restantes}; incremental por sha256; chame até restantes=0 |
okf_search |
root, query, limit=8, folder?, type? |
[{path, id, title, type, folder, score, trechos: [{section, text}]}] |
okf_list_documents |
root, folder?, type? |
[{path, id, title, type, folder, description, indexado}] |
okf_get_document |
root, ref (path ou id) |
{path, markdown, links: {saida, entrada}} |
okf_export_html |
root |
{arquivo, documentos, links}; grava <root>/okf.html (bibliotecas via CDN) |
Fluxo: okf_index 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.
Como indexa
Cada documento vira chunks (corpo dividido por heading #..###, seções longas por parágrafo; cada chunk leva o
prefixo <tipo> <id> — <título> | <pasta> | <seção>), gravados com o vetor e no FTS5. A busca funde o ranking
denso e o BM25 (RRF) e agrupa por documento.
Testes
uv run pytest
Os testes usam um SQLite temporário e embeddings falsos (não baixam modelo).
Metadata
Release files for mcp-okf 0.3.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.3.0.tar.gz | 18.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_okf-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.1 kB
Release files / mcp_okf-0.3.0.tar.gz
| Download URL | mcp_okf-0.3.0.tar.gz |
|---|---|
| Size | 18.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
993156b45a1b05700c0da2649fa3369bcab3cf71978af222dceefbe17f674afb
|
|
BLAKE2b-256 checksum How to use checksums |
d4e48831f1e9132433a36452b76535762392f6d1e298a1090811073c91914c5c
|
| 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.3.0-py3-none-any.whl
| Download URL | mcp_okf-0.3.0-py3-none-any.whl |
|---|---|
| Size | 17.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f0b12128a724338a72cdafefa7fa6b2aa168c898d8c29b258e043142bfea40d0
|
|
BLAKE2b-256 checksum How to use checksums |
7df37229b3d06b14e1f574913defb073f90c521b1342af385e87a2e18d85c8fa
|
| 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}
|