{
  "slug": "io-github-abap2ui5-mcp-server",
  "name": "io.github.abap2UI5/mcp-server",
  "title": "abap2UI5",
  "description": "abap2UI5 dev loop for AI agents: validate views, screenshot, deploy and run apps - no SAP system",
  "version": "1.0.0",
  "publishedAt": "2026-10-14T07:23:32.854293Z",
  "updatedAt": "2026-10-14T07:23:32.854293Z",
  "repoUrl": "https://github.com/abap2UI5/mcp-server",
  "websiteUrl": "https://abap2ui5.github.io/docs/advanced/mcp_server.html",
  "namespace": {
    "type": "github",
    "owner": "abap2UI5"
  },
  "kind": "local",
  "packages": [
    {
      "registryType": "npm",
      "identifier": "@abap2ui5/mcp-server",
      "version": "1.0.0",
      "transport": "stdio",
      "runtimeHint": "npx"
    }
  ],
  "remotes": [],
  "envVars": [
    {
      "name": "AI_VIEW_CHECK_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "Checkout or install of @abap2ui5/linter (validate_view, fix_view, screenshot_view). Default: the peer npm installs beside the server. A set value is authoritative."
    },
    {
      "name": "A2UI5_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5 framework checkout (app_guide, api_reference, pitfalls; backend when present). Default: ../abap2UI5, else the GitHub mirror and the npm runtime."
    },
    {
      "name": "SAMPLES_CONTROLS_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "samples-controls checkout (capabilities, examples, generation_rules, scope_of, UI5 for screenshots). Default: ../samples-controls, else the GitHub mirror."
    },
    {
      "name": "SAMPLES_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5/samples checkout, one of the catalogues examples searches. Default: ../samples, else the GitHub mirror."
    },
    {
      "name": "SAMPLES_STACK_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5/samples-stack checkout (OData, RAP, APC, launchpad samples). Default: ../samples-stack, else the GitHub mirror."
    },
    {
      "name": "APP_TEMPLATE_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5/app-template checkout that scaffold_app serves and add_agent_setup executes. Default: ../app-template, else the GitHub mirror."
    },
    {
      "name": "DOCS_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5/docs checkout that docs_search reads. Default: ../docs, else the GitHub mirror."
    },
    {
      "name": "ABAP_CLOUD_GUI_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5-addons/abap-cloud-gui checkout (with npm ci done) whose report2cloud converter migrate_report runs. Default: ../abap-cloud-gui; no mirror."
    },
    {
      "name": "POPUPS_HOME",
      "isSecret": false,
      "isRequired": false,
      "description": "abap2UI5-addons/popups checkout whose popups migrate_report with deploy: true writes into the dev sandbox beside the converted class. Default: .deps/popups of the abap-cloud-gui checkout, ../popups beside it, then its build/popups."
    },
    {
      "name": "OPENUI5_SRC",
      "isSecret": false,
      "isRequired": false,
      "description": "OpenUI5 source checkout scope_of reads the JSDoc from (via samples-controls). Default: ../fork-openui5 next to samples-controls."
    },
    {
      "name": "A2UI5_MCP_WORKSPACE",
      "isSecret": false,
      "isRequired": false,
      "description": "Where the npm backend installs, the dev sandbox lives and a framework clone lands. Default: ~/.abap2ui5-mcp."
    },
    {
      "name": "A2UI5_MCP_BACKEND",
      "isSecret": false,
      "isRequired": false,
      "description": "Which backend runs the apps: npm (the @abap2ui5/node-runtime package, even beside a checkout) or clone (clone the framework). Default: decided per call."
    },
    {
      "name": "A2UI5_MCP_RUNTIME_VERSION",
      "isSecret": false,
      "isRequired": false,
      "description": "Pin the @abap2ui5/node-runtime release (X.Y.Z) the npm backend installs. Default: the registry's latest."
    },
    {
      "name": "A2UI5_MCP_PORT",
      "isSecret": false,
      "isRequired": false,
      "description": "Port of the local backend run_app boots against. Default: 3000."
    },
    {
      "name": "A2UI5_MCP_UI",
      "isSecret": false,
      "isRequired": false,
      "description": "Whether app_start/app_describe/app_act declare their MCP Apps screen (ui://abap2ui5/app-screen): auto (default - when the client advertises the io.modelcontextprotocol/ui extension), on, off."
    },
    {
      "name": "A2UI5_MCP_APP_FORMAT",
      "isSecret": false,
      "isRequired": false,
      "description": "The default answer format of the app tools: snapshot (default) or adaptive-card (the snapshot plus an Adaptive Card 1.5 as an embedded resource, for card-rendering hosts)."
    },
    {
      "name": "A2UI5_MCP_OFFLINE",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 1 for no network: no UI5 CDN fallback, no GitHub mirror, no registry lookup."
    },
    {
      "name": "A2UI5_MCP_REMOTE",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 0 to switch off the read-only GitHub mirror used when no checkout is found."
    },
    {
      "name": "A2UI5_MCP_REMOTE_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "Cache directory of the GitHub mirror. Default: <tmp>/abap2ui5-mcp-remote."
    },
    {
      "name": "A2UI5_MCP_REMOTE_TTL_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "How long a mirrored copy is used before it is refreshed, in milliseconds. Default: one day."
    },
    {
      "name": "A2UI5_MCP_UI5_CACHE_MB",
      "isSecret": false,
      "isRequired": false,
      "description": "How many MB of UI5 answers from the CDN (sdk.openui5.org) run_app and interact_app keep in memory across calls, so a second boot does not download them again. 0 switches the cache off. Default: 64."
    },
    {
      "name": "A2UI5_MCP_RENDER_PAGES",
      "isSecret": false,
      "isRequired": false,
      "description": "Pages (Chromium tabs) of validate_view's warm render gate, which concurrent calls queue on. Default: 2 (1 to 8)."
    },
    {
      "name": "A2UI5_MCP_CHROMIUM",
      "isSecret": false,
      "isRequired": false,
      "description": "Chromium binary for run_app and interact_app. Default: CHROMIUM_BIN, Playwright's managed browser, then a system chromium."
    },
    {
      "name": "A2UI5_MCP_SCREENSHOT_DIR",
      "isSecret": false,
      "isRequired": false,
      "description": "Where run_app and interact_app write their PNGs (the newest 50 are kept) and build_backend its log. Default: <tmp>/abap2ui5-mcp-screenshots."
    },
    {
      "name": "A2UI5_MCP_PREBUILT_URL",
      "isSecret": false,
      "isRequired": false,
      "description": "Where build_backend mode prebuilt downloads the backend from. Default: the framework's release asset."
    },
    {
      "name": "A2UI5_MCP_LINT_WORKER",
      "isSecret": false,
      "isRequired": false,
      "description": "Set to 0 to run every lint as a fresh abaplint process. Default: a long-lived worker keeps @abaplint/core with the framework parsed and lints a deploy in milliseconds (the CLI runs whenever the worker cannot stand in for it)."
    },
    {
      "name": "A2UI5_MCP_LINT_IDLE_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "How long the warm lint worker (about 300 MB with the framework parsed) is kept without a request before it exits, in milliseconds; the next lint starts a fresh one. 0 keeps it for the server's life. Default: 10 minutes."
    },
    {
      "name": "A2UI5_MCP_LINT_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Hard timeout of the abaplint run, in milliseconds. Default: 5 minutes."
    },
    {
      "name": "A2UI5_MCP_SCOPE_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Hard timeout of scope_of, in milliseconds. Default: 5 minutes."
    },
    {
      "name": "A2UI5_MCP_BUILD_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Hard timeout of a build, the prebuilt download and the npm install, in milliseconds. Default: 30 minutes."
    },
    {
      "name": "A2UI5_MCP_UNIT_TIMEOUT_MS",
      "isSecret": false,
      "isRequired": false,
      "description": "Hard timeout of the ABAP Unit runner, in milliseconds. Default: 10 minutes."
    },
    {
      "name": "A2UI5_MCP_SYSTEM_URL",
      "isSecret": false,
      "isRequired": false,
      "description": "Switches on the SYSTEM MODE: the app tools against this real SAP system instead of the sandbox loop. The launch URL, e.g. https://host:44300/sap/bc/z2ui5?app_start={class}&sap-client=100."
    },
    {
      "name": "A2UI5_MCP_SYSTEM_USER",
      "isSecret": false,
      "isRequired": false,
      "description": "System mode: the SAP user the app tools log on with (Basic authentication)."
    },
    {
      "name": "A2UI5_MCP_SYSTEM_PASSWORD",
      "isSecret": true,
      "isRequired": false,
      "description": "System mode: the password of A2UI5_MCP_SYSTEM_USER. Or A2UI5_MCP_SYSTEM_PASSWORD_CMD, to keep it out of the configuration."
    },
    {
      "name": "A2UI5_MCP_SYSTEM_PASSWORD_CMD",
      "isSecret": false,
      "isRequired": false,
      "description": "System mode: a shell command that prints the password (a keychain lookup) - instead of A2UI5_MCP_SYSTEM_PASSWORD."
    },
    {
      "name": "A2UI5_MCP_SYSTEM_INSECURE_TLS",
      "isSecret": false,
      "isRequired": false,
      "description": "System mode: set to 1 to accept a certificate that cannot be verified. NODE_EXTRA_CA_CERTS with the CA is the better fix."
    },
    {
      "name": "GITHUB_TOKEN",
      "isSecret": true,
      "isRequired": false,
      "description": "Optional token sent to api.github.com only, to raise the rate limit of the docs tree listing (GH_TOKEN is read too)."
    }
  ],
  "category": "cloud-infra",
  "subcategory": "hosting",
  "company": "",
  "categoryAuto": true,
  "checks": [
    {
      "id": "source-linked",
      "label": "Source repository linked",
      "result": "pass",
      "detail": "https://github.com/abap2UI5/mcp-server"
    },
    {
      "id": "version-pinned",
      "label": "Version pinned",
      "result": "pass",
      "detail": "Every package has an explicit version"
    },
    {
      "id": "secrets-requested",
      "label": "Secrets requested",
      "result": "info",
      "detail": "Asks for 2 secrets: A2UI5_MCP_SYSTEM_PASSWORD, GITHUB_TOKEN"
    },
    {
      "id": "known-registry",
      "label": "Known package registry",
      "result": "pass",
      "detail": "All packages come from npm, PyPI, OCI, NuGet or MCPB"
    },
    {
      "id": "namespace",
      "label": "Namespace ownership",
      "result": "info",
      "detail": "Name verified via GitHub account abap2UI5"
    },
    {
      "id": "meta-text",
      "label": "Registry text aimed at the AI",
      "result": "pass",
      "detail": "Description and settings contain no hidden characters or instructions to the AI"
    },
    {
      "id": "install-scripts",
      "label": "Install scripts",
      "result": "pass",
      "detail": "@abap2ui5/mcp-server@1.0.0 runs nothing at install"
    },
    {
      "id": "code-flags",
      "label": "Code red flags",
      "result": "warn",
      "detail": "Reads SSH or cloud credentials (lib/contain.mjs:9: \"/.ssh/id_\"); Reads SSH or cloud credentials (lib/scaffold.mjs:178: \"/.ssh/id_\"); Reads SSH or cloud credentials (server.mjs:825: \"/.ssh/id_\")"
    },
    {
      "id": "ai-text",
      "label": "Text aimed at the AI",
      "result": "pass",
      "detail": "No hidden characters or instructions to the AI in 53 files, including comments and the README"
    }
  ],
  "scannedAt": "2026-10-29",
  "level": "Scanned",
  "install": [
    {
      "label": "Claude Desktop (npm)",
      "kind": "claude_desktop_json",
      "text": "{\n  \"mcpServers\": {\n    \"mcp-server\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@abap2ui5/mcp-server@1.0.0\"\n      ]\n    }\n  }\n}"
    }
  ],
  "curated": true,
  "stars": 1,
  "archived": false,
  "pushedAt": "2026-10-24T11:05:48Z",
  "health": {
    "score": 47,
    "parts": {
      "popularity": 0.21185305783931088,
      "activity": 0.6,
      "issues": null,
      "security": 0.8
    },
    "fail": 0,
    "warn": 1,
    "raw": {
      "stars": 1,
      "forks": 0,
      "downloads": 74,
      "hn": null,
      "issuesOpen": 0,
      "issuesClosed": 0,
      "prsMerged": 62,
      "commits90": 0,
      "release": null,
      "pushed": "2026-10-24T11:05:48Z",
      "growth": null,
      "growthDays": null,
      "archived": false
    },
    "at": "2026-10-31T07:35:52.424Z"
  }
}
