SeekStorm MCP Server

O servidor MCP SeekStorm oferece busca lexical, vetorial e híbrida. Tudo é incorporado; nenhum servidor de busca externo é necessário.

Documentação

Servidor de busca SeekStorm MCP

Logo
Crates.io Downloads License Roadmap

O SeekStorm MCP Server expõe a biblioteca de busca SeekStorm como um servidor local Model Context Protocol.
Ele é executado como um processo filho via MCP stdio, incorpora o SeekStorm diretamente e possui seu próprio índice local. Nenhum processo seekstorm_server ou conexão de rede é necessário.
O servidor suporta recuperação lexical, vetorial e híbrida, além de indexação de documentos e gerenciamento de índices.

  • Suporta esquemas configuráveis e configurações de índice, indexação/atualização/exclusão de documentos, recuperação e iteração, ingestão de JSON/NDJSON e indexação de PDF.
  • Suporta busca lexical, vetorial e híbrida, incluindo filtros, facetas, ordenação e realce.
  • Adicionados testes de unidade, integração stdio e testes de contrato MCP.
  • O servidor MCP atualmente implementa apenas o modo incorporado; ele não se conecta a um servidor SeekStorm remoto.

Saiba mais sobre agentes de IA, RAG e MCP — o que significam e como se encaixam.

Início rápido

Compile a partir da raiz do workspace:

cargo build --release -p seekstorm_mcp_server

Adicione o servidor a uma configuração de cliente MCP. Substitua o caminho do executável pela localização do binário compilado:

{
  "mcpServers": {
    "seekstorm": {
      "command": "C:/path/to/seekstorm_mcp_server.exe",
      "env": {
        "SEEKSTORM_INDEX_PATH": "C:/Users/me/seekstorm-index"
      }
    }
  }
}

O servidor abre o índice em SEEKSTORM_INDEX_PATH se ele existir. Caso contrário, ele cria um índice nesse local com um esquema padrão pequeno contendo os campos de texto title, body e path. O índice é confirmado quando o processo MCP é encerrado.

Você também pode iniciá-lo diretamente a partir do workspace durante o desenvolvimento:

$env:SEEKSTORM_INDEX_PATH = "$PWD/seekstorm_index"
cargo run -p seekstorm_mcp_server

Os clientes MCP falam o protocolo stdio; não envie saída regular para o stdout do servidor.

Configuração do Índice

Para criar um índice com um esquema diferente ou configurações vetoriais na inicialização, defina SEEKSTORM_INDEX_CONFIG para um arquivo JSON contendo um CreateIndexRequest do SeekStorm. O caminho do índice ainda vem de SEEKSTORM_INDEX_PATH.

{
  "index_name": "project_docs",
  "schema": [
    { "field": "title", "field_type": "Text", "store": true, "index_lexical": true, "boost": 5 },
    { "field": "body", "field_type": "Text", "store": true, "index_lexical": true, "longest": true },
    { "field": "url", "field_type": "Text", "store": true, "index_lexical": false }
  ],
  "similarity": "Bm25f",
  "tokenizer": "UnicodeAlphanumericFolded"
}

A solicitação usa os mesmos tipos de esquema e configuração de índice que o cliente de biblioteca/REST do SeekStorm, incluindo sinônimos, correção ortográfica, conclusão de consulta, inferência vetorial e agrupamento. Para um processo já em execução, use a ferramenta MCP create_index com um objeto index_path e um objeto config, ou use open_index para alternar para um índice local existente. Alternar índices confirma primeiro o índice atualmente ativo.

Ferramentas

  • create_index, open_index, get_index_info, clear_index, commit
  • index_document, index_documents, update_document, update_documents
  • search, get_document, document_iterator
  • delete_document, delete_documents, delete_documents_by_query
  • ingest_json, index_pdf_file, get_file

Os documentos são objetos JSON arbitrários cujos campos devem corresponder ao esquema do índice ativo. ingest_json transmite arrays JSON, NDJSON e documentos JSON concatenados. index_pdf_file extrai texto de um PDF local e requer uma biblioteca Pdfium disponível. get_file retorna os bytes do arquivo associado como texto base64.

delete_documents_by_query usa length e offset para limitar e paginar pelos documentos correspondentes antes da exclusão. Pesquise primeiro para verificar as correspondências pretendidas.

Busca

search aceita uma consulta, length, offset e mode (Lexical, Vector ou Hybrid). Ele também suporta tipos de consulta e reescrita do SeekStorm, busca em tempo real, seleção de campos, filtros/facetas, ordenação, realce, configurações de ANN e limites de similaridade.

Para busca vetorial ou híbrida, forneça query_vector (valores float) ou query_vector_i8 (valores inteiros de 8 bits com sinal), a menos que o índice ativo esteja configurado com um modelo de inferência interno. Vetores explícitos devem corresponder às dimensões do índice. A busca vetorial precisa de campos indexados por vetor no esquema; a busca híbrida pode combinar campos lexicais e vetores. ann_mode aceita o AnnMode serializado do SeekStorm, por exemplo "All" ou { "Nprobe": 8 }.

Exemplo de argumentos da ferramenta de busca lexical:

{
  "query": "indexing pipeline",
  "mode": "Lexical",
  "length": 5,
  "offset": 0,
  "field_filter": ["title", "body"]
}

Exemplo de argumentos de busca vetorial para um índice vetorial tridimensional:

{
  "query": "related documents",
  "mode": "Vector",
  "query_vector": [0.12, -0.03, 0.88],
  "length": 5
}

Definições de facetas, filtros de facetas, definições de ordenação, realces, reescrita de consultas e configurações de enumeração são passados em suas formas JSON serializadas do SeekStorm. O esquema e as configurações do índice são fixados quando um índice é criado; alterá-los requer criar um novo índice e reindexar os documentos.

Testes

Execute todos os testes de unidade do servidor, integração stdio e testes de contrato MCP a partir da raiz do workspace:

cargo test -p seekstorm_mcp_server