About Mcp2
Mcp2 is an MCP server published by abap-ai in the Developer Tools category: aBAP MCP V2 SDK (2026-07-28+).
The repository has 14 stars and 3 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/abap-ai/mcp2This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Mcp2
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 3 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- ✓Dependencies pinnedA lockfile pins dependency versions.
2 checks have not been run yet.
Releases
README
ABAP Model Context Protocol Server SDK v2 (mcp2)
A stateless, rewrite of the ABAP Model Context Protocol
server SDK, targeting the upcoming 2026-07-28 protocol generation while staying downward
compatible with the legacy era (2025-03-26 … 2025-11-25).
MCP
2026-07-28draft synchronous request/response profile. SSE, subscriptions, streaming responses, sessions, and server-pushed notifications are unsupported. Legacy revisions are served statelessly with the latest legacy data shapes.
This is a server implementation only. It is stateless — no protocol sessions, no SSE — so notification- and subscription-based features are out of scope by design (see docs/ProtocolSupport.md).
Status:
1.0.0(changelog). Active v2 implementation for the stateless2026-07-28protocol generation. Protocol core, data classes, HTTP runtime, config/factory, DDIC tables, demo servers and the request/response Tasks extension are implemented and covered by abaplint plus the external Jest integration suite in the siblingmcp2_testsrepository. The original session-based SDK lives separately and is unaffected; this package uses the distinctmcp2object prefix so both can coexist in one ABAP system.
Main Differences from V1 MCP SDK
- 7.02 – 7.4x support ships as a separate generated downport repository, not from this one --> https://github.com/abap-ai/mcp2-702
- No sessions, etc.
- No default auth object and check delivered --> you must implement your own auth checks if required, see Configuration and security
- No table maintenance due to frequent install issues
Intentionally not supported
- ABAP Cloud - with SAP pushing towards using their MCP strategy and features in BTP I see no reason to put in the required effort
Documentation
User guide — building servers with the SDK:
- Getting started — install, ICF setup, first server
- Learning path — staged exercises from first tool to MRTR and tasks
- Demo servers — feature map and legacy/modern walkthrough
- Server identity and request context — metadata, capabilities, tracing, caching
- Tools — arguments, content blocks, structured output, validation
- Resources — resources, reads, templates
- Prompts — prompt templates and arguments
- Completions — argument autocompletion
- Schemas — schema builders (general / DDIC / elicitation) + validator
- Input required (MRTR) — elicitation, sampling, URL mode
- Tasks — long-running background work
- Configuration and security — tables, CORS, auth, error mapping
- Troubleshooting — symptom-first index of common failures
- Migrating from v1 — what changes, what is dropped, suggested order
Reference — design and internals:
- Class reference — every public class, what it is for, where it is explained
- Architecture — design, packages, eras, request flow
- Protocol support — versions, methods, what is excluded and why
- Conversion — per-field data-class conversion conventions
- Platform abstraction — HTTP/DDIC wrapping and the ABAP Cloud roadmap
Design at a glance
- Stateless only — every request is self-contained; no
Mcp-Session-Id, no session tables. - One server contract, two protocol eras — legacy
initializeand modern per-request_metanegotiation served by the samezif_mcp2_server. - Typed authoring surface — common server-authoring paths need no hand-written JSON: typed
request getters (
require_arg_string,get_arg_string_or,bind_arguments), typed response factories (zcl_mcp2_resp_call_tool=>text,=>error_text,=>structured_data) and full-control builders (add_resource,add_resource_link,set_structured_data) with typed content annotations (zif_mcp2_content), fluent schema builders (zcl_mcp2_schema_builderfor tool schemas,zcl_mcp2_elicit_schemafor flat elicitation forms), and typed input-request builders (zcl_mcp2_input_elicitation,zcl_mcp2_input_sampling) unified byzif_mcp2_input_request. UI icons are typed everywhere the spec allows them: serverInfo (get_icons), tools, prompts, resources, resource templates and resource links (zif_mcp2_content=>icons). Pre-built ajson remains an escape hatch for rich prompt content and custom extensions. - Tool catalog base — inherit from
zcl_mcp2_tool_server_base, declaredefine_tools( )once, and implementcall_tool( ). The base derivessupports_tools,tools/list,get_tool_schema, unknown-tool rejection, and default schema validation from the catalog. Advertised-schema violations are returned asisErrortool results in both eras; structurally malformed calls and unknown tools remain-32602. - Era-aware capability checks on the base class —
client_supports_elicitation,client_supports_elicit_url,client_supports_sampling,client_supports_tasks(modern: declared extension; legacy: per-requestparams.taskopt-in),era_is_modern,get_protocol_version, pluscan_request_input/input_requiredfor MRTR, let authors safely gate era- and client-dependent features instead of hitting a framework-32021/-32600. Of the features SEP-2577 deprecates in2026-07-28, Roots and Logging are not implemented; Sampling is kept (as an MRTR input builder) because it is the only key-less LLM access path from ABAP. - Request context without
_metaparsing — client identity, negotiated protocol, log-level hints and W3C trace context are available through typed base-class getters. serverInfolives in_metain the modern era. The2026-07-28draft movedserverInfoout of the top-level result and into_meta["io.modelcontextprotocol/serverInfo"](theResultMetaObjectshape) on 2026-07-16, so the SDK emits it there on every modern result,server/discoverincluded, and nowhere else (details). Legacyinitializeis unaffected:serverInfostays a plain top-level field there.- Conversion in the data class — explicit per-field JSON↔ABAP; central code only for the JSON-RPC envelope and the modern result stamp.
Target / tooling
- ABAP 7.5x classic (first iteration). abaplint
v752. - ABAP 7.02 – 7.4x via a generated downport, published as a separate abapGit repository. Cloud-ready not planned.
- Distributed via abapGit.
Used ABAP open-source projects
- ajson — JSON library, vendored as
zmcp2_ajson(MIT). - abaplint — linting and transpiler-based unit tests.
- abapGit — source control.
More awesome ABAP projects at dotabap.org.
Development checks
- Static check:
npm installonce, thennpm run lint(abaplint, config in abaplint.json). - Behavior: the Jest integration suite in the sibling
mcp2_testsrepository, run against an ABAP system serving the SDK and its test servers. It covers both protocol eras against the reference TypeScript SDK plus raw-HTTP wire checks. - ABAP unit tests run in the ABAP system (SE80/ADT); the transpiler-based local run only covers a subset (no database, vendored-ajson unicode test excluded).
License
MIT. Vendored dependencies retain their original licenses; see THIRD_PARTY_NOTICES.md.
README fetched from the repository 3 days ago. The original is authoritative.