protogrid

Search / io.github.williansaez/abap-adt-mcp

abap-adt-mcp

L0· runs locally

ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger

v2.8.0 · active · repository · descriptor JSON · versions

Runs on your machine: something must execute the package.Only local packages are published (npm, PyPI, OCI, …). The registry never executes them, so tools are unknown until you run it.
Quality–not scored
Trust91of 100
Packages1
Tools seen0

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "abap-adt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "SAP_SYSTEMS": "${SAP_SYSTEMS}",
        "MCP_HTTP_TOKEN": "${MCP_HTTP_TOKEN}",
        "SAP_PASSWORD": "${SAP_PASSWORD}",
        "SAP_OAUTH_CLIENT_SECRET": "${SAP_OAUTH_CLIENT_SECRET}"
      }
    }
  }
}
claude mcp add abap-adt-mcp -e "SAP_SYSTEMS=${SAP_SYSTEMS}" -e "MCP_HTTP_TOKEN=${MCP_HTTP_TOKEN}" -e "SAP_PASSWORD=${SAP_PASSWORD}" -e "SAP_OAUTH_CLIENT_SECRET=${SAP_OAUTH_CLIENT_SECRET}" -- npx -y [email protected]
[mcp_servers.abap-adt-mcp]
command = "npx"
args = ["-y", "[email protected]"]
env = { "SAP_SYSTEMS" = "${SAP_SYSTEMS}", "MCP_HTTP_TOKEN" = "${MCP_HTTP_TOKEN}", "SAP_PASSWORD" = "${SAP_PASSWORD}", "SAP_OAUTH_CLIENT_SECRET" = "${SAP_OAUTH_CLIENT_SECRET}" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "abap-adt-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "[email protected]"
      ],
      "enabled": true,
      "environment": {
        "SAP_SYSTEMS": "{env:SAP_SYSTEMS}",
        "MCP_HTTP_TOKEN": "{env:MCP_HTTP_TOKEN}",
        "SAP_PASSWORD": "{env:SAP_PASSWORD}",
        "SAP_OAUTH_CLIENT_SECRET": "{env:SAP_OAUTH_CLIENT_SECRET}"
      }
    }
  }
}
{
  "mcpServers": {
    "abap-adt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "SAP_SYSTEMS": "${SAP_SYSTEMS}",
        "MCP_HTTP_TOKEN": "${MCP_HTTP_TOKEN}",
        "SAP_PASSWORD": "${SAP_PASSWORD}",
        "SAP_OAUTH_CLIENT_SECRET": "${SAP_OAUTH_CLIENT_SECRET}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=abap-adt-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImFiYXAtYWR0LW1jcEAyLjguMCJdLCJlbnYiOnsiU0FQX1NZU1RFTVMiOiIke1NBUF9TWVNURU1TfSIsIk1DUF9IVFRQX1RPS0VOIjoiJHtNQ1BfSFRUUF9UT0tFTn0iLCJTQVBfUEFTU1dPUkQiOiIke1NBUF9QQVNTV09SRH0iLCJTQVBfT0FVVEhfQ0xJRU5UX1NFQ1JFVCI6IiR7U0FQX09BVVRIX0NMSUVOVF9TRUNSRVR9In19"
}
{
  "servers": {
    "abap-adt-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "SAP_SYSTEMS": "${SAP_SYSTEMS}",
        "MCP_HTTP_TOKEN": "${MCP_HTTP_TOKEN}",
        "SAP_PASSWORD": "${SAP_PASSWORD}",
        "SAP_OAUTH_CLIENT_SECRET": "${SAP_OAUTH_CLIENT_SECRET}"
      }
    }
  }
}
{
  "mcpServers": {
    "abap-adt-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "SAP_SYSTEMS": "${SAP_SYSTEMS}",
        "MCP_HTTP_TOKEN": "${MCP_HTTP_TOKEN}",
        "SAP_PASSWORD": "${SAP_PASSWORD}",
        "SAP_OAUTH_CLIENT_SECRET": "${SAP_OAUTH_CLIENT_SECRET}"
      }
    }
  }
}
extensions:
  "abap-adt-mcp":
    enabled: true
    name: "abap-adt-mcp"
    type: stdio
    cmd: "npx"
    args:
      - "-y"
      - "[email protected]"
    envs:
      "SAP_SYSTEMS": "${SAP_SYSTEMS}"
      "MCP_HTTP_TOKEN": "${MCP_HTTP_TOKEN}"
      "SAP_PASSWORD": "${SAP_PASSWORD}"
      "SAP_OAUTH_CLIENT_SECRET": "${SAP_OAUTH_CLIENT_SECRET}"
    timeout: 300

