ABAP MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAP_URL | Yes | The URL of the SAP system, e.g., https://<SAP_SYSTEM>:<PORT> | |
| SAP_ROLE | No | User role: viewer, developer, or admin (default admin) | admin |
| SAP_USER | Yes | SAP system username | |
| MAX_DUMPS | No | Maximum number of dumps in output (default 20) | 20 |
| SAP_CLIENT | Yes | SAP client number, e.g., 100 | |
| SAP_ROUTER | No | SAProuter connection string, e.g., /H/saproutprd.example.com/S/3299 | |
| ALLOW_WRITE | No | Enable write operations (default false) | false |
| DEFER_TOOLS | No | Enable deferred tool loading (default true) | true |
| ALLOW_DELETE | No | Enable delete operations (default false) | false |
| SAP_LANGUAGE | Yes | SAP logon language, e.g., EN | EN |
| SAP_PASSWORD | Yes | SAP system password | |
| ALLOW_EXECUTE | No | Enable execute operations (default false) | false |
| SAP_PROXY_URL | No | HTTP-CONNECT proxy URL, e.g., http://proxy.corp.example.com:8080 | |
| AUDIT_LOG_FILE | No | Optional path to a JSON audit log file | |
| TAVILY_API_KEY | No | API key for Tavily web search (optional, for fetch_url and search_sap_web) | |
| SAP_BTP_CF_HOME | No | Path to project directory with cf session | |
| BLOCKED_PACKAGES | No | Comma-separated list of blocked packages (default SAP,SHD,SMOD) | SAP,SHD,SMOD |
| SAP_ABAP_VERSION | No | ABAP version for help.sap.com links (default latest) | latest |
| SAP_ROUTER_DEBUG | No | Enable SAProuter debug output | false |
| DEFAULT_TRANSPORT | No | Default transport request number | |
| SAP_ROUTER_PASSWORD | No | SAProuter password if required | |
| SOURCE_CACHE_TTL_MS | No | Source cache TTL in milliseconds (default 30000, 0 disables) | 30000 |
| SAP_ALLOW_UNAUTHORIZED | No | Allow self-signed certificates (only for DEV systems) | false |
| SAP_BTP_CONNECTIVITY_PROXY | No | URL of BTP Connectivity Proxy, e.g., http://localhost:20003 | |
| SYNTAX_CHECK_BEFORE_ACTIVATE | No | Whether to run syntax check before activation (default true) | true |
| SAP_BTP_CONNECTIVITY_LOCATION_ID | No | Location ID for BTP Connectivity (optional) | |
| SAP_BTP_CONNECTIVITY_CDS_BIND_FILE | No | Path to CDS bind file for connectivity | |
| SAP_BTP_CONNECTIVITY_CDS_BIND_NAME | No | CDS bind name for connectivity |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_abap_contractA | Returns the COMPRESSED public interface (signatures, no method bodies) of a class or interface — typically 5–10% of the full source. Use to give an agent the API surface of a dependency cheaply before writing code against it. |
| validate_ddic_referencesA | Statically analyzes ABAP source code and checks all referenced table fields against DDIC metadata. Returns a list of invalid field names. ⚡ Recommended to call before write_abap_source to avoid 'Field unknown' syntax errors. Detects: (1) TYPE/LIKE tab-field, (2) table~field (New SQL), (3) SELECT field list FROM table, (4) WHERE clause fields. |
| batch_readA | Executes multiple read-only tool calls in a single MCP request — the server runs them in parallel (Promise.allSettled) and returns all results at once. Dramatically reduces round-trip latency for clients like Cline that execute tools sequentially. Each operation specifies a tool name and its arguments (same as calling the tool directly). Only read-only tools are allowed (no write/create/delete). Max 20 operations per batch. Example: batch_read({ operations: [ { tool: 'read_abap_source', args: { objectUrl: '...', includeRelated: true }, label: 'main' }, { tool: 'where_used', args: { objectUrl: '...' }, label: 'usages' }, { tool: 'get_object_info', args: { objectUrl: '...' }, label: 'info' } ] }) |
| analyze_abap_contextA | Analyzes the complete context of an ABAP object: reads source code including all includes, detects referenced function modules, classes and interfaces via regex, retrieves their metadata and returns a structured context report. Entry point for the abap_develop workflow. |
| search_abap_syntaxA | Searches the official ABAP syntax documentation from help.sap.com based on a free-text query (e.g. 'SELECT UP TO ROWS', 'LOOP AT clause order'). Automatically identifies the main keyword, loads the documentation page and returns the relevant syntax section. Call BEFORE writing ABAP code to ensure correct syntax. |
| fetch_urlA | Fetches and extracts readable content from a URL. Works with JavaScript-rendered pages (SPAs) like SAP Help Portal, SAP Community blogs, SAP Notes, or any web page. Returns the extracted text content. Use when you need to read the actual content of a specific URL (not search). Requires TAVILY_API_KEY in .env. |
| search_sap_webA | Searches SAP Help (help.sap.com), SAP Community (community.sap.com) and SAP Notes (me.sap.com) via Tavily Search API. Returns compact results (title + URL + snippet) to minimize token usage. Use for: error messages, SAP Notes, best practices, blog posts, KBAs, migration guides. Requires TAVILY_API_KEY in .env. |
| SAPReadB | Consolidated READ verb. Delegates by 'operation': source | method | contract | info | where_used | table | table_fields | ddic | revisions | context. Pass 'args' exactly as the underlying granular tool expects. Use this when you want a small tool surface instead of the 50 granular tools. |
| SAPWriteB | Consolidated WRITE verb. Delegates by 'operation': source | method | activate | pretty_print | create_program | create_class | create_interface | create_function_group | create_cds_view | create_table | create_message_class | create_metadata_extension | create_service_definition | create_service_binding | publish_service_binding | create_dcl | create_bdef | delete. Inherits all safety guards (ALLOW_WRITE/DELETE, role, audit) from the delegate. Pass 'args' as the granular tool expects. |
| SAPSearchB | Consolidated SEARCH verb. Delegates by 'operation': objects | source | call_graph | dead_code. Pass 'args' as the underlying tool expects. |
| SAPDiagnoseB | Consolidated QUALITY/DIAGNOSTICS verb. Delegates by 'operation': syntax | atc | unit | ddic_validate | clean_abap | dumps | dump_detail | traces | trace_detail | workflow. Pass 'args' as the underlying tool expects. |
| find_toolsA | Finds and enables ABAP tools by search term or category. ⚠️ Most tools are deferred — call this BEFORE using any non-core tool! Categories: SEARCH, READ, WRITE, CREATE (programs, classes, interfaces, function groups, CDS views, tables, message classes, CDS metadata extensions, service definitions, service bindings, data control language), DELETE, TEST, QUALITY (syntax check, ATC, Clean ABAP review, DDIC validation), DIAGNOSTICS (short dumps, traces), TRANSPORT, ABAPGIT, QUERY, DOCUMENTATION (ABAP syntax help), WEBSEARCH (Google SAP web search), BATCH (parallel read operations), ANALYSIS (call graph, dead-code detection), INTENT (consolidated SAPRead/SAPWrite/SAPSearch/SAPDiagnose verbs). Enabled tools become immediately available. |
| list_toolsA | Returns a compact overview of ALL 50+ available tools with short descriptions, grouped by category. Shows which tools are currently active (core/enabled) vs. deferred. Use this to discover the right tool for a task. Unlike find_tools, this does NOT enable tools — it only lists them. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| abap_develop | Intelligent ABAP development workflow: First analyzes the complete context, applies modern ABAP principles. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jackxiong11894/dimidr-abap-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server