Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ABAPilot

NPM · ABAPILOT · SCANNED SEP 20

ABAP MCP connector for SAP ECC and on-premise S/4HANA. Requires a licensed ABAPilot backend.

Available components

+5 this week 73 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability72
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6905 tokens (~140/item across 49 items; 49 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability observed for 11 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "sap_multi_table_query" implies "execute" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 49 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the ABAPilot MCP server?

ABAPilot runs locally as an npm package, launched with npx -y abapilot. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · abapilot

# add to Claude Code
claude mcp add nicohern-abapilot-mcp -- npx -y abapilot
// .cursor/mcp.json
{
  "mcpServers": {
    "nicohern-abapilot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "abapilot"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "nicohern-abapilot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "abapilot"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add nicohern-abapilot-mcp -- npx -y abapilot
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "nicohern-abapilot-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "abapilot"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add nicohern-abapilot-mcp --command npx --arg -y --arg abapilot
# ~/.hermes/config.yaml
mcp_servers:
  nicohern-abapilot-mcp:
    command: "npx"
    args: ["-y", "abapilot"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "nicohern-abapilot-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "abapilot"
      ]
    }
  }
}
# add to Vellum
assistant mcp add nicohern-abapilot-mcp -t stdio -c npx -a -y abapilot
// mcp.json
{
  "mcpServers": {
    "nicohern-abapilot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "abapilot"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 +4
    • Stability: unverified → 0.27 functional
  • 12 Sept 26 0
    • Security disclosure: unverified → fail functional
  • 11 Sept 26 0
    • Security disclosure: fail → unverified functional
  • 9 Sept 26 +30
    • Injection markers: unverified → pass security
    • First check of Judged manipulation: pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool safety: Tool safety not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. security
    • Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. security
    • Tool coverage: unverified → 100 functional
    • MCP protocol: unverified → pass functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 0 functional
    • First check of Tool coverage: 100 functional
    • Capabilities: Protocol version not yet verified: we do not have a sandbox capture of the MCP handshake this version of the package performs yet. functional
    • Tool coverage: Tool coverage not yet verified: we do not have a sandbox capture of the tool definitions this version of the package serves yet. functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 1.0.2 → 1.0.6 functional
  • 28 Aug 26 0
    • Security disclosure: unverified → fail functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 18 Aug 26 0
    • Security disclosure: unverified → fail functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/abapilot@1.0.6

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 49 exposed · ~6,905 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
sap_analyze_query ~133

Analyze a natural language query and return intelligent guidance for building the SAP query. This tool examines your query and returns: - Candidate tables to query - Query type (simple, multi-table, aggregation) - Detected date ranges - Aggregation hints (TOP N, SUM, COUNT) - Field recommendations with semantic context USE THIS FIRST before building complex queries to get field guidance!

NameTypeReqDescription
fetch_metadatabooleanIf true, also fetch and classify field metadata for identified tables (default: true)
querystringyesNatural language query (e.g., 'top 10 customers by sales in 2024')

No output schema declared.

No examples provided.

sap_check_notes_relevancy ~124

Check relevancy of one or more SAP Note numbers against this system (component/SP levels, download state, implementation readiness). Composite tool: classifies each note via the /classify_note_v2 gateway endpoint and aggregates the results. Notes that were never downloaded into SNOTE are reported with needs_download=true — run sap_download_note_v2 (requires OSS connectivity) or sap_upload_note_v2 first for a definitive verdict on those.

NameTypeReqDescription
note_idsarrayyesSAP Note numbers to check (e.g., ["2198647", "1626838"])

No output schema declared.

No examples provided.

sap_check_type_exists ~117

Checks whether a type exists in the SAP Data Dictionary and returns its kind. Returns type_kind: TABL (transparent/cluster/pool table — queryable), STRU (structure — NOT queryable, cannot SELECT from it), VIEW (database view — queryable), DTEL (data element), TTYP (table type), BUILTIN, TYPEPOOL. Use this to verify whether an object is a real database table before attempting sap_read_table_data or sap_count_rows.

NameTypeReqDescription
type_namestringyesType name to check

No output schema declared.

No examples provided.

sap_count_rows ~70

Estimate row count for a table BEFORE fetching data. Use this to check if a query will return too much data. Returns estimated count and recommendation (direct_read, use_pagination, use_streaming). ALWAYS use this before querying large tables like BKPF, EKKO, VBAK without date filters!

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_diagnose_message ~335

Diagnose a SAP error/warning/info message end-to-end. USE THIS when a user shares a SAP message — whether as a screenshot, text, or message ID. This tool performs a full diagnostic chain: 1. Resolves message class + number (from T100 text search if only text is provided) 2. Locates the exact source code line where the message is raised 3. Reads surrounding code to understand the triggering condition 4. Checks for active enhancements that may interfere 5. Returns a structured diagnosis with root cause analysis and fix suggestions. INPUT: Provide EITHER message_id + message_number (if known) OR message_text (from screenshot). Optionally provide transaction or program_name to scope the search.

NameTypeReqDescription
languagestringSAP language key for T100 search (e.g., S=Spanish, E=English, D=German). Default: S.
message_idstringMessage class (e.g., V1, F5, ME). Omit if only message text is available.
message_numberstringMessage number (e.g., 001, 312). Omit if only message text is available.
message_textstringMessage text from screenshot or user description. Used to reverse-lookup message class/number from T100 when message_id is not known.
program_namestringABAP program name (e.g., SAPMV45A). Optional if transaction is provided.
transactionstringSAP transaction code where the message appeared (e.g., VA01, FB01, ME21N)

No output schema declared.

No examples provided.

sap_discover_change_object ~53

Find the change document OBJECTCLAS for a table by querying TCDOB. Use this before querying change documents if you don't know the object class.

NameTypeReqDescription
table_namestringyesData Dictionary table name

No output schema declared.

No examples provided.

sap_get_enhancements ~244

List ALL enhancements for a SAP transaction or program in one call. Returns BAdIs (new + classic), customer exits (SMOD/CMOD), enhancement spots (implicit/explicit), and BTEs (Business Transaction Events). Each entry includes: type, name, implementation, active status, program, and include name. USE THIS when the user asks about enhancements, BAdIs, customer exits, user exits, SMOD, CMOD, SE18, SE19, BTEs, extension points, or custom code on a transaction. Pass transaction (e.g., 'BP', 'VA01', 'XD01') or program_name (e.g., 'SAPMV45A'). DO NOT manually query SXS_ATTR, SXC_ATTR, MODSAP, or MODACT — use this tool instead.

NameTypeReqDescription
program_namestringABAP program name (e.g., SAPMF02D for XD01/XD02, SAPMV45A for VA01)
transactionstringSAP transaction code (e.g., XD01, VA01, BP, MM02, ME21N). The program is resolved automatically.

No output schema declared.

No examples provided.

sap_get_field_metadata ~127

Get enriched metadata for SAP table fields with semantic classification. Returns field classifications including: - Amount fields (for SUM) with their currency field mappings - Customer fields distinguished by role (sold_to=KUNAG, payer=KUNRG, bill_to, ship_to) - Status/flag fields (deletion, cancellation indicators) with filter recommendations - Date fields for filtering - Currency fields USE THIS BEFORE building queries to understand which fields to use! Example: For 'top customers by sales', this tells you to use KUNAG (sold-to) not KUNRG (payer).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_infer_joins ~57

Automatically detect join keys between two tables based on domain matching. Compares field domains to suggest join keys with confidence levels.

NameTypeReqDescription
table1stringyesFirst table name
table2stringyesSecond table name

No output schema declared.

No examples provided.

sap_list_package_objects ~226

List all ABAP repository objects in a development package (DEVCLASS). Returns objects grouped by type: programs (PROG), classes (CLAS), function groups (FUGR), tables (TABL), data elements (DTEL), domains (DOMA), structures (STRU), views (VIEW), etc. Use this to discover and inventory a codebase for documentation, migration analysis, or code review. Supports wildcard package names (e.g., 'Z*' for all Z packages). Also returns sub-packages if they exist. For custom namespace codebases, pass the top-level package and set include_subpackages=true.

NameTypeReqDescription
include_subpackagesbooleanIf true, also scan sub-packages (reads TDEVC for hierarchy)
object_type_filterstringOptional: filter by object type (e.g., 'PROG', 'CLAS', 'FUGR', 'TABL'). Leave empty for all.
packagestringyesDevelopment package / DEVCLASS (e.g., 'ZCUSTOM', '/NAMESPACE/PKG')

No output schema declared.

No examples provided.

sap_lookup_error ~191

Analyze a SAP error message using all available external knowledge sources. Queries: T100 message table, SAP Help Portal, web search (SAP community, StackOverflow), SAP Notes (if S-user configured), and previously learned error patterns. Use this AFTER getting dump/syslog data to understand root cause. Returns ranked results from multiple sources with links to documentation.

NameTypeReqDescription
contextstringOptional additional context: transaction code, program name, or description of what was happening when the error occurred.
error_messagestringyesThe error message to analyze. Can include SAP message codes like 'ME 003', dump error texts, or any error description from SAP.
sourcesarrayOptional list of sources to query. Defaults to all. Values: t100 (SAP messages), sap_help (documentation), web (community/StackOverflow), sap_notes (SAP Notes), learned (previously seen patterns).

No output schema declared.

No examples provided.

sap_lookup_t100 ~141

Look up a specific SAP T100 message by message class and number. Use this when you see a message code like 'ME 003' or 'MM 001' in error messages, dumps, or syslog entries. Returns the full message text with placeholder descriptions.

NameTypeReqDescription
languagestringLanguage key (default 'E' for English). Use SAP internal codes: E=English, D=German.
message_classstringyesSAP message class (e.g., 'ME', 'MM', 'VL', 'SD')
message_numberstringyesMessage number (e.g., '003', '001', '100')

No output schema declared.

No examples provided.

sap_multi_table_query ~474

Execute a multi-table query with proper joins and optional aggregation. Use this when you need data from 2+ tables that must be merged. Provide a JSON query plan with steps for each table, merge configuration, and optional aggregation. SUPPORTS AGGREGATION: For 'top N' queries, use the aggregation section to group, sum, sort, and limit results. IMPORTANT: Use this instead of multiple sap_read_table_data calls when you need joined data! CRITICAL - depends_on: When querying lookup/master data tables (KNA1, LFA1, MARA, etc.), ALWAYS use 'depends_on' and 'filter_field' to filter by keys from the primary table. This avoids querying the ENTIRE master data table. Example: To get customer names for sales orders, set KNA1 step with depends_on='orders', filter_field='KUNNR' — this queries only the customers in your order results. Without depends_on, KNA1 returns ALL customers (100K+) causing timeouts. NOTE: If the query returns more than 1000 rows, you will receive a 'requires_confirmation' response. You MUST ask the user if they want to see all the data. For 'last N' or 'most recent' requests, use sort_by + sort_order + limit instead of confirmed=true. Example: sort_by='WADAT_IST', sort_order='desc', limit=10 returns the 10 most recent deliveries. Fields in WHERE clauses and field lists are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names.

NameTypeReqDescription
confirmedbooleanSet to true after user confirms they want large results (>1000 rows)
limitintegerReturn only this many rows after sorting. Use with sort_by for 'last N' / 'top N' queries.
max_rowsintegerMaximum rows in final result (minimum 1000 enforced)
query_planobjectyesQuery plan with steps and merge configuration
sort_bystringField to sort final results by (e.g., WADAT_IST, ERDAT, NETWR). Applied after merge.
sort_orderstringSort direction. Use 'desc' for most recent / highest first.

No output schema declared.

No examples provided.

sap_patch_code ~132

Forward a source-patching request to the configured /patch_code endpoint. The public Node connector does not retrieve source, apply replacements in Python or perform compatibility fixes itself. Read the current source before preparing replacements, then verify supported object types, patch arguments and validation behavior against the installed endpoint.

NameTypeReqDescription
object_namestringyesObject name (e.g., Z_MY_REPORT, ZCL_MY_CLASS)
object_typestringyesObject type to patch
replacementsarrayyesList of search/replace operations to apply
short_textstringDescription (only used if object doesn't exist yet)

No output schema declared.

No examples provided.

sap_read_change_docs ~165

Query change documents from CDHDR/CDPOS tables. Shows who changed what data and when. Use sap_discover_change_object first to find the correct OBJECTCLAS.

NameTypeReqDescription
date_fromstringStart date in YYYYMMDD format
date_tostringEnd date in YYYYMMDD format
include_fieldsbooleanInclude field-level changes from CDPOS
max_rowsintegerMaximum rows to return (server limit: 10000)
object_classstringChange doc object class (e.g., KRED=Vendor, DEBI=Customer, SACH=G/L Account)
object_idstringSpecific object ID to filter
userstringFilter by user who made changes

No output schema declared.

No examples provided.

sap_read_change_docs_v2 ~181

Optimized change document query using function modules. Supports additional filtering by table name (TABNAME). Preferred over legacy endpoint.

NameTypeReqDescription
date_fromstringStart date in YYYYMMDD format
date_tostringEnd date in YYYYMMDD format
include_fieldsbooleanInclude field-level changes from CDPOS
max_rowsintegerMaximum rows to return (server limit: 10000)
object_classstringChange doc object class (e.g., KRED=Vendor, DEBI=Customer, SACH=G/L Account)
object_idstringSpecific object ID to filter
tabnamestringFilter by table name (e.g., LFBK for vendor bank data)
userstringFilter by user who made changes

No output schema declared.

No examples provided.

sap_read_code ~164

Retrieves the source code of an ABAP object (program, class, or function group). Optional `version` param ('ACTIVE' default, 'INACTIVE' for pending unactivated changes). When 'INACTIVE' is requested but no inactive version exists, returns the active version with `fallback_reason='no_inactive_version'`. The response includes a `version` field indicating which version was actually returned.

NameTypeReqDescription
object_namestringyesName of the object (case-insensitive)
object_typestringyesType of ABAP object
versionstringWhich source version to read. ACTIVE = last activated source (default). INACTIVE = pending unactivated changes (falls back to ACTIVE with fallback_reason='no_inactive_version' if not present).

No output schema declared.

No examples provided.

sap_read_domain_values ~45

Retrieves the fixed values defined for a domain. Useful for understanding valid values for fields like material type, document type, etc.

NameTypeReqDescription
domain_namestringyesDomain name

No output schema declared.

No examples provided.

sap_read_dump_details ~209

Get detailed information for a specific short dump including full error texts, cause, and solution. Use this after sap_read_dumps to drill into a specific dump. Pass date, time, user, server, and error_id directly from the sap_read_dumps results.

NameTypeReqDescription
datestringyesDump date in YYYYMMDD format (from sap_read_dumps 'date' field)
error_idstringError ID / RABAX name (from sap_read_dumps 'error_id' field). Improves error text lookup.
langustringLanguage for error texts (E=English, D=German). Defaults to system language.
serverstringApplication server (from sap_read_dumps 'server' field)
timestringyesDump time in HHMMSS format (from sap_read_dumps 'time' field)
userstringyesUser name who caused the dump (from sap_read_dumps 'user' field)

No output schema declared.

No examples provided.

sap_read_dumps ~105

Query ABAP runtime errors (short dumps) from SAP's ST22 transaction. Returns dump information including date, time, user, program, and error details.

NameTypeReqDescription
date_fromstringStart date in YYYYMMDD format (default: today)
date_tostringEnd date in YYYYMMDD format (default: today)
max_rowsintegerMaximum rows to return
userstringFilter by user name (optional)

No output schema declared.

No examples provided.

sap_read_dynpros ~49

Retrieves screen definitions for a program including field lists.

NameTypeReqDescription
object_namestringyesName of the object (case-insensitive)
object_typestringyesType of ABAP object

No output schema declared.

No examples provided.

sap_read_field_domain_values ~62

Get domain fixed values for a specific table field. Unlike /read_domain_values which requires the domain name, this finds the domain automatically from the field.

NameTypeReqDescription
field_namestringyesField name
table_namestringyesSAP table name

No output schema declared.

No examples provided.

sap_read_foreign_keys ~48

Read foreign key relationships for a table from Data Dictionary (DD08L). Shows which tables are related and can be joined.

NameTypeReqDescription
table_namestringyesData Dictionary table name

No output schema declared.

No examples provided.

sap_read_includes ~51

Retrieves all include files for a program with their source code.

NameTypeReqDescription
object_namestringyesName of the object (case-insensitive)
object_typestringyesType of ABAP object

No output schema declared.

No examples provided.

sap_read_jobs ~138

Query background job information from SAP's SM37 transaction. Returns job status, execution times, and scheduling details.

NameTypeReqDescription
date_fromstringStart date in YYYYMMDD format (default: last 7 days)
date_tostringEnd date in YYYYMMDD format (default: today)
job_namestringFilter by job name prefix
max_rowsintegerMaximum rows to return
statusstringJob status: F=Finished, A=Aborted, R=Running, S=Scheduled, P=Ready
userstringFilter by scheduling user

No output schema declared.

No examples provided.

sap_read_object_details ~168

Read comprehensive details about any SAP repository or DDIC object. Supports: DTEL (data elements), DOMA (domains with fixed values), TRAN (transactions — shows linked program), MSAG (message classes — all messages), TABL/STRU (table/structure fields), VIEW (database views), TTYP (table types), SHLP (search helps), ENQU (lock objects). For source code objects (PROG, CLAS, FUGR, FUNC), use sap_read_code instead. Returns structured data including descriptions, field definitions, relationships, and metadata.

NameTypeReqDescription
object_namestringyesObject name (e.g., MATNR for data element, VA01 for transaction, 00 for message class)
object_typestringyesType of object to read

No output schema declared.

No examples provided.

sap_read_object_info ~59

Get metadata about an ABAP object including creation date, last changed date, author, and package.

NameTypeReqDescription
object_namestringyesName of the object (case-insensitive)
object_typestringyesType of ABAP object

No output schema declared.

No examples provided.

sap_read_syslog ~102

Query system log entries from SAP's SM21 transaction. Shows system events, warnings, and errors.

NameTypeReqDescription
date_fromstringStart date in YYYYMMDD format (default: today)
date_tostringEnd date in YYYYMMDD format (default: today)
max_rowsintegerMaximum rows to return
tcodestringFilter by transaction code
userstringFilter by user

No output schema declared.

No examples provided.

sap_read_table_data ~184

Reads actual data from a SAP table with optional WHERE clause filtering and metadata inclusion. Use this for small to medium datasets (up to a few thousand rows). IMPORTANT: If the query returns more than 1000 rows, you will receive a 'requires_confirmation' response with a preview. You MUST ask the user if they want to see all the data before calling again with confirmed=true.

NameTypeReqDescription
confirmedbooleanSet to true after user confirms they want large results (>1000 rows)
field_liststringComma-separated field names to return (optional, defaults to all fields)
include_metadatabooleanInclude field structure metadata
max_rowsintegerMaximum rows to return (default: 10000)
table_namestringyesTable to read
where_clausestringSQL WHERE condition for filtering

No output schema declared.

No examples provided.

sap_read_table_data_enhanced ~118

Query data from an SAP table with optional WHERE clause filtering. Use this to retrieve business data like materials (MARA), purchase orders (EKKO), sales orders (VBAK), vendors (LFA1), customers (KNA1), etc. Supports ABAP WHERE clause syntax for filtering. For audit/compliance queries requiring ALL records, set audit_mode=true. Fields in WHERE clause and field_list are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_read_table_paginated ~79

Read table data with pagination support for large result sets. Use offset and limit to page through results. Recommended for tables with 500-5000 rows. For larger tables, consider streaming. Fields in WHERE clause and field_list are validated against table structure. Use sap_get_field_metadata or sap_read_table_structure first to discover correct field names.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_read_table_structure ~42

Retrieves the metadata of a Data Dictionary table including field definitions, data types, keys, and descriptions.

NameTypeReqDescription
table_namestringyesData Dictionary table name

No output schema declared.

No examples provided.

sap_read_texts ~53

Retrieves text elements (selection texts, text symbols) for a program.

NameTypeReqDescription
object_namestringyesName of the object (case-insensitive)
object_typestringyesType of ABAP object

No output schema declared.

No examples provided.

sap_read_translations ~346

Reads translatable texts from a SAP object in source and optionally target language. Equivalent to SE63 in SAP GUI. Supports: PROG (text pool), DTEL (data element), DOMA (domain values), MSAG (message class), TABL (table/field texts), FUNC (function module), CLAS (class description + method/component descriptions + class text pool), CUAD (GUI status: function texts, titles, menus), DYNP (dynpro screens: screen titles, custom field texts, frame titles). Returns text IDs, source texts, existing target translations, and max lengths.

NameTypeReqDescription
object_namestringyesName of the SAP object (e.g., ZPROG_EXAMPLE, MATNR, MTART, Z_MY_MSG)
object_typestringyesType of SAP object. PROG=Program text pool, DTEL=Data element, DOMA=Domain fixed values, MSAG=Message class, TABL=Table/field descriptions, FUNC=Function module, CLAS=Class (description + method desc…
source_languagestringSAP 1-char language code for source texts. E=English, D=German, S=Spanish, F=French, I=Italian, J=Japanese, P=Portuguese, K=Korean, 1=Chinese. Default: E
target_languagestringSAP 1-char language code for target texts (optional). If provided, also reads existing translations in the target language.

No output schema declared.

No examples provided.

sap_read_user_locks ~68

Query user lock status from USR02 table. Shows which users are locked and their last login information.

NameTypeReqDescription
locked_onlybooleanOnly return locked users
max_rowsintegerMaximum rows to return
userstringFilter by user name prefix

No output schema declared.

No examples provided.

sap_read_where_used ~226

Queries SAP's cross-reference tables (WBCROSSGT/WBCROSSI) to find what objects use a given object (forward) or what a given object uses (inverse). Equivalent to SAP's 'Where-Used List' functionality. IMPORTANT: For heavily-used tables (MARA, KNA1, LFA1), use name_filter='Z*' to avoid timeout!

NameTypeReqDescription
directionstringQuery direction: 'forward' finds what uses this object, 'inverse' finds what this object uses
max_resultsintegerMaximum number of results to return (max: 1000)
name_filterstringFilter pattern for object names (e.g., 'Z*' for custom objects, 'Y*' for Y namespace). Supports * as wildcard. REQUIRED for heavily-used tables like MARA to avoid timeout!
object_namestringyesName of the object to look up (e.g., MARA, BAPI_PO_CREATE, ZCL_MY_CLASS)
object_typestringType of the object

No output schema declared.

No examples provided.

sap_run_program ~130

Request execution of an ABAP report through the configured /run_program endpoint. Report name is required; variant-based selection and returned output depend on the installed backend. The public Node connector does not implement a 180-second timeout, background-job fallback or polling workflow. Agree the report and execution scope before use.

NameTypeReqDescription
max_output_linesintegerMaximum output lines to return (default: 500)
reportstringyesABAP program name to execute (e.g., Z_PO_SUMMARIZER). Will be uppercased.
variantstringSelection screen variant name (optional).

No output schema declared.

No examples provided.

sap_run_transaction ~182

Run the ABAP report behind a report transaction code, optionally with a selection-screen variant, and return its list output. Resolves the transaction to its program via TSTC, then runs it like sap_run_program (extended timeout with background-job fallback). Parameter 'tcode' (required) is the transaction code. Parameter 'variant' (optional) is a selection-screen variant (create it with sap_save_variant for programs with mandatory fields). LIMITATION: only report transactions (TSTC-PGMNA set) can run headlessly; pure dialog transactions are not supported.

NameTypeReqDescription
max_output_linesintegerMaximum output lines to return (default: 500)
tcodestringyesTransaction code (e.g. SE16, ZXYZ). Will be uppercased.
variantstringSelection screen variant name (optional).

No output schema declared.

No examples provided.

sap_save_variant ~291

Create or overwrite an ABAP selection-screen VARIANT for a report, so it can be reused by sap_run_program (and the performance trace / headless runs) for programs whose selection screen has mandatory fields. Parameter 'report' (required) is the program name. Parameter 'variant' (required) is the variant name (<=14 chars). Parameter 'text' (optional) is a description. Parameter 'environment' (optional, default 'A') is 'A' online or 'B' batch. Parameter 'parameters' (required) is the selection values as a list of objects with keys: selname, kind ('P' parameter / 'S' select-option), sign ('I'/'E'), option ('EQ','BT','CP',...), low, high. To read a variant back use sap_call_function RS_VARIANT_CONTENTS_RFC (REPORT, VARIANT); to delete use RS_VARIANT_DELETE_RFC (REPORT, VARIANT).

NameTypeReqDescription
environmentstringVariant environment: 'A' (online, default) or 'B' (batch).
parametersarrayyesSelection values (RSPARAMS rows).
reportstringyesABAP report/program name. Will be uppercased.
textstringVariant description (optional).
variantstringyesVariant name, max 14 chars. Will be uppercased.

No output schema declared.

No examples provided.

sap_scan_security_notes ~212

Discover ABAP Security/HotNews notes for a SAP patch-day month and rank them by relevancy to this system. Fetches the public SAP Focused Run CSA note policy (github.com/SAP-samples/frun-csa-policies-best-practices), compares each note's fixed-in support-package levels against the system's installed components (CVERS), and classifies the affected ones via /classify_note_v2. min_priority=1 for HotNews only (1=HotNews .. 4=Low; includes priorities <= the given value). month defaults to the latest published patch day.

NameTypeReqDescription
classifybooleanClassify affected notes via classify_note_v2 (implementation state on this system). Default true.
min_priorityintegerInclude notes with priority <= this value. 1=HotNews only, 4=all (default).
monthstringPatch-day month as YYYY-MM (e.g., 2026-06). Default: latest published.

No output schema declared.

No examples provided.

sap_search_knowledge ~131

Search SAP documentation and community for information on any SAP topic. Queries SAP Help Portal and web sources (community.sap.com, StackOverflow, blogs.sap.com). Use this to research SAP concepts, find best practices, or look up configuration guides. Unlike sap_lookup_error, this is for general knowledge queries, not specific error messages.

NameTypeReqDescription
max_resultsintegerMaximum results per source (default: 5)
querystringyesSearch query. Examples: 'SAP BAPI_SALESORDER_CREATEFROMDAT2 usage', 'CDS view with currency conversion', 'MRP configuration best practices'

No output schema declared.

No examples provided.

sap_search_tables ~46

Search the Data Dictionary for tables matching a keyword. Returns table names and descriptions.

NameTypeReqDescription
keywordstringyesSearch keyword
max_resultsintegerMaximum results to return

No output schema declared.

No examples provided.

sap_smart_table_query ~82

Execute a table query with automatic metadata-driven enhancements. This tool: 1. Fetches table metadata and classifies fields 2. Adds recommendations for currency filtering, status exclusion 3. Warns if you're using the wrong customer field 4. Executes the query with proper field validation Use this instead of sap_read_table_data when you want intelligent guidance!

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_stream_table_data ~76

Streams large table data using offset-based pagination. Call repeatedly with increasing offset to retrieve all data. Ideal for tables with millions of rows.

NameTypeReqDescription
offsetintegerStarting row offset
package_sizeintegerRows per chunk (recommended max: 10000)
table_namestringyesTable to stream

No output schema declared.

No examples provided.

sap_syntax_check ~50

Validates ABAP source code for syntax errors without creating or activating it.

NameTypeReqDescription
program_namestringContext program name (optional)
sourcearrayyesSource code lines to check

No output schema declared.

No examples provided.

sap_translate ~216

Composite tool: reads translatable texts from a SAP object, translates them using AI, and optionally writes them back. Workflow: 1) Read source texts 2) AI translate with SAP terminology 3) Return translations for review (or auto-deploy if auto_deploy=true). Preserves SAP placeholders (&1, &2, etc.) and respects max_length constraints. Supports: PROG, DTEL, DOMA, MSAG, TABL, FUNC, CLAS, CUAD, DYNP.

NameTypeReqDescription
auto_deploybooleanIf true, automatically write translations to SAP after AI translation. If false (default), return translations for review first.
object_namestringyesName of the SAP object
object_typestringyesType of SAP object
source_languagestringSAP 1-char source language code (default: E=English)
target_languagestringyesSAP 1-char target language code (e.g., S=Spanish, D=German)

No output schema declared.

No examples provided.

sap_write_code ~163

Forward an ABAP source-write request to the configured /write_code endpoint. This connector does not redirect class writes, apply compatibility fixes, run a separate syntax check or activate objects itself. Confirm supported object types, authorization, validation and activation behavior on the installed backend before allowing writes.

NameTypeReqDescription
fugr_namestringFunction group name (required for FUNC type)
object_namestringyesName for the object
object_typestringyesType of object to create
packagestringDevelopment package for CLAS (defaults to $TMP)
short_textstringDescription text
sourcearrayyesSource code lines
transportstringTransport request for CLAS (required if package != $TMP)

No output schema declared.

No examples provided.

sap_write_code_safe ~92

Forward a request to the configured /write_code_safe endpoint. Validation, compatibility fixes, retries and deployment behavior depend on that installed endpoint; the tool name does not establish those safeguards. The public Node connector does not implement the Python bridge workflow, provide an abap://syntax-rules resource or route writes through ADT itself. Verify the backend contract and required arguments before use; the current input schema is incomplete.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

sap_write_translations ~148

Writes translated texts back to a SAP object. Equivalent to saving translations in SE63. Provide an array of translations with text_id (from sap_read_translations) and the translated_text. Supports: PROG, DTEL, DOMA, MSAG, TABL, FUNC, CLAS, CUAD, DYNP.

NameTypeReqDescription
object_namestringyesName of the SAP object
object_typestringyesType of SAP object
target_languagestringyesSAP 1-char language code for the target language. E=English, D=German, S=Spanish, F=French, etc.
translationsarrayyesArray of translations to write

No output schema declared.

No examples provided.

Common questions

What is the ABAPilot MCP server?

ABAPilot is an MCP server listed in the public MCP registry as io.github.NicoHern/abapilot-mcp. ABAP MCP connector for SAP ECC and on-premise S/4HANA. Requires a licensed ABAPilot backend. This page covers its npm package (abapilot).

Is the ABAPilot MCP server safe to use?

ABAPilot scores 73 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ABAPilot MCP server expose?

ABAPilot exposes 49 tools: sap_analyze_query, sap_check_notes_relevancy, sap_check_type_exists, sap_count_rows, sap_diagnose_message, and 44 more. Their descriptions and schemas cost roughly 6,905 tokens of context every time the server is loaded.

Is the ABAPilot MCP server still maintained?

ABAPilot is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the ABAPilot MCP server under?

ABAPilot declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.