Workspace-Qdrant-MCP

Conhecimento de código e metadados com atualização ao vivo, biblioteca de conhecimento, buscas semânticas e vetoriais

Documentação

workspace-qdrant-mcp

License: Apache 2.0 GitHub Release Glama Homebrew TypeScript Rust Qdrant

Banco de dados vetorial com escopo de projeto para assistentes de IA, fornecendo busca híbrida semântica + por palavras-chave com detecção automática de projeto.

🚧 v0.2.0 reconstrução em andamento

workspace-qdrant-mcp está sendo reconstruído do zero em preparação para v0.2.0 — um modelo de armazenamento unificado, melhor qualidade de busca, monitoramento de arquivos mais confiável e uma arquitetura mais limpa, com migração sem reindexação para usuários existentes. Assim que o design for definido (previsto para início de julho), abriremos o trabalho para contribuidores externos. Veja o Roadmap para o plano geral.

Recursos

  • Busca Híbrida - Combina similaridade semântica com correspondência de palavras-chave usando Fusão por Classificação Recíproca
  • Detecção de Projeto - Consciência automática de repositório Git e coleções com escopo de projeto
  • 7 Ferramentas MCP - search, retrieve, rules, store, grep, list, embedding
  • Inteligência de Código - Chunking semântico Tree-sitter + integração LSP para projetos ativos
  • Grafo de Código - Grafo de relacionamento com algoritmos (PageRank, detecção de comunidades, centralidade de intermediação)
  • CLI de Alto Desempenho - Ferramenta de linha de comando wqm baseada em Rust
  • Daemon em Segundo Plano - memexd para monitoramento e processamento contínuo de arquivos

Início Rápido

Pré-requisitos

  • Qdrant - docker run -d -p 6333:6333 -v qdrant_storage:/qdrant/storage qdrant/qdrant
  • Compilador C - Necessário para compilar as gramáticas Tree-sitter no primeiro uso. As gramáticas Tree-sitter são distribuídas como código-fonte C e compiladas localmente.
    • macOS: xcode-select --install (Xcode Command Line Tools)
    • Linux: apt install build-essential (Debian/Ubuntu) ou dnf groupinstall "Development Tools" (Fedora)
    • Windows: Instale Visual Studio Build Tools com a carga de trabalho C++
  • Clang/LLVM - Necessário apenas para compilar memexd a partir do código-fonte, para o núcleo C++ do LadybugDB (o backend de grafo padrão). Binários pré-compilados (Homebrew, artefatos de release) não precisam disso.
    • macOS: As Xcode Command Line Tools incluem Clang (xcode-select --install)
    • Linux: apt install clang libclang-dev (Debian/Ubuntu) ou dnf install clang (Fedora)
    • Alternativa: compilar sem o toolchain C++ usando o backend somente SQLite — cargo build --no-default-features --features sqlite

Instalação

Opção 1: Homebrew (Recomendado — macOS e Linux)

brew install ChrisGVE/tap/workspace-qdrant
brew services start workspace-qdrant

Opção 2: Binários Pré-compilados

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ChrisGVE/workspace-qdrant-mcp/main/scripts/download-install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/ChrisGVE/workspace-qdrant-mcp/main/scripts/download-install.ps1 | iex

Instala wqm, memexd e workspace-qdrant-mcp em ~/.local/bin (Linux/macOS) ou %LOCALAPPDATA%\wqm\bin (Windows).

Opção 3: Compilar a partir do Código-Fonte

git clone https://github.com/ChrisGVE/workspace-qdrant-mcp.git
cd workspace-qdrant-mcp
./install.sh

Consulte a Referência de Instalação para instruções detalhadas e notas específicas da plataforma. Para Windows, consulte o Guia de Instalação para Windows.

Configurar MCP

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "workspace-qdrant-mcp": {
      "command": "workspace-qdrant-mcp",
      "env": {
        "QDRANT_URL": "http://localhost:6333"
      }
    }
  }
}

Claude Code:

claude mcp add workspace-qdrant-mcp -- workspace-qdrant-mcp

Verificar

wqm --version
wqm status health

Integração com CLAUDE.md

Adicione o seguinte ao CLAUDE.md do seu projeto (ou ao seu ~/.claude/CLAUDE.md global) para que o Claude Code use o workspace-qdrant proativamente:

## workspace-qdrant

