SAP Documentation

Fornece acesso offline à documentação SAP e conteúdo em tempo real da Comunidade SAP.

Documentação

MCP SAP Docs (Upstream)

Um servidor MCP que dá aos assistentes de IA (Claude, Cursor, ChatGPT, etc.) acesso à documentação SAP por meio de uma interface unificada de busca e recuperação. Ele combina um índice local de texto completo + semântico sobre documentação SAP clonada via git com consultas opcionais ao vivo para SAP Help, SAP Community e Software Heroes — tudo exposto como ferramentas MCP.

Instalação

Adicionar ao Werkbank

Ou adicione-o a qualquer cliente MCP que suporte HTTP transmissível:

{
  "mcpServers": {
    "sap-docs": {
      "type": "http",
      "url": "https://mcp-sap-docs.marianzeis.de/mcp"
    }
  }
}

Nenhuma chave de API ou login é necessária — o servidor é público e somente leitura.

Endpoint Público Hospedado

Pronto para usar — nenhuma configuração necessária

VarianteURL
SAP Docshttp://mcp-sap-docs.marianzeis.de/mcp
ABAPhttps://mcp-abap.marianzeis.de/mcp

Variantes

mcp-sap-docs é o repositório upstream para duas variantes de servidor MCP que compartilham uma base de código e diferem pela configuração (MCP_VARIANT / .mcp-variant):

VarianteEscopoFerramentas extras
sap-docsDocumentação SAP ampla: UI5, CAP, Cloud SDK, ABAP, BTP, AI, TerraformFerramentas do Discovery Center
abapFocada em ABAP: documentação de palavras-chave ABAP, RAP, folhas de dicas, guias de estiloabap_lint

Fontes de Documentação

Fontes offline (índice local, sempre disponível)

FonteDescrição
abap-docs-standardDocumentação oficial de palavras-chave ABAP — on-premise / sintaxe completa
abap-docs-cloudDocumentação oficial de palavras-chave ABAP — ABAP Cloud / BTP (sintaxe restrita)
abap-cheat-sheetsTrechos de código e exemplos práticos de ABAP/RAP
abap-fiori-showcaseDemonstração de recursos RAP + OData V4 + Fiori Elements orientada por anotações
abap-platform-rap-opensapAmostras do curso openSAP "Building Apps with RAP"
cloud-abap-rapProjetos de exemplo ABAP Cloud + RAP
abap-platform-reuse-servicesExemplos de serviços de reutilização RAP (faixas numéricas, e-mail, Adobe Forms, …)
sap-styleguidesGuia de estilo SAP Clean ABAP e melhores práticas
dsag-abap-leitfadenDiretrizes de desenvolvimento DSAG ABAP Leitfaden (alemão)
btp-cloud-platformConceitos, desenvolvimento, segurança e administração do SAP BTP
sap-artificial-intelligenceDocumentação do SAP AI Core e SAP AI Launchpad
ui5Documentação do framework SAPUI5 / OpenUI5
capDocumentação do SAP Cloud Application Programming Model (CAP)
cloud-sdkDocumentação do SAP Cloud SDK
terraform-provider-btpSAP Terraform Provider para BTP — recursos e fontes de dados
architecture-centerArquiteturas de referência e orientações do SAP Architecture Center
wdi5Documentação do framework de testes wdi5 (WebdriverIO + UI5)

Fontes online (consultas ao vivo, habilitadas por padrão)

FonteDescrição
SAP Help PortalDocumentação oficial de produtos SAP (escopo amplo)
SAP CommunityBlogs da comunidade, perguntas e respostas e posts de solução de problemas
Software HeroesArtigos e tutoriais ABAP/RAP (EN + DE, deduplicados)

Ferramentas Disponíveis

Ferramentas compartilhadas (ambas as variantes)

FerramentaDescrição
searchBusca híbrida unificada (BM25 + semântica) em documentos offline e fontes online opcionais. Suporta parâmetros query, k, includeOnline, includeSamples, abapFlavor, sources.
fetchRecupera o conteúdo completo do documento pelo ID retornado de search.
abap_feature_matrixVerifica a disponibilidade de recursos ABAP nas versões SAP (7.40–LATEST) usando a matriz de recursos do Software Heroes.
sap_community_searchBusca dedicada na SAP Community via API Khoros LiQL — retorna o conteúdo completo dos principais posts. Use quando os resultados de search forem insuficientes para erros específicos ou soluções alternativas.
sap_search_objectsBusca objetos liberados da SAP (classes, interfaces, tabelas, visualizações CDS, …) por nome/componente/tipo no repositório oficial de estado de liberação SAP/abap-atc-cr-cv-s4hc. Útil para descoberta de conformidade clean core.
sap_get_object_detailsDetalhes completos do estado de liberação de um objeto SAP específico, incluindo nível clean core (A/B/C/D), objetos sucessores e veredito de conformidade opcional.

Somente variante sap-docs

