Skip to main content

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: links do 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_html grava okf.html no 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)

Source distribution for mcp-okf 0.3.0
File Size Uploaded
mcp_okf-0.3.0.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-okf 0.3.0
File Interpreter ABI Platform
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}

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page