The `workspace-qdrant` MCP server provides codebase-aware search, a library knowledge base, a scratchpad for accumulated insights, and persistent behavioral rules. The tool schemas are self-describing; these instructions cover *when* and *how* to use them.

### Primary Search and Knowledge Base

**Use `workspace-qdrant` first whenever context is uncertain** — first session on a project, returning after a significant gap, or exploring an unfamiliar subsystem. It is faster and more accurate than walking files manually, and it retrieves findings from prior sessions that would otherwise be lost.

**Three-step protocol:**
1. **Search** with `workspace-qdrant` (`search`, `grep`, `list`, or `retrieve`)
2. **Fall back** to `Grep`, `Glob`, `WebSearch` only when workspace-qdrant is insufficient or unavailable
3. **Store** any new findings, analysis, or design rationale via `store` so they are retrievable in future sessions

When a fresh handover or strong prior context already covers what you need, skip the exploratory search — but always store new findings at the end.

**Collections and their purpose:**
- `projects` — indexed codebase; use `scope="project"` (current project) or `scope="all"` (across all projects)
- `libraries` — external reference docs, API specs, third-party documentation; add via `store` with `collection="libraries"` and search with `includeLibraries=true`
- `scratchpad` — analysis, design rationale, research transcripts, architectural insights; complements session handovers by building a growing, semantically searchable knowledge layer across sessions
- `rules` — persistent behavioral rules; load at session start via `rules` → `action="list"`

**Practical notes:**
- Use `grep` for exact strings or regex; `list` with `format="summary"` to explore project structure
- Store external docs or specs into `libraries` so they are searchable alongside code
- Use the scratchpad to record *why* decisions were made, not just *what* was done — future sessions can retrieve the reasoning

### Sub-Agents

Sub-agents start with only the prompt you give them — they have no session history or handover context. They must always use `workspace-qdrant` first for any code exploration, without exception. Include this verbatim in every agent prompt:

> "You have no prior context about this codebase. Use `workspace-qdrant` as your mandatory first tool for ALL code searches — symbols, functions, architecture, patterns, prior findings. Use `search`, `grep`, `list`, or `retrieve` before touching any file with Read/Grep/Glob. Store any new findings, analysis, or design rationale via `store` (scratchpad for insights, libraries for reference docs) so they persist for future sessions."

### Project Registration

At session start, check whether the current project is registered with workspace-qdrant. If it is not, ask the user whether they want to register it (do not register silently). Once registered, the daemon handles file watching and ingestion automatically — no further action is needed.

### Behavioral Rules

The `rules` tool manages persistent rules that are injected into context across sessions. Rules are **user-initiated only** — add rules when the user explicitly instructs you to, never autonomously. Use `action="list"` at session start to load active rules.

### Issue Reporting

workspace-qdrant is under active development. If you encounter errors, unexpected behavior, or limitations with any workspace-qdrant tool, report them as GitHub issues at https://github.com/ChrisGVE/workspace-qdrant-mcp/issues using the `gh` CLI.

Ferramentas MCP

FerramentaPropósito
searchBusca híbrida semântica + por palavras-chave em conteúdo indexado
retrieveConsulta direta de documentos por ID ou filtro de metadados
rulesGerenciar regras comportamentais persistentes
storeArmazenar conteúdo, registrar projetos, salvar notas
grepBusca exata por substring ou regex usando FTS5
listListar arquivos do projeto e estrutura de pastas

Consulte a Referência de Ferramentas MCP para parâmetros e exemplos.

Coleções

ColeçãoPropósitoIsolamento
projectsCódigo e documentação do projetoMulti-tenant por tenant_id
librariesDocumentação de referência (livros, artigos, docs)Multi-tenant por library_name
rulesRegras comportamentais e preferênciasMulti-tenant por project_id
scratchpadArmazenamento temporário de trabalhoPor sessão

Referência da CLI

# Service management
wqm service start              # Start background daemon
wqm service status             # Check daemon status
wqm status health              # System health check

# Search and content
wqm search "query"             # Search collections
wqm ingest file path.py        # Ingest a file
wqm rules list                 # List behavioral rules

# Project and library
wqm project list               # List registered projects
wqm project watch pause        # Pause file watchers
wqm library list               # List libraries
wqm tags list                  # List tags with counts

# Administration
wqm admin collections list     # List collections
wqm admin rebuild all          # Rebuild all indexes
wqm admin backup create        # Backup snapshots
wqm admin stats overview       # Search analytics