FerramentaDescrição
sap_discovery_center_searchBusca o catálogo de serviços do SAP Discovery Center para serviços BTP por palavra-chave, categoria ou modelo de licença.
sap_discovery_center_serviceObtém detalhes abrangentes do serviço BTP: planos de preços, roadmap do produto, links de documentação e recursos principais. Aceita um UUID ou nome de serviço.
ui5_version_diffLista todas as alterações FEATURE / FIX / DEPRECATED correspondentes e entradas do What's New do SAPUI5 para uma versão ou intervalo de um pacote local de todas as alterações (dist/data/ui5-lib-diff/all-changes.json). npm run setup o atualiza automaticamente; use npm run download:ui5-lib-diff durante a configuração/reconstrução para uma atualização manual. Combine com a habilidade ui5-version-upgrade e @ui5/mcp-server para um fluxo de trabalho completo de atualização.

Somente variante abap

FerramentaDescrição
abap_lintExecuta análise estática de código em código-fonte ABAP usando abaplint. Detecta automaticamente o tipo de arquivo a partir de padrões de código. Retorna descobertas com números de linha, severidade e chaves de regra.

Visão Geral da Arquitetura

  • Fonte de verdade upstream: mcp-sap-docs
  • Destino de sincronização unidirecional: abap-mcp-server
  • A busca usa fusão Híbrida BM25 + Semântica (embedding) via Reciprocal Rank Fusion (RRF)
  • Modelo de embeddings: Xenova/all-MiniLM-L6-v2 (~90 MB, armazenado em cache em dist/models/)

Seleção de Variante

Ordem de resolução:

  1. Variável de ambiente MCP_VARIANT
  2. Arquivo .mcp-variant na raiz do repositório
  3. fallback: sap-docs

Exemplos:

# Run as full sap-docs profile
MCP_VARIANT=sap-docs npm run setup
MCP_VARIANT=sap-docs npm run build
MCP_VARIANT=sap-docs npm run start:streamable

# Run as ABAP profile
MCP_VARIANT=abap npm run setup
MCP_VARIANT=abap npm run build
MCP_VARIANT=abap npm run start:streamable

Comportamento de Busca

search executa recuperação fundida sobre:

  • Índice FTS offline (conteúdo local de submódulos)
  • Fontes online opcionais (includeOnline=true):
    • SAP Help
    • SAP Community
    • Busca de conteúdo do Software Heroes (mesclagem EN/DE + deduplicação)

Destaques de classificação e filtragem:

  • Busca híbrida BM25 + Semântica (embedding) — palavra-chave e significado, fundidos via RRF
  • Reciprocal Rank Fusion (RRF) entre fontes offline e online
  • Reforços em nível de fonte a partir de metadados
  • includeSamples pode remover fontes com muitos exemplos
  • abapFlavor (standard / cloud / auto) filtra bibliotecas oficiais de documentos ABAP mantendo fontes não-ABAP
  • sources pode restringir bibliotecas offline explicitamente

Busca Híbrida

A busca offline combina BM25 (correspondência de palavras-chave FTS5) com similaridade semântica (embeddings densos via Xenova/all-MiniLM-L6-v2). Isso permite consultas em linguagem natural e paráfrases para encontrar documentos relevantes mesmo quando as palavras-chave exatas estão ausentes.

Exemplo: "how to check if a user has permission" encontra documentos AUTHORITY-CHECK.

Os embeddings são pré-computados no momento da construção e armazenados em docs.sqlite. O modelo (~90 MB) é armazenado em cache em dist/models/ (ignorado pelo git, dentro do projeto).

Consulte docs/HYBRID-SEARCH.md para detalhes completos, impacto de tamanho e ajuste.

Modo Somente Offline

search inclui fontes online por padrão. Para executar somente offline, use:

  • apenas índice/submódulos locais (npm run setup + npm run build)
  • includeOnline=false em cada solicitação search

Exemplo de corpo de solicitação search:

{
  "query": "RAP draft",
  "k": 8,
  "includeOnline": false
}

Docker (somente offline)

Execute o contêiner com vinculação de host e chame search com includeOnline=false:

docker run --rm -p 3122:3122 \
  -e MCP_VARIANT=sap-docs \
  -e MCP_PORT=3122 \
  -e MCP_HOST=0.0.0.0 \
  mcp-sap-docs

Para execução estritamente isolada (air-gapped), desabilite a rede do contêiner:

docker run --rm --network none -p 3122:3122 \
  -e MCP_VARIANT=sap-docs \
  -e MCP_PORT=3122 \
  -e MCP_HOST=0.0.0.0 \
  mcp-sap-docs

Observações:

  • Com --network none, buscas online são impossíveis por isolamento de tempo de execução.
  • A inicialização pode registrar avisos para tentativas de pré-busca online (por exemplo, matriz de recursos ABAP); isso não impede o uso offline de search.

Início Rápido (Local)

npm ci
npm run setup
npm run build

Inicie os modos do servidor:

# MCP stdio
npm start

# HTTP status/dev server
npm run start:http

# MCP streamable HTTP
npm run start:streamable

Portas padrão por variante:

  • sap-docs: HTTP 3001, transmissível 3122
  • abap: HTTP 3002, transmissível 3124

Verificações de saúde:

curl -sS http://127.0.0.1:3122/health | jq .
curl -sS http://127.0.0.1:3001/status | jq .

