Objetivo: documentar una forma reproducible de ejecutar sapmcp en contenedor sin redistribuir el SAP NetWeaver RFC SDK ni secretos.
El SAP NetWeaver RFC SDK es software propietario de SAP. Este repositorio no lo incluye, no lo descarga y no debe empaquetarlo en imágenes públicas. El SDK debe montarse externamente en runtime desde una ubicación autorizada por la licencia del cliente.
Dockerfile: imagen Python desapmcpsin SDK SAP embebido.docker-compose.example.yml: ejemplo de ejecución local con variables placeholder..dockerignore: evita incluir.env, venvs, PDFs propietarios, SDKs y artefactos locales en el contexto de build.
La imagen Docker es Linux. Por tanto, el montaje debe contener la versión Linux x86_64 del SAP NetWeaver RFC SDK, no la librería de macOS (.dylib) ni Windows (.dll).
Debe existir, por ejemplo:
/path/autorizado/nwrfcsdk/lib/libsapnwrfc.so
/path/autorizado/nwrfcsdk/lib/libsapucum.so
Variables dentro del contenedor:
SAP_NWRFC_LIB_DIR=/opt/sap/nwrfcsdk/lib
LD_LIBRARY_PATH=/opt/sap/nwrfcsdk/libcd /Users/eduardoariasbravo/Developer/sapmcp
docker build -t sapmcp:local .El build no necesita el SDK porque solo instala el paquete Python.
Crea un fichero local .env.docker no versionado:
SAP_ASHOST=your_sap_host
SAP_SYSNR=00
SAP_CLIENT=100
SAP_USER=RFC_SAPMCP_DEV
SAP_PASS=********
SAP_LANG=EN
SAP_NWRFC_LIB_DIR=/opt/sap/nwrfcsdk/lib
SAPMCP_READ_ONLY=true
SAPMCP_ALLOW_DANGEROUS=false
SAPMCP_MAX_ROWS=200
SAPMCP_ALLOWED_RFC=RFC_PING,STFC_CONNECTIONEjecuta montando el SDK como read-only:
docker run --rm -it \
--env-file .env.docker \
-e LD_LIBRARY_PATH=/opt/sap/nwrfcsdk/lib \
-v /path/autorizado/nwrfcsdk/lib:/opt/sap/nwrfcsdk/lib:ro \
-v sapmcp-audit:/home/sapmcp/.sapmcp \
sapmcp:localCopia el ejemplo y ajusta rutas locales:
cp docker-compose.example.yml docker-compose.ymlCrea .env.docker con placeholders reales en tu entorno local, nunca en Git.
Exporta la ruta host del SDK:
export SAP_NWRFC_SDK_LIB_DIR_HOST=/path/autorizado/nwrfcsdk/libLanza una sesión:
docker compose run --rm sapmcpPara integrarlo con un host MCP, configura el host para lanzar docker compose run --rm sapmcp como comando stdio, o crea un wrapper shell controlado por tu equipo.
- No montar
.envreal de PRD en una demo. - No publicar la imagen si contiene capas con secretos o SDK copiado manualmente.
- No usar
SAP_ALLni usuarios personales. - Para demos con datos reales, usar LLM local/on-prem/cloud privado aprobado.
- Mantener
SAPMCP_READ_ONLY=trueySAPMCP_ALLOW_DANGEROUS=false. - Preferir destinos DEV/QAS o ABAP trial con datos sintéticos.
| Síntoma | Causa probable | Acción |
|---|---|---|
cannot open shared object file: libsapnwrfc.so |
El SDK no está montado o LD_LIBRARY_PATH no apunta al directorio correcto. |
Verificar volumen y SAP_NWRFC_LIB_DIR=/opt/sap/nwrfcsdk/lib. |
| Error de arquitectura | Se montó SDK macOS/Windows o ARM en contenedor Linux x86_64. | Usar SDK Linux x86_64 compatible. |
RFC_NO_AUTHORITY |
Usuario SAP sin permisos para la RFC. | Revisar SU53/STAUTHTRACE y matriz PFCG. |
| Timeout de conexión | Red, firewall, SAProuter o host no accesible desde Docker. | Probar conectividad desde contenedor y revisar ruta SAProuter. |