ABAPilot
NPM · ABAPILOT · SCANNED SEP 20
ABAP MCP connector for SAP ECC and on-premise S/4HANA. Requires a licensed ABAPilot backend.
Available components
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 10 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add nicohern-abapilot-mcp -- npx -y abapilot
{
"mcpServers": {
"nicohern-abapilot-mcp": {
"command": "npx",
"args": [
"-y",
"abapilot"
]
}
}
} {
"servers": {
"nicohern-abapilot-mcp": {
"command": "npx",
"args": [
"-y",
"abapilot"
]
}
}
} codex mcp add nicohern-abapilot-mcp -- npx -y abapilot
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"nicohern-abapilot-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"abapilot"
],
"enabled": true
}
}
} openclaw mcp add nicohern-abapilot-mcp --command npx --arg -y --arg abapilot
mcp_servers:
nicohern-abapilot-mcp:
command: "npx"
args: ["-y", "abapilot"] {
"McpServers": {
"nicohern-abapilot-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"abapilot"
]
}
}
} assistant mcp add nicohern-abapilot-mcp -t stdio -c npx -a -y abapilot
{
"mcpServers": {
"nicohern-abapilot-mcp": {
"command": "npx",
"args": [
"-y",
"abapilot"
]
}
}
} 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
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 →
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 →
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!
| Name | Type | Req | Description |
|---|---|---|---|
| fetch_metadata | boolean | – | If true, also fetch and classify field metadata for identified tables (default: true) |
| query | string | yes | Natural 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.
| Name | Type | Req | Description |
|---|---|---|---|
| note_ids | array | yes | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| type_name | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | SAP language key for T100 search (e.g., S=Spanish, E=English, D=German). Default: S. |
| message_id | string | – | Message class (e.g., V1, F5, ME). Omit if only message text is available. |
| message_number | string | – | Message number (e.g., 001, 312). Omit if only message text is available. |
| message_text | string | – | Message text from screenshot or user description. Used to reverse-lookup message class/number from T100 when message_id is not known. |
| program_name | string | – | ABAP program name (e.g., SAPMV45A). Optional if transaction is provided. |
| transaction | string | – | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| table_name | string | yes | Data 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.
| Name | Type | Req | Description |
|---|---|---|---|
| program_name | string | – | ABAP program name (e.g., SAPMF02D for XD01/XD02, SAPMV45A for VA01) |
| transaction | string | – | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| table1 | string | yes | First table name |
| table2 | string | yes | Second 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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_subpackages | boolean | – | If true, also scan sub-packages (reads TDEVC for hierarchy) |
| object_type_filter | string | – | Optional: filter by object type (e.g., 'PROG', 'CLAS', 'FUGR', 'TABL'). Leave empty for all. |
| package | string | yes | Development 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.
| Name | Type | Req | Description |
|---|---|---|---|
| context | string | – | Optional additional context: transaction code, program name, or description of what was happening when the error occurred. |
| error_message | string | yes | The error message to analyze. Can include SAP message codes like 'ME 003', dump error texts, or any error description from SAP. |
| sources | array | – | Optional 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.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Language key (default 'E' for English). Use SAP internal codes: E=English, D=German. |
| message_class | string | yes | SAP message class (e.g., 'ME', 'MM', 'VL', 'SD') |
| message_number | string | yes | Message 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | – | Set to true after user confirms they want large results (>1000 rows) |
| limit | integer | – | Return only this many rows after sorting. Use with sort_by for 'last N' / 'top N' queries. |
| max_rows | integer | – | Maximum rows in final result (minimum 1000 enforced) |
| query_plan | object | yes | Query plan with steps and merge configuration |
| sort_by | string | – | Field to sort final results by (e.g., WADAT_IST, ERDAT, NETWR). Applied after merge. |
| sort_order | string | – | Sort 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Object name (e.g., Z_MY_REPORT, ZCL_MY_CLASS) |
| object_type | string | yes | Object type to patch |
| replacements | array | yes | List of search/replace operations to apply |
| short_text | string | – | Description (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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Start date in YYYYMMDD format |
| date_to | string | – | End date in YYYYMMDD format |
| include_fields | boolean | – | Include field-level changes from CDPOS |
| max_rows | integer | – | Maximum rows to return (server limit: 10000) |
| object_class | string | – | Change doc object class (e.g., KRED=Vendor, DEBI=Customer, SACH=G/L Account) |
| object_id | string | – | Specific object ID to filter |
| user | string | – | Filter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Start date in YYYYMMDD format |
| date_to | string | – | End date in YYYYMMDD format |
| include_fields | boolean | – | Include field-level changes from CDPOS |
| max_rows | integer | – | Maximum rows to return (server limit: 10000) |
| object_class | string | – | Change doc object class (e.g., KRED=Vendor, DEBI=Customer, SACH=G/L Account) |
| object_id | string | – | Specific object ID to filter |
| tabname | string | – | Filter by table name (e.g., LFBK for vendor bank data) |
| user | string | – | Filter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the object (case-insensitive) |
| object_type | string | yes | Type of ABAP object |
| version | string | – | Which 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.
| Name | Type | Req | Description |
|---|---|---|---|
| domain_name | string | yes | Domain 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | Dump date in YYYYMMDD format (from sap_read_dumps 'date' field) |
| error_id | string | – | Error ID / RABAX name (from sap_read_dumps 'error_id' field). Improves error text lookup. |
| langu | string | – | Language for error texts (E=English, D=German). Defaults to system language. |
| server | string | – | Application server (from sap_read_dumps 'server' field) |
| time | string | yes | Dump time in HHMMSS format (from sap_read_dumps 'time' field) |
| user | string | yes | User 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Start date in YYYYMMDD format (default: today) |
| date_to | string | – | End date in YYYYMMDD format (default: today) |
| max_rows | integer | – | Maximum rows to return |
| user | string | – | Filter by user name (optional) |
No output schema declared.
No examples provided.
sap_read_dynpros ~49
Retrieves screen definitions for a program including field lists.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the object (case-insensitive) |
| object_type | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| field_name | string | yes | Field name |
| table_name | string | yes | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| table_name | string | yes | Data 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the object (case-insensitive) |
| object_type | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Start date in YYYYMMDD format (default: last 7 days) |
| date_to | string | – | End date in YYYYMMDD format (default: today) |
| job_name | string | – | Filter by job name prefix |
| max_rows | integer | – | Maximum rows to return |
| status | string | – | Job status: F=Finished, A=Aborted, R=Running, S=Scheduled, P=Ready |
| user | string | – | Filter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Object name (e.g., MATNR for data element, VA01 for transaction, 00 for message class) |
| object_type | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the object (case-insensitive) |
| object_type | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| date_from | string | – | Start date in YYYYMMDD format (default: today) |
| date_to | string | – | End date in YYYYMMDD format (default: today) |
| max_rows | integer | – | Maximum rows to return |
| tcode | string | – | Filter by transaction code |
| user | string | – | Filter 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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirmed | boolean | – | Set to true after user confirms they want large results (>1000 rows) |
| field_list | string | – | Comma-separated field names to return (optional, defaults to all fields) |
| include_metadata | boolean | – | Include field structure metadata |
| max_rows | integer | – | Maximum rows to return (default: 10000) |
| table_name | string | yes | Table to read |
| where_clause | string | – | SQL 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.
| Name | Type | Req | Description |
|---|---|---|---|
| table_name | string | yes | Data Dictionary table name |
No output schema declared.
No examples provided.
sap_read_texts ~53
Retrieves text elements (selection texts, text symbols) for a program.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the object (case-insensitive) |
| object_type | string | yes | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the SAP object (e.g., ZPROG_EXAMPLE, MATNR, MTART, Z_MY_MSG) |
| object_type | string | yes | Type 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_language | string | – | SAP 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_language | string | – | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| locked_only | boolean | – | Only return locked users |
| max_rows | integer | – | Maximum rows to return |
| user | string | – | Filter 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!
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | Query direction: 'forward' finds what uses this object, 'inverse' finds what this object uses |
| max_results | integer | – | Maximum number of results to return (max: 1000) |
| name_filter | string | – | Filter 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_name | string | yes | Name of the object to look up (e.g., MARA, BAPI_PO_CREATE, ZCL_MY_CLASS) |
| object_type | string | – | Type 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_output_lines | integer | – | Maximum output lines to return (default: 500) |
| report | string | yes | ABAP program name to execute (e.g., Z_PO_SUMMARIZER). Will be uppercased. |
| variant | string | – | Selection 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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_output_lines | integer | – | Maximum output lines to return (default: 500) |
| tcode | string | yes | Transaction code (e.g. SE16, ZXYZ). Will be uppercased. |
| variant | string | – | Selection 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).
| Name | Type | Req | Description |
|---|---|---|---|
| environment | string | – | Variant environment: 'A' (online, default) or 'B' (batch). |
| parameters | array | yes | Selection values (RSPARAMS rows). |
| report | string | yes | ABAP report/program name. Will be uppercased. |
| text | string | – | Variant description (optional). |
| variant | string | yes | Variant 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.
| Name | Type | Req | Description |
|---|---|---|---|
| classify | boolean | – | Classify affected notes via classify_note_v2 (implementation state on this system). Default true. |
| min_priority | integer | – | Include notes with priority <= this value. 1=HotNews only, 4=all (default). |
| month | string | – | Patch-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.
| Name | Type | Req | Description |
|---|---|---|---|
| max_results | integer | – | Maximum results per source (default: 5) |
| query | string | yes | Search 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.
| Name | Type | Req | Description |
|---|---|---|---|
| keyword | string | yes | Search keyword |
| max_results | integer | – | Maximum 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.
| Name | Type | Req | Description |
|---|---|---|---|
| offset | integer | – | Starting row offset |
| package_size | integer | – | Rows per chunk (recommended max: 10000) |
| table_name | string | yes | Table 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.
| Name | Type | Req | Description |
|---|---|---|---|
| program_name | string | – | Context program name (optional) |
| source | array | yes | Source 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.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_deploy | boolean | – | If true, automatically write translations to SAP after AI translation. If false (default), return translations for review first. |
| object_name | string | yes | Name of the SAP object |
| object_type | string | yes | Type of SAP object |
| source_language | string | – | SAP 1-char source language code (default: E=English) |
| target_language | string | yes | SAP 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.
| Name | Type | Req | Description |
|---|---|---|---|
| fugr_name | string | – | Function group name (required for FUNC type) |
| object_name | string | yes | Name for the object |
| object_type | string | yes | Type of object to create |
| package | string | – | Development package for CLAS (defaults to $TMP) |
| short_text | string | – | Description text |
| source | array | yes | Source code lines |
| transport | string | – | Transport 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.
| Name | Type | Req | Description |
|---|---|---|---|
| object_name | string | yes | Name of the SAP object |
| object_type | string | yes | Type of SAP object |
| target_language | string | yes | SAP 1-char language code for the target language. E=English, D=German, S=Spanish, F=French, etc. |
| translations | array | yes | Array of translations to write |
No output schema declared.
No examples provided.
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.