Placeholders to fill from your own secret store: ${SAP_SYSTEMS}, ${MCP_HTTP_TOKEN}, ${SAP_PASSWORD}, ${SAP_OAUTH_CLIENT_SECRET}. The registry never accepts secret values.

This is a local package: the command runs on your machine.

Quality – / 100not scored

Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.

protocoln/a · weight 25
  • n/a
    protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygienen/a · weight 30
  • n/a
    tools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool list unknown
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvabledeps.dev does not know [email protected]

Tool list unknown · checked 2026-10-20 12:45 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 91 / 100

provenance80
livenessn/a
freshness100
hygiene100

+repository +namespace-matches-repo ~liveness-unmeasured +updated-4d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Dependencies

[email protected] npmthis version is not known to the dependency resolver

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.

Endpoints

packageregistryversionruntimesecrets
abap-adt-mcpnpm2.8.0–SAP_SYSTEMS, MCP_HTTP_TOKEN, SAP_PASSWORD, SAP_OAUTH_CLIENT_SECRET

Tools (0)

No tools observed. Local packages are never executed by the registry.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.williansaez/abap-adt-mcp",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "version": "2.8.0",
  "packages": [
    {
      "version": "2.8.0",
      "transport": {
        "type": "stdio"
      },
      "identifier": "abap-adt-mcp",
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "environmentVariables": [
        {
          "name": "SAP_SYSTEMS_FILE",
          "description": "Path to a JSON file mapping destination names to system configs (url, client, authType basic/sso/sso2/oauth, credentials). Recommended; keep the file mode 0600. See systems.example.json"
        },
        {
          "name": "SAP_SYSTEMS",
          "isSecret": true,
          "description": "Inline JSON map of destinations (same shape as SAP_SYSTEMS_FILE). Contains credentials — prefer SAP_SYSTEMS_FILE"
        },
        {
          "name": "SAP_DEFAULT_DESTINATION",
          "description": "Destination name used when a tool call omits `destination` (alternatively mark an entry with \"default\": true)"
        },
        {
          "name": "SAP_AUTH_TYPE",
          "description": "Default auth type for entries that don't specify one: sso (default), sso2, basic, or oauth"
        },
        {
          "name": "MCP_HTTP_PORT",
          "description": "When set (1024-65535), serve Streamable HTTP on http://127.0.0.1:<port>/mcp with bearer-token auth instead of stdio"
        },
        {
          "name": "MCP_HTTP_HOST",
          "description": "Bind address for the HTTP transport (default 127.0.0.1). Set 0.0.0.0 only inside containers that publish the port"
        },
        {
          "name": "MCP_HTTP_TOKEN",
          "isSecret": true,
          "description": "Bearer token for the HTTP transport; auto-generated and written to ~/.abap-adt-mcp/http-token when unset"
        },
        {
          "name": "MCP_HTTP_MAX_SESSIONS",
          "description": "Maximum concurrent MCP sessions on the HTTP transport (default 16); further initialize requests get 503"
        },
        {
          "name": "MCP_HTTP_MAX_BODY_BYTES",
          "description": "Largest request body the HTTP transport accepts, in bytes (default 4194304); larger bodies are refused with HTTP 413"
        },
        {
          "name": "MCP_HTTP_SESSION_TTL_MINUTES",
          "description": "Idle minutes after which an HTTP session (and its SAP sessions/locks) is closed (default 30)"
        },
        {
          "name": "MCP_HTTP_ALLOWED_ORIGINS",
          "description": "Comma-separated Origin values allowed on the HTTP transport (loopback origins always allowed when bound to loopback; * allows any)"
        },
        {
          "name": "MCP_HTTP_ALLOWED_HOSTS",
          "description": "Comma-separated Host header values allowed (DNS-rebinding protection; loopback hosts always allowed when bound to loopback)"
        },
        {
          "name": "MCP_EXPORT_ROOT",
          "description": "When set, exportPackageSources may only write inside this directory"
        },
        {
          "name": "MCP_AUDIT_FILE",
          "description": "Path of a JSONL audit trail: one record per tool call (tool, destination, duration, outcome ok/error/denied/unavailable, policy gate, redacted argument summary)"
        },
        {
          "name": "MCP_ADT_TRACE_FILE",
          "description": "Diagnostics: path of a JSONL trace with one line per ADT request (method, URI, status, headers). Cookie, Set-Cookie, Authorization and CSRF values are reduced to name and length; no response body is kept, error lines carry the first 300 characters of the redacted error text. Off when unset."
        },
        {
          "name": "MCP_READ_ONLY",
          "description": "Set to 1 to make every destination read-only (server-side; only read-only annotated tools plus login/logout run). Per-destination policies live in systems.json"
        },
        {
          "name": "MCP_ALLOW_DATA_PREVIEW",
          "description": "Set to 1 to let tableContents read table and CDS rows on every destination that does not state policy.allowDataPreview itself (reading table data is off by default)"
        },
        {
          "name": "MCP_ALLOW_FREE_SQL",
          "description": "Set to 1 to allow runQuery and tableContents with sqlQuery on every destination that does not state policy.allowFreeSql itself (free SQL is off by default; implies table data)"
        },
        {
          "name": "MCP_TOOLSETS",
          "description": "Toolsets to publish: comma list (core,source,objects,transports,analysis,tests,atc,data,discovery,runtime,refactoring,rap,services,git,debugger,traces) or a preset: all (default) or focused"
        },
        {
          "name": "MCP_DISABLED_TOOLSETS",
          "description": "Toolsets to hide, comma list (core cannot be disabled)"
        },
        {
          "name": "MCP_MAX_RESPONSE_CHARS",
          "description": "Character budget for a single tool response before results are paged/truncated (default 40000, minimum 5000). Raise it if your MCP host accepts larger tool outputs"
        },
        {
          "name": "SAP_ALLOW_REENTRANCE_TICKET",
          "description": "Set to 1 to enable the reentranceTicket tool (disabled by default: it returns a live SAP logon credential into the conversation)"
        },
        {
          "name": "SAP_URL",
          "description": "Legacy single-system mode: base URL of the SAP system, e.g. https://host:44300"
        },
        {
          "name": "SAP_USER",
          "description": "Legacy single-system mode: SAP username"
        },
        {
          "name": "SAP_PASSWORD",
          "isSecret": true,
          "description": "Legacy single-system mode: SAP password"
        },
        {
          "name": "SAP_CLIENT",
          "description": "Legacy single-system mode: SAP client number, e.g. 100"
        },
        {
          "name": "SAP_LANGUAGE",
          "description": "Legacy single-system mode: logon language, e.g. EN"
        },
        {
          "name": "SAP_BROWSER_PATH",
          "description": "SSO destinations: path to a Chromium/Chrome/Edge binary for the browser login (auto-detected when unset)"
        },
        {
          "name": "SAP_BROWSER_PROFILE_DIR",
          "description": "SSO destinations: directory of the persistent browser profile that keeps the identity-provider session (default ~/.abap-adt-mcp/sso/<host>)"
        },
        {
          "name": "SAP_SSO2_COMMAND",
          "description": "Legacy single-system sso2 mode: absolute path to the trusted local ticket provider"
        },
        {
          "name": "SAP_SSO2_ARGS",
          "description": "Legacy single-system sso2 mode: JSON array of provider arguments (never put a ticket here)"
        },
        {
          "name": "SAP_SSO2_TIMEOUT_MS",
          "description": "Legacy single-system sso2 mode: provider timeout in milliseconds (default 30000; range 1000-300000)"
        },
        {
          "name": "SAP_TLS_INSECURE",
          "description": "Legacy single-system mode: set to 1 to skip TLS certificate verification for that system only (sandboxes with self-signed certificates)"
        },
        {
          "name": "SAP_OAUTH_TOKEN_URL",
          "description": "Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 token endpoint (client_credentials)"
        },
        {
          "name": "SAP_OAUTH_CLIENT_ID",
          "description": "Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client id"
        },
        {
          "name": "SAP_OAUTH_CLIENT_SECRET",
          "isSecret": true,
          "description": "Legacy single-system mode with SAP_AUTH_TYPE=oauth: OAuth2 client secret"
        },
        {
          "name": "SAP_OAUTH_SCOPE",
          "description": "Legacy single-system mode with SAP_AUTH_TYPE=oauth: optional OAuth2 scope"
        },
        {
          "name": "MCP_PROFILE_GATE",
          "description": "Platform gate for toolsets the destination does not expose (debugger, traces, abapGit, ...): enforce (default, refuse before calling SAP), warn (log only) or off"
        },
        {
          "name": "MCP_SOURCE_CACHE_TTL_SECONDS",
          "description": "Lifetime of the per-session source cache used by grepPackage, cdsViewInfo and syntaxCheckCode (default 300; 0 keeps entries until logout)"
        },
        {
          "name": "MCP_CACHE_DIR",
          "description": "Directory for the cached SAP cloudification repository used by apiReleaseState (default ~/.abap-adt-mcp/cache)"
        },
        {
          "name": "MCP_API_CLASSIFICATION_FILES",
          "description": "Extra classification files for apiReleaseState, comma list: a path inside SAP's cloudification repository (partner/objectClassifications_ACME.json) or an https URL"
        }
      ]
    }
  ],
  "repository": {
    "url": "https://github.com/williansaez/abap-adt-mcp",
    "source": "github"
  },
  "description": "ABAP development from Claude and other MCP hosts: source, transports, tests, ATC, debugger"
}