Use portas específicas da variante ao executar o perfil abap.

Scripts de Construção e Configuração

Os nomes dos scripts permanecem compartilhados (setup, build, start, start:streamable). O comportamento muda conforme a configuração da variante:

  • setup.sh inicializa apenas submódulos permitidos pela variante
  • build-index inclui apenas bibliotecas permitidas pela variante
  • build-fts indexa apenas bibliotecas permitidas pela variante

Isso mantém abap mais rápido e menor sem manter um conjunto separado de scripts de construção.

Docker

Construa a imagem para uma variante:

# sap-docs image
docker build --build-arg MCP_VARIANT=sap-docs -t mcp-sap-docs .

# abap image
docker build --build-arg MCP_VARIANT=abap -t abap-mcp-server .

Execute o servidor transmissível:

# sap-docs
docker run --rm -p 3122:3122 \
  -e MCP_VARIANT=sap-docs \
  -e MCP_PORT=3122 \
  mcp-sap-docs

# abap
docker run --rm -p 3124:3124 \
  -e MCP_VARIANT=abap \
  -e MCP_PORT=3124 \
  abap-mcp-server

SAP BTP Cloud Foundry

Para BTP CF, o caminho sap-docs recomendado é implantar a imagem ghcr.io/marianfoo/mcp-sap-docs:sap-docs mantida com MTA. O Cloud Foundry apenas puxa e executa a imagem semântica preparada.

Consulte docs/BTP-CF-DEPLOYMENT.md para o guia de implantação público. Comece com Deployment Options and Tradeoffs para escolher entre MTA, cf push direto, imagens de registro personalizadas e configuração de atualização.

Sincronização Unidirecional para abap-mcp-server

Este repositório contém automação de sincronização direta:

  • Fluxo de trabalho: .github/workflows/sync-to-abap-main.yml
  • Script: scripts/sync-to-abap.sh

Fluxo:

  1. Release Please publica uma versão em mcp-sap-docs após a mesclagem do PR de versão
  2. O fluxo de trabalho de versão despacha explicitamente o fluxo de trabalho de sincronização ABAP
  3. O fluxo de trabalho de sincronização clona abap-mcp-server
  4. Os arquivos upstream rastreados são sincronizados (com regras de exclusão), então a sobreposição ABAP é aplicada
  5. .mcp-variant é forçado para abap e a identidade do pacote ABAP é corrigida
  6. Um commit de sincronização é enviado para abap-mcp-server/main
  7. Esse push aciona o fluxo de trabalho de implantação ABAP

O fluxo de trabalho de sincronização também suporta execuções manuais, incluindo execuções de teste (dry runs) e um branch de destino personalizado. Apenas pushes para o branch main downstream acionam implantação automática.

Segredo necessário no repositório mcp-sap-docs:

  • ABAP_REPO_SYNC_TOKEN: um token dedicado com acesso para enviar código e alterações de fluxo de trabalho para abap-mcp-server. Mantenha-o separado de GITHUB_TOKEN, cujos pushes não acionam fluxos de trabalho subsequentes.

Modelo de Implantação

  • mcp-sap-docs: possui versões de lançamento e despacha sua implantação e sincronização ABAP quando uma versão é criada
  • abap-mcp-server: implanta em pushes para main, incluindo commits de sincronização upstream, ou via workflow_dispatch

O repositório downstream não publica versões do GitHub. Sua implantação deve, portanto, ouvir pushes de sincronização, não release: published. As versões upstream controlam quando as sincronizações automáticas ocorrem.

O fluxo de trabalho de implantação ABAP é mantido em sync/abap.overlay/.github/workflows/deploy-abap-mcp-server.yml. Altere essa sobreposição upstream para que a correção persista em sincronizações futuras.

Após mesclar uma correção de implantação, publique a próxima versão upstream ou execute manualmente sync-to-abap-main.yml contra o upstream main. Confirme que a execução de implantação downstream é bem-sucedida e que https://mcp-abap.marianzeis.de/health relata a versão em package.json ABAP sincronizado; uma sincronização bem-sucedida por si só não confirma a implantação.

Runtime PM2

ecosystem.config.cjs é ciente da variante e resolve:

  • nomes de processos
  • portas
  • caminho de implantação

a partir de config/variants/*.json.

Comandos de Validação

npm run build:tsc
npm run test:url-generation
npm run test:integration
npm run test:software-heroes
npm run test:discovery-center # mocked Discovery Center REST contract tests
npm run test:discovery-center:live # opt-in live API smoke test
npm run test:sap-objects       # SAP Released Objects unit tests

# Variant-specific build checks
MCP_VARIANT=sap-docs npm run build:index
MCP_VARIANT=abap npm run build:index
MCP_VARIANT=sap-docs npm run build:fts
MCP_VARIANT=abap npm run build:fts

Documentação Adicional

  • docs/ARCHITECTURE.md
  • docs/DEV.md
  • docs/TESTS.md
  • docs/UPSTREAM-ONE-WAY-SYNC-IMPLEMENTATION.md
  • REMOTE_SETUP.md