# Code graph
wqm graph stats --tenant <t>   # Node/edge counts
wqm graph query --node-id <id> --tenant <t> --hops 2   # Related nodes
wqm graph impact --symbol <name> --tenant <t>           # Impact analysis
wqm graph pagerank --tenant <t> --top-k 20              # PageRank centrality

# Setup
wqm init completions zsh       # Shell completions
wqm init man install           # Install man pages
wqm init hooks install         # Install Claude Code hooks (respects CLAUDE_CONFIG_DIR)

# Queue and monitoring
wqm queue stats                # Queue statistics

Consulte a Referência da CLI para documentação completa.

Configuração

Variáveis de Ambiente

VariávelPadrãoDescrição
QDRANT_URLhttp://localhost:6333URL do servidor Qdrant
QDRANT_API_KEY-Chave da API (necessária para Qdrant Cloud)
FASTEMBED_MODELall-MiniLM-L6-v2Modelo de embedding

Integração com Claude Code

wqm init hooks lê e escreve o settings.json do Claude Code. A localização é resolvida a partir de:

VariávelPadrãoDescrição
CLAUDE_CONFIG_DIR~/.claudeDiretório de configuração do Claude Code usado por wqm init hooks install/uninstall/status. Defina isso para Claude Code Enterprise ou qualquer instalação não padrão.

Exemplo — Claude Code Enterprise:

export CLAUDE_CONFIG_DIR=~/.config/claude/claude-ent
wqm init hooks install

Observabilidade

O daemon expõe métricas e traces. Ambos estão desabilitados por padrão.

Prometheus (/metrics, pull)

Habilite via configuração ou variável de ambiente e depois faça o scrape:

# in the daemon config
observability:
  telemetry:
    prometheus:
      enabled: true
      port: 9464
      bind: 0.0.0.0

ou:

WQM_PROMETHEUS_ENABLED=true WQM_PROMETHEUS_PORT=9464 memexd --foreground
curl http://localhost:9464/metrics | head

A flag de CLI --metrics-port <N> é um atalho que força enabled=true e substitui a porta. Veja docs/observability/prometheus-scrape-example.yaml para um trecho de scrape_configs e docs/observability/memexd-telemetry-dashboard.json para um painel do Grafana 10.

Traces OTLP (push)

Os spans #[tracing::instrument] no processador de fila, watcher, gRPC, embedding e caminhos Qdrant são exportados via OTLP/gRPC quando:

observability:
  telemetry:
    service_name: memexd
    otlp:
      enabled: true
      endpoint: http://collector.example:4317
      protocol: grpc   # http/protobuf is also recognized (logs a warning)
      sample_rate: 0.1

As variáveis de ambiente padrão do OpenTelemetry são respeitadas: OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_EXPORTER_OTLP_PROTOCOL, OTEL_EXPORTER_OTLP_HEADERS, OTEL_TRACES_SAMPLER_ARG.

A exportação de métricas OTLP não está implementada atualmente — o Prometheus é a superfície canônica de métricas.

Arquitetura

                    +-----------------+
                    |  Claude/Client  |
                    +--------+--------+
                             |
                    +--------v--------+
                    |   MCP Server    |  (TypeScript)
                    +--------+--------+
                             |
              +--------------+--------------+
              |                             |
     +--------v--------+           +--------v--------+
     |   Rust Daemon   |           |     Qdrant      |
     |    (memexd)     |           | Vector Database |
     +--------+--------+           +-----------------+
              |
     +--------v--------+
     |  File Watcher   |
     |  Code Graph     |
     |  Embeddings     |
     +-----------------+

O daemon Rust lida com monitoramento de arquivos, geração de embeddings, extração de grafo de código e processamento de fila. Todas as escritas passam pelo daemon para consistência.

Documentação

Guias do usuário:

Referência:

Consulte o Índice de Documentação para especificações, ADRs e recursos para desenvolvedores.

Desenvolvimento

# Rust daemon, CLI, and MCP server (from src/rust/)
# Builds memexd (daemon), wqm (CLI), and workspace-qdrant-mcp (MCP server)
cargo build --release
cargo test

# Graph benchmarks
cargo bench --package workspace-qdrant-core --bench graph_bench

# Binaries output to:
# - target/release/wqm
# - target/release/memexd

Contribuindo

Consulte CONTRIBUTING.md para configuração de desenvolvimento e diretrizes.

Licença

Apache License 2.0 - consulte LICENSE para detalhes.


Inspirado por claude-qdrant-mcp