<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Open-Source on Marian Zeis Blog</title>
    <link>https://blog.zeis.de/tags/open-source/</link>
    <description>Recent content in Open-Source on Marian Zeis Blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 10 Aug 2026 09:30:00 +0200</lastBuildDate>
    <atom:link href="https://blog.zeis.de/tags/open-source/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Introducing open-rfc: Calling SAP RFC from Node.js Without the SDK</title>
      <link>https://blog.zeis.de/posts/2026-08-10-open-rfc/</link>
      <pubDate>Mon, 10 Aug 2026 09:30:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-08-10-open-rfc/</guid>
      <description>&lt;p&gt;If you ever wanted to call a remote-enabled ABAP function module from JavaScript or Node.js, you probably discovered quite quickly that this is not as easy as it sounds.&lt;/p&gt;&#xA;&lt;p&gt;There is an RFC protocol. There are remote-enabled function modules. There is an npm package called &lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt;. So you would expect to install the package, add the connection details, and make the call.&lt;/p&gt;&#xA;&lt;p&gt;But &lt;code&gt;npm install node-rfc&lt;/code&gt; was never the complete setup.&lt;/p&gt;&#xA;&lt;p&gt;You also need the SAP NetWeaver RFC SDK. You need the right authorization to download it from the SAP Support Portal, the correct build for your operating system and architecture, and the current supported patch level. The native libraries must be installed where the runtime can find them. On Linux that usually means configuring &lt;code&gt;SAPNWRFC_HOME&lt;/code&gt; and the library search path. If no suitable prebuilt addon exists, you also need the C++ build toolchain, Python, &lt;code&gt;node-gyp&lt;/code&gt;, and headers to compile the Node.js addon.&lt;/p&gt;&#xA;&lt;p&gt;Then this has to work again in Docker, CI/CD, Cloud Foundry, Kyma, or wherever the application is deployed. The SDK cannot simply be bundled into a public npm package because SAP is its distribution channel. Even SAP&amp;rsquo;s own &lt;a href=&#34;https://community.sap.com/t5/technology-blog-posts-by-sap/abap-rfc-connectivity-from-btp-node-js-buildpack-and-kyma/ba-p/13573993&#34;&gt;BTP and Kyma example&lt;/a&gt; has to copy the SDK into the buildpack application, rebuild the native module, and configure the library path for runtime.&lt;/p&gt;&#xA;&lt;p&gt;This is all possible. Many projects have done it successfully for years. But it is quite a lot of setup for what starts as: I only want to call one function module.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-short-history-of-rfc-outside-abap&#34;&gt;A short history of RFC outside ABAP&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://support.sap.com/en/product/connectors/nwrfcsdk.html&#34;&gt;SAP NetWeaver RFC SDK&lt;/a&gt; is the native C and C++ foundation for RFC clients and servers. Projects such as &lt;a href=&#34;https://github.com/SAP-archive/PyRFC&#34;&gt;PyRFC&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; made it usable from Python and Node.js, but both remained language bindings around this separately installed SDK.&lt;/p&gt;&#xA;&lt;p&gt;These projects were valuable and gave both ecosystems practical APIs. Their shared problem was the native dependency, followed by the end of maintenance. The last &lt;code&gt;node-rfc&lt;/code&gt; release was published in November 2023, followed by PyRFC 3.3.1 in January 2024. In July 2024 SAP published the same announcement for &lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372&#34;&gt;PyRFC&lt;/a&gt;: changed priorities meant it could no longer maintain the projects. The bindings used an SDK patch no longer supported by SAP, with no planned update. After ownership could not be transferred to new maintainers, as explained in the final updates for &lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329#issuecomment-2541486229&#34;&gt;&lt;code&gt;node-rfc&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372#issuecomment-2541490558&#34;&gt;PyRFC&lt;/a&gt;, both repositories were eventually archived on May 28, 2026. The &lt;code&gt;node-rfc&lt;/code&gt; package on npm is deprecated too.&lt;/p&gt;&#xA;&lt;p&gt;There are forks, but they keep the same basic architecture. You still need the native SDK, platform-specific binaries, and somebody able to follow SDK changes.&lt;/p&gt;&#xA;&lt;p&gt;There is also a newer SAP path for CAP. The public &lt;a href=&#34;https://www.npmjs.com/package/@sap/cds-rfc&#34;&gt;&lt;code&gt;@sap/cds-rfc&lt;/code&gt;&lt;/a&gt; plugin uses &lt;code&gt;@sap-rfc/node-rfc-library&lt;/code&gt; for low-level RFC communication. That connector is not available on the standard npm registry. According to the plugin documentation, it is available only for Linux and Windows, and SAP customers need an S-user, an SAP Build Code license, and credentials for SAP&amp;rsquo;s Repository-Based Shipment Channel. macOS users have to use a container.&lt;/p&gt;&#xA;&lt;p&gt;So the old open-source binding is archived, while the newer supported connector adds an entitlement, a private registry, and platform-specific deployment requirements. I would expect an easier answer from SAP for such a fundamental integration protocol.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-conversation-that-started-open-rfc&#34;&gt;The conversation that started open-rfc&lt;/h2&gt;&#xA;&lt;p&gt;For a long time I was not very concerned about this. Most of my RFC contact is inside ABAP, not outside it. When I had a small Node.js use case, the setup was complicated enough that I simply did not continue. With AI it may be a bit easier to fight through native build errors and deployment files, but the underlying dependencies are still there.&lt;/p&gt;&#xA;&lt;p&gt;Then the topic came up during the evening events at &lt;a href=&#34;https://code-connect.dev/&#34;&gt;Code Connect 2026&lt;/a&gt;. Even SAP employees were annoyed by the current situation. The discussion was more or less: this should be rewritten without those dependencies, and in the world of AI it cannot be that hard.&lt;/p&gt;&#xA;&lt;p&gt;I started an AI coding session the same night.&lt;/p&gt;&#xA;&lt;p&gt;Spoiler: even with AI, it is hard.&lt;/p&gt;&#xA;&lt;p&gt;I have been working on it since that evening, with AI helping across research, implementation, tests, and review. The deeper I went, the clearer it became that writing something that works once is not the hard part. The hard part is proving that it behaves correctly across SAP releases and also in failures.&lt;/p&gt;&#xA;&lt;p&gt;Once you go deeper into RFC, a much larger world opens up. The client first has to log on, understand the function module and its parameters, translate JavaScript values into ABAP values, send and receive sometimes large structures and tables, and keep the connection in a safe state when something fails. Timeouts are especially tricky: the application may not know whether SAP already executed the call. Retrying a write automatically could therefore execute it twice.&lt;/p&gt;&#xA;&lt;p&gt;The good news is that RFC is documented better than I first expected. I used the official &lt;a href=&#34;https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf&#34;&gt;SAP NW RFC SDK 7.50 Programming Guide&lt;/a&gt;, the current SDK Doxygen documentation, the ABAP Keyword Documentation for the &lt;a href=&#34;https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/ABENRFC_PROTOCOL.html&#34;&gt;RFC protocol&lt;/a&gt;, interfaces, restrictions, and session context, plus SAP&amp;rsquo;s Network Interface documentation and relevant SAP Notes. The archived &lt;code&gt;node-rfc&lt;/code&gt; and PyRFC APIs and tests are also important compatibility references.&lt;/p&gt;&#xA;&lt;p&gt;I also used &lt;a href=&#34;https://github.com/OWASP/pysap&#34;&gt;OWASP pysap&lt;/a&gt; and its &lt;a href=&#34;https://pysap.readthedocs.io/en/latest/&#34;&gt;documentation&lt;/a&gt; as a low-level reference for SAP network protocols. pysap, initially designed and developed by Martin Gallo, is a Python and Scapy packet-crafting and protocol-research toolkit, while open-rfc is an application-facing Node.js RFC client. Thank you to Martin and all pysap contributors for making this research available.&lt;/p&gt;&#xA;&lt;p&gt;Most importantly, I do not only test against mocks. Because of &lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;ARC-1&lt;/a&gt;, I already have three ABAP trial systems for SAP NetWeaver 7.50, SAP S/4HANA 2023, and SAP S/4HANA 2025. Development tests run against all three. The formal first-beta support contract is intentionally smaller and qualifies NetWeaver 7.50 and S/4HANA 2023 with the exact packaged artifact.&lt;/p&gt;&#xA;&lt;p&gt;I keep offline protocol, property, fault, resource, and compatibility tests separate from live SAP evidence. The supported &lt;code&gt;node-rfc&lt;/code&gt; facade is exercised against a pinned corpus from the archived project. For a beta release, the same exact tarball must pass as a standalone dependency, as the &lt;code&gt;node-rfc&lt;/code&gt; npm alias, and below unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt;. A green test from some earlier source checkout does not promote a different package.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-the-first-beta-includes&#34;&gt;What the first beta includes&lt;/h2&gt;&#xA;&lt;p&gt;The result is &lt;a href=&#34;https://github.com/marianfoo/open-rfc&#34;&gt;open-rfc&lt;/a&gt;, an SDK-free TypeScript and JavaScript RFC client for Node.js. The current beta is &lt;a href=&#34;https://www.npmjs.com/package/open-rfc&#34;&gt;open-rfc on npm&lt;/a&gt;, licensed under Apache 2.0.&lt;/p&gt;&#xA;&lt;p&gt;The installed package has zero runtime dependencies. It contains portable JavaScript and TypeScript declarations, with no native addon, no SAP NW RFC SDK, no post-install download, and no runtime framework. It supports ESM and CommonJS and the same package is used in three ways:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;directly through the &lt;code&gt;open-rfc&lt;/code&gt; API;&lt;/li&gt;&#xA;&lt;li&gt;as an npm alias for existing &lt;code&gt;node-rfc&lt;/code&gt; client and pool consumers; and&lt;/li&gt;&#xA;&lt;li&gt;as the low-level connector below an unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt; installation.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The first beta focuses on direct application-server connections with password authentication and classic Unicode RFC. It includes metadata lookup and caching, synchronous function calls, common scalar values, exact decimals, date and time values, binary data, STRING and XSTRING, structures, tables, timeouts, cancellation, reset, bounded connection pooling, and representative commit and rollback paths.&lt;/p&gt;&#xA;&lt;p&gt;It also includes &lt;code&gt;Client&lt;/code&gt; and &lt;code&gt;Pool&lt;/code&gt; facades for the common archived &lt;code&gt;node-rfc&lt;/code&gt; API and the modern &lt;code&gt;RFCClient&lt;/code&gt; and &lt;code&gt;RFCConnection&lt;/code&gt; facade expected by SAP&amp;rsquo;s CAP connector. Unsupported security or serializer options fail before business I/O. A timeout, cancellation, malformed response, or uncertain send retires the physical connection, and open-rfc never automatically replays the call.&lt;/p&gt;&#xA;&lt;p&gt;The official 0.2.3 release matrix currently qualifies Ubuntu 24.04 x64 with Node.js 22.14 or newer, or Node.js 24. Because the package is portable JavaScript with no native addon, it is expected to work on other Node.js platforms too. macOS, Windows, and other Linux versions are not official release claims yet, so I especially want users to report what they try there.&lt;/p&gt;&#xA;&lt;p&gt;The 0.x line has no production SLA. Direct classic RFC also has no transport encryption or peer authentication by itself. It belongs on a trusted private network or inside a separately managed protected tunnel, not openly across the internet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;btp-cloud-connector-and-an-arc-1-extension&#34;&gt;BTP, Cloud Connector, and an ARC-1 extension&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;open-rfc&lt;/code&gt; 0.2.3 also makes it possible to call an on-premise SAP system from BTP Cloud Foundry through SAP Cloud Connector. The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/routes/&#34;&gt;documented route&lt;/a&gt; uses the BTP Connectivity service and Cloud Connector to reach the SAP system. I tested the exact published package end to end from Cloud Foundry to SAP S/4HANA 2023. This proves the path works, but it has not yet been tested broadly enough to be part of the release&amp;rsquo;s qualified scope.&lt;/p&gt;&#xA;&lt;p&gt;I added the same setup to the &lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;ARC-1 extension sample&lt;/a&gt;. Its &lt;code&gt;Custom_RfcSystemInfo&lt;/code&gt; tool calls the read-only &lt;code&gt;RFC_SYSTEM_INFO&lt;/code&gt; function, accepts no user input, is off by default, uses a dedicated RFC user, and only returns selected fields. It shows how an ARC-1 extension can add an RFC tool beside ADT and OData without installing the SDK.&lt;/p&gt;&#xA;&lt;p&gt;My tested setup uses a dedicated technical SAP user. Cloud Connector protects the connection between BTP and the company network. Inside the company network, RFC still needs a trusted network, and the technical user should only be allowed to call the exact function modules needed.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-beta-does-not-mean-almost-10&#34;&gt;Why beta does not mean almost 1.0&lt;/h2&gt;&#xA;&lt;p&gt;This first beta is not a release candidate for 1.0. RFC has too many paths for that claim.&lt;/p&gt;&#xA;&lt;p&gt;The default target for 1.0 is intentionally smaller: direct application-server RFC with password authentication, the standalone API, the &lt;code&gt;node-rfc&lt;/code&gt; compatibility layer, and unchanged &lt;code&gt;@sap/cds-rfc&lt;/code&gt; through the npm override. Before 1.0, this still needs deeper testing of failures, isolation, large values, transactions, pool contention, repeated runs, and long-running use. It also needs a frozen API and support policy, real adopters, operational readiness, and another independent security and correctness review.&lt;/p&gt;&#xA;&lt;p&gt;Message-server load balancing, SAProuter, WebSocket RFC, and passing individual user identities through Cloud Connector are conditional candidates. They enter 1.0 only if the scope decision includes them and live tests can prove them. Otherwise they remain later work.&lt;/p&gt;&#xA;&lt;p&gt;Other features are later work, not promises for 1.0: registered RFC server mode and ABAP callbacks, tRFC, qRFC, bgRFC, Throughput APIs, SNC, X.509, non-Unicode and MDMP systems, basXML, and complete SAP NW RFC SDK parity.&lt;/p&gt;&#xA;&lt;p&gt;I prefer to make this boundary explicit. A package that accepts every option and silently ignores half of them looks compatible until the day it causes a production problem.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-cap-replacement-i-wanted-from-the-beginning&#34;&gt;The CAP replacement I wanted from the beginning&lt;/h2&gt;&#xA;&lt;p&gt;One especially important goal was a drop-in replacement for &lt;code&gt;@sap-rfc/node-rfc-library&lt;/code&gt; below SAP&amp;rsquo;s &lt;code&gt;@sap/cds-rfc&lt;/code&gt; CAP plugin. I do not want to fork or rebuild the CAP layer. SAP&amp;rsquo;s unchanged package should continue to own RFC imports, destination lookup, Cloud SDK integration, multitenancy, and the CAP lifecycle. open-rfc should replace only the low-level connector.&lt;/p&gt;&#xA;&lt;p&gt;With npm 11, the application can declare a nested override:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;dependencies&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap/cds-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2.2.1&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;open-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;0.2.3&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;overrides&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap/cds-rfc&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;@sap-rfc/node-rfc-library&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;$open-rfc&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your CAP service code stays unchanged. The normal &lt;code&gt;cds import --from rfc&lt;/code&gt; flow stays with &lt;code&gt;@sap/cds-rfc&lt;/code&gt;, and existing &lt;code&gt;cds.connect.to()&lt;/code&gt; calls still go through the SAP plugin. After installation, &lt;code&gt;npm explain @sap-rfc/node-rfc-library&lt;/code&gt; shows whether the override resolved to open-rfc.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/cap/&#34;&gt;dedicated CAP guide&lt;/a&gt; explains the full setup, importer boundary, local credentials, destination boundary, transactions, and shutdown behavior. This should make local development and CI/CD much simpler because the application installs an ordinary npm artifact. There is no SDK archive to copy, no native addon to compile, and no extra SAP npm registry credential for this connector.&lt;/p&gt;&#xA;&lt;p&gt;The qualified beta scope still covers only the direct application-server route with password authentication. An easier installation does not magically qualify every destination and authentication mode, so please read the &lt;a href=&#34;https://marianfoo.github.io/open-rfc/status/&#34;&gt;release status&lt;/a&gt; for the exact version you install.&lt;/p&gt;&#xA;&lt;h2 id=&#34;i-need-your-help&#34;&gt;I need your help&lt;/h2&gt;&#xA;&lt;p&gt;Now comes the most important part. I can build a lot and I am willing to put in the work, but I cannot reproduce every SAP system, function module, network route, value shape, and deployment environment alone.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://marianfoo.github.io/open-rfc/&#34;&gt;documentation&lt;/a&gt; is also part of the project, not a finished manual that users can only consume. It already covers the quick start, standalone and &lt;code&gt;node-rfc&lt;/code&gt; use, CAP, Cloud Connector, configuration, safety, operations, troubleshooting, release status, and the road to 1.0. The sources live in the public &lt;a href=&#34;https://github.com/marianfoo/open-rfc/tree/main/docs_page&#34;&gt;&lt;code&gt;docs_page&lt;/code&gt; folder&lt;/a&gt;. If something is unclear, wrong for your environment, or missing a useful example, please open an issue or improve the page. A clearer explanation or a correction from a real setup can be as valuable as a code change.&lt;/p&gt;&#xA;&lt;p&gt;The public repository now also contains a broad offline test suite, and its documentation links and examples are checked automatically. The &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/CONTRIBUTING.md&#34;&gt;contribution guide&lt;/a&gt; explains how to prepare code and documentation changes safely.&lt;/p&gt;&#xA;&lt;p&gt;Please test the beta with your real use cases, starting with a read-only function on a non-production system. Try the data types your application really uses. Test errors, cancellation, pools, and transactions, not only one successful &lt;code&gt;RFC_PING&lt;/code&gt;. If you find a problem, open an issue with the open-rfc version, Node.js version, operating system, SAP release family, route type, function interface shape, and the smallest safe reproducer you can create.&lt;/p&gt;&#xA;&lt;p&gt;Do not attach credentials, endpoints, system identities, business data, returned tables, raw traces, or packet captures to a public issue. If the problem needs private information, first describe the redacted shape so we can find a safe way to reproduce it.&lt;/p&gt;&#xA;&lt;p&gt;If you prefer to throw tokens at the problem, do that as well. The repository ships a prompt written for exactly this situation: &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/.claude/commands/report-rfc-failure.md&#34;&gt;report an RFC failure&lt;/a&gt;. You do not need a checkout of the repository to use it. It has an agent first check whether your case is inside the documented boundary, then reduce the failure to a synthetic reproducer that keeps the real ABAP types and invents everything else, and finally fill in every field of the bug template. The redaction rules are part of the prompt, so an agent following it will not put your system identities, credentials, or business data into a public issue.&lt;/p&gt;&#xA;&lt;p&gt;If you want to go further than reporting, the &lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/.claude/commands/deep-bug.md&#34;&gt;deep bug workflow&lt;/a&gt; picks up from there: root cause before any change, then a test that was seen to fail without the fix, then a focused pull request. External contributors will not have my private live-system evidence, so give the agent only a synthetic reproducer and public information. I can run the necessary SAP checks after the issue is reduced safely.&lt;/p&gt;&#xA;&lt;p&gt;And of course, contributions are welcome. This project should not become one person&amp;rsquo;s private RFC implementation with a public repository around it. I want it to become truly open, understandable, testable, and useful for different scenarios.&lt;/p&gt;&#xA;&lt;p&gt;That takes more work. I am ready to do it, but I need your systems, your use cases, your bug reports, and your review.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s make this work.&lt;/p&gt;&#xA;&lt;h2 id=&#34;references-and-links&#34;&gt;References and links&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc&#34;&gt;open-rfc repository&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/&#34;&gt;open-rfc documentation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/cap/&#34;&gt;open-rfc CAP integration guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/status/&#34;&gt;open-rfc release status&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc/blob/main/CONTRIBUTING.md&#34;&gt;open-rfc contribution guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://marianfoo.github.io/open-rfc/roadmap/&#34;&gt;open-rfc road to 1.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/marianfoo/open-rfc/releases/tag/v0.2.3&#34;&gt;open-rfc 0.2.3 release&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;ARC-1 extension sample&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://support.sap.com/en/product/connectors/nwrfcsdk.html&#34;&gt;SAP NetWeaver RFC SDK&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://support.sap.com/content/dam/support/en_us/library/ssp/products/connectors/nwrfcsdk/NW_RFC_750_ProgrammingGuide.pdf&#34;&gt;SAP NW RFC SDK 7.50 Programming Guide&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/node-rfc&#34;&gt;Archived SAP node-rfc project&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/node-rfc/issues/329&#34;&gt;node-rfc maintenance announcement&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/PyRFC&#34;&gt;Archived SAP PyRFC project&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/SAP-archive/PyRFC/issues/372&#34;&gt;PyRFC maintenance announcement&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/OWASP/pysap&#34;&gt;OWASP pysap&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.npmjs.com/package/@sap/cds-rfc&#34;&gt;SAP CAP RFC plugin&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://code-connect.dev/&#34;&gt;Code Connect 2026&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>ARC-1 1.0: One Deployment, Multiple SAP Systems</title>
      <link>https://blog.zeis.de/posts/2026-08-03-arc-1-update/</link>
      <pubDate>Mon, 03 Aug 2026 07:00:00 +0200</pubDate>
      <guid>https://blog.zeis.de/posts/2026-08-03-arc-1-update/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/releases/tag/v1.0.0&#34;&gt;ARC-1 1.0 is here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;When I published the &lt;a href=&#34;https://blog.zeis.de/posts/2026-04-27-arc-1/&#34;&gt;first ARC-1 post&lt;/a&gt;, I explained why I built an MCP server for ABAP development and why security has to be part of it from the beginning. This post is not another deep dive into every tool. The &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt; already do that.&lt;/p&gt;&#xA;&lt;p&gt;For version 1.0 I want to focus on what really changed: ARC-1 became more stable, it can serve multiple SAP systems from one BTP deployment, the BTP and security setup is much better documented, and the project is no longer only one repository.&lt;/p&gt;&#xA;&lt;p&gt;Most of this happened because people used ARC-1, asked difficult questions, reported problems, opened issues and pull requests, sent me private messages, and invited me to Teams meetings about their plans and experiences. That is the most important part of this release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-version-10-means&#34;&gt;What version 1.0 means&lt;/h2&gt;&#xA;&lt;p&gt;Version 1.0 does not mean ARC-1 is finished. It means there is now a stable base.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 now has a clearer scope. It is a controlled connection between AI assistants and ABAP systems. It can run locally for one developer or centrally on SAP BTP for a team. It supports classic on-premise ABAP, S/4HANA, BTP ABAP Environment, and S/4HANA Cloud Public Edition.&lt;/p&gt;&#xA;&lt;p&gt;It stays read-only by default. Changing code, reading business data, running SQL, changing transports, or using Git has to be enabled separately. This makes it possible to start small and only allow more when a team is ready.&lt;/p&gt;&#xA;&lt;p&gt;The new multi-system mode is still marked as experimental because parts of the setup and behavior may change. But it can already be used and is running in productive BTP environments, not only in my own setup.&lt;/p&gt;&#xA;&lt;p&gt;That is what 1.0 means to me: not that every possible ADT feature exists, but that the foundation, operating model, and safety boundaries are clear enough to build on.&lt;/p&gt;&#xA;&lt;h2 id=&#34;this-release-was-built-through-feedback&#34;&gt;This release was built through feedback&lt;/h2&gt;&#xA;&lt;p&gt;The first versions were mostly based on my own systems and workflows. That changed quickly. SAP systems, releases, login setups, networks, and transport processes are too different to understand from one landscape.&lt;/p&gt;&#xA;&lt;p&gt;Public issues and pull requests brought real system shapes into the project. A few examples:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/97&#34;&gt;Wouter Lemaire added the first BTP Cloud Foundry deployment&lt;/a&gt;, followed it with &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/107&#34;&gt;deployment and write fixes&lt;/a&gt;, and continued to give very practical guidance on BTP, destinations, and how a shared ARC-1 service should be operated.&lt;/li&gt;&#xA;&lt;li&gt;Sami Bouguerra contributed &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/170&#34;&gt;NetWeaver 7.50 probe fixtures and cookie handling&lt;/a&gt;, then fixed cases where activation looked successful although SAP had not activated the object in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/179&#34;&gt;PR #179&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Clément Ringot made BTP login more reliable across deployments in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/212&#34;&gt;PR #212&lt;/a&gt; and &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/267&#34;&gt;PR #267&lt;/a&gt;, and fixed Cloud Connector response handling in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/440&#34;&gt;PR #440&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/524&#34;&gt;Geert-Jan Klaps added S/4HANA Public Cloud support&lt;/a&gt;. I do not have access to such a system myself, so his contribution made it possible to add and verify this landscape in ARC-1.&lt;/li&gt;&#xA;&lt;li&gt;Community pull requests added table queries, newer package creation, safer transport handling, better BTP login, configurable server names, and cookie rotation. You can find them in the repository&amp;rsquo;s &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pulls?q=is%3Apr+is%3Amerged&#34;&gt;pull requests&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Not every useful contribution was code. Issues such as &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues/531&#34;&gt;multi-system connections&lt;/a&gt; and &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues/377&#34;&gt;how to structure several systems on BTP&lt;/a&gt; changed the architecture and documentation. Reports from older systems improved release detection and fallbacks. Questions from Basis and security people forced me to make assumptions explicit instead of hiding them in configuration examples.&lt;/p&gt;&#xA;&lt;p&gt;I also received many private messages and joined Teams meetings about ARC-1. Some people explained how their teams want to deploy it on BTP and walked me through their real landscape and requirements. Others pointed out security issues, unclear documentation, or places where the safety boundaries were not strong enough. These conversations directly improved login, error handling, audit information, package restrictions, user identity, and the deployment guides.&lt;/p&gt;&#xA;&lt;p&gt;Thank you especially to everyone who reported a security concern privately. That is exactly how an open-source security process should work. ARC-1 now has a public &lt;a href=&#34;https://github.com/arc-mcp/arc-1/blob/main/SECURITY.md&#34;&gt;security policy&lt;/a&gt;, private vulnerability reporting, automated checks for code and dependencies, container checks, and an inventory of the software included in each release.&lt;/p&gt;&#xA;&lt;h2 id=&#34;one-arc-1-instance-multiple-sap-systems&#34;&gt;One ARC-1 instance, multiple SAP systems&lt;/h2&gt;&#xA;&lt;p&gt;The biggest addition in version 1.0 is the experimental &lt;a href=&#34;https://docs.arc-1-mcp.com/multi-target-setup/&#34;&gt;multi-system mode&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;You can now deploy one ARC-1 application on SAP BTP Cloud Foundry and attach several SAP systems or clients through destinations in the same subaccount. An administrator chooses which destinations belong to ARC-1. It does not connect to every destination by accident.&lt;/p&gt;&#xA;&lt;p&gt;This is already used in productive BTP environments. Experimental in this case means that configuration and behavior can still change as more landscapes use it. It does not mean that the feature is only a local proof of concept or that people cannot use it today.&lt;/p&gt;&#xA;&lt;p&gt;Each system and client gets its own MCP address. There is also an optional combined connection for tasks that really need several systems. A system-specific address is the safer choice for normal work because the conversation is already connected to the correct target.&lt;/p&gt;&#xA;&lt;p&gt;Keeping the real user identity is the recommended setup. A user logs in on BTP and the identity is forwarded to SAP. SAP then checks the same authorizations the person already has. A shared technical user is possible for special cases, but it gives less clear responsibility and needs more care.&lt;/p&gt;&#xA;&lt;p&gt;This feature started with community requests and Wouter&amp;rsquo;s &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/543&#34;&gt;first multi-backend implementation&lt;/a&gt;. His code and BTP experience gave the final design important groundwork. The production-focused design, security review, tests, and administrator documentation then landed in &lt;a href=&#34;https://github.com/arc-mcp/arc-1/pull/579&#34;&gt;PR #579&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-biggest-changes-in-short&#34;&gt;The biggest changes in short&lt;/h2&gt;&#xA;&lt;p&gt;I do not want to explain every feature here. These are the areas that matter most for 1.0:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Safer operation:&lt;/strong&gt; ARC-1 starts read-only. Higher-risk actions are separate choices, SAP still decides what the user may do, and teams get limits and audit information for shared use.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;More SAP compatibility:&lt;/strong&gt; testing and fixes now cover older NetWeaver systems, several S/4HANA releases, ABAP Platform 2025, BTP ABAP Environment, and S/4HANA Cloud Public Edition.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Better BTP guidance:&lt;/strong&gt; the &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-overview/&#34;&gt;BTP overview&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-cloud-foundry-deployment/&#34;&gt;Cloud Foundry guide&lt;/a&gt;, &lt;a href=&#34;https://docs.arc-1-mcp.com/principal-propagation-setup/&#34;&gt;user identity guide&lt;/a&gt;, updates, rollback, destinations, roles, and multi-system operation are now documented as one path.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Reusable workflows:&lt;/strong&gt; 22 included skills cover RAP, tests, migrations, Clean Core analysis, transport reviews, system documentation, and more.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;More checks before a release:&lt;/strong&gt; ARC-1 runs automated tests against the code and real SAP systems, checks dependencies and containers, and publishes information about what is included in a release.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;For the exact technical list, including fixes for transport state, ABAP object types, BTP token exchange, tracing, and protocol compatibility, use the &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt; and the &lt;a href=&#34;https://github.com/arc-mcp/arc-1/releases/tag/v1.0.0&#34;&gt;GitHub v1.0.0 release&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;skills-for-complete-sap-tasks&#34;&gt;Skills for complete SAP tasks&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 1.0 includes 22 skills. A skill is a reusable workflow for an AI assistant. It gives the assistant a tested way to approach a larger task instead of relying on one large prompt.&lt;/p&gt;&#xA;&lt;p&gt;The included skills cover creating RAP services and logic, ABAP and CDS tests, analytical models and queries, explaining and documenting existing code, finding slow SQL, Clean Core and S/4HANA migration work, unused-code checks, transport overviews and reviews, and modernizing legacy UI5 applications. There are also helpers to understand a system first, create a local ABAP mirror, and review an AI session. The &lt;a href=&#34;https://docs.arc-1-mcp.com/skills/&#34;&gt;full skills catalog&lt;/a&gt; has the complete list and installation options for Claude Code, GitHub Copilot, Cursor, Codex, and other assistants.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/arc-mcp/arc-1/tree/main/skills/migrate-segw-to-rap&#34;&gt;SEGW-to-RAP skill&lt;/a&gt; deserves a special mention. It reads an existing SEGW OData V2 service, including its model and custom code, and guides the move to a modern RAP V4 service. My &lt;a href=&#34;https://blog.zeis.de/posts/2026-05-11-segw-to-rap/&#34;&gt;SEGW-to-RAP post&lt;/a&gt; got one of the biggest responses of the whole ARC-1 series. That was a clear signal that many teams are not only interested in creating something new. They also need practical help to modernize the large amount of existing SAP applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;extensions-for-your-own-sap-apis&#34;&gt;Extensions for your own SAP APIs&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 will never include every custom API or company-specific endpoint. Forking the complete server for one internal tool is also difficult to maintain.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://docs.arc-1-mcp.com/extensions/&#34;&gt;extension framework&lt;/a&gt; gives you another option. It lets you add your own tools and reuse the SAP connection, safety checks, and audit path of the ARC-1 instance. This can be useful for an internal service or any API that is not part of the standard ARC-1 tools.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;extension sample&lt;/a&gt; shows a simple configuration option and a code option. It also shows the safety limits. An extension cannot give itself more access than the ARC-1 instance already has, and changes still need to be enabled explicitly. Code extensions run inside ARC-1, so they should be reviewed like any other dependency.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/ClementRingot/LISA&#34;&gt;LISA&lt;/a&gt; is already a useful real example. It provides SAP translation tools as a standalone MCP server and as an ARC-1 extension. This proves both paths can work: build a separate focused service, or attach the capability to an existing ARC-1 deployment.&lt;/p&gt;&#xA;&lt;h2 id=&#34;reusing-the-btp-authentication-stack&#34;&gt;Reusing the BTP authentication stack&lt;/h2&gt;&#xA;&lt;p&gt;Login and keeping the correct SAP user were some of the hardest parts of ARC-1. Other SAP MCP servers need the same foundations, so this code is now available as the separate &lt;a href=&#34;https://www.npmjs.com/package/@arc-mcp/xsuaa-auth&#34;&gt;@arc-mcp/xsuaa-auth&lt;/a&gt; package.&lt;/p&gt;&#xA;&lt;p&gt;It provides the core pieces for deploying an MCP server to SAP BTP Cloud Foundry: login through XSUAA, reuse of BTP destinations, connections through Cloud Connector, and forwarding the real user to SAP. A project can reuse this setup and keep its own focused SAP API instead of copying the full ARC-1 server.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 uses the package itself. &lt;a href=&#34;https://github.com/ClementRingot/LISA&#34;&gt;LISA&lt;/a&gt; and &lt;a href=&#34;https://github.com/ClementRingot/ROSA&#34;&gt;ROSA&lt;/a&gt; use it as well, and &lt;a href=&#34;https://github.com/dnic-dev/bw-modeling-mcp&#34;&gt;BW Modeling MCP&lt;/a&gt; now uses it for its central SAP BTP Cloud Foundry setup. For me this is an important part of the release. The value of ARC-1 is not only the number of ABAP tools. The deployment and security principles can now help other projects too.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-new-home-for-the-project&#34;&gt;A new home for the project&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 moved from my personal GitHub account to the &lt;a href=&#34;https://github.com/arc-mcp&#34;&gt;arc-mcp organization&lt;/a&gt;. There is also a dedicated &lt;a href=&#34;https://arc-1-mcp.com/&#34;&gt;landing page&lt;/a&gt;, full documentation at &lt;a href=&#34;https://docs.arc-1-mcp.com/&#34;&gt;docs.arc-1-mcp.com&lt;/a&gt;, and a &lt;a href=&#34;https://live-arc-1.arc-1-mcp.com/&#34;&gt;live replay demo&lt;/a&gt; that works without a SAP system, credentials, or a live LLM.&lt;/p&gt;&#xA;&lt;p&gt;The organization now contains the main product, reusable components, experiments, and demos that are still active:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1&#34;&gt;arc-1&lt;/a&gt;: the main SAP ADT MCP server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/xsuaa-auth&#34;&gt;xsuaa-auth&lt;/a&gt;: reusable XSUAA, OAuth, and BTP Principal Propagation.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-extension-sample&#34;&gt;arc-1-extension-sample&lt;/a&gt;: examples for custom ARC-1 tools.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/adt-ls&#34;&gt;adt-ls&lt;/a&gt;: a TypeScript SDK for SAP&amp;rsquo;s headless ADT language server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-lsp&#34;&gt;arc-1-lsp&lt;/a&gt;: an experimental MCP server built on that language-server path.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc1-adt-abap-mcp-ext&#34;&gt;arc1-adt-abap-mcp-ext&lt;/a&gt;: an Eclipse extension adding read-only tools to SAP&amp;rsquo;s ADT MCP server.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-abap-cicd-review&#34;&gt;arc-1-abap-cicd-review&lt;/a&gt;: an ABAP review workflow with GitHub Actions, abaplint, AI review, and live SAP checks.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc1-transport-review-poc&#34;&gt;arc1-transport-review-poc&lt;/a&gt;: a proof of concept for reviewing SAP transports through pull requests.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-segw-to-rap&#34;&gt;arc-1-segw-to-rap&lt;/a&gt;: the SEGW, RAP, UI5, and Fiori elements modernization demo.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/arc-1-mcp.com&#34;&gt;arc-1-mcp.com&lt;/a&gt;: the source of the landing page.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/arc-mcp/live-arc-1&#34;&gt;live-arc-1&lt;/a&gt;: the source of the interactive replay demo.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Not every repository has the same maturity. ARC-1 is the stable core. Some projects are reusable packages, some are beta, and some are intentionally proofs of concept. Keeping them separate makes this more visible and lets each idea develop without making the main server bigger.&lt;/p&gt;&#xA;&lt;h2 id=&#34;where-to-start&#34;&gt;Where to start&lt;/h2&gt;&#xA;&lt;p&gt;If you are new to ARC-1, use the &lt;a href=&#34;https://docs.arc-1-mcp.com/quickstart/&#34;&gt;quickstart&lt;/a&gt; with a development or sandbox system and start read-only. The live demo is useful if you first want to see how the workflows and tool calls look.&lt;/p&gt;&#xA;&lt;p&gt;For a team deployment, start with the &lt;a href=&#34;https://docs.arc-1-mcp.com/btp-overview/&#34;&gt;BTP overview&lt;/a&gt;. Decide the topology, identity model, destinations, and responsibilities before enabling more capabilities. Principal Propagation should be the normal choice when SAP needs to see the human user.&lt;/p&gt;&#xA;&lt;p&gt;If you already run ARC-1, follow the &lt;a href=&#34;https://docs.arc-1-mcp.com/updating/&#34;&gt;update guide&lt;/a&gt; and review the &lt;a href=&#34;https://docs.arc-1-mcp.com/release-notes/&#34;&gt;release notes&lt;/a&gt;. For production, pin a version instead of using &lt;code&gt;latest&lt;/code&gt;, keep the first acceptance test read-only, and review the current SAP API policy and your own agreements before enabling data preview or free SQL.&lt;/p&gt;&#xA;&lt;h2 id=&#34;arc-1-saps-mcp-server-and-the-api-policy&#34;&gt;ARC-1, SAP&amp;rsquo;s MCP server, and the API policy&lt;/h2&gt;&#xA;&lt;p&gt;SAP now also provides its own ABAP MCP server as part of the ABAP Development Tools. I do not see this as an either-or decision.&lt;/p&gt;&#xA;&lt;p&gt;SAP&amp;rsquo;s server is the natural choice for a developer who works inside VS Code or Eclipse and wants to reuse the existing IDE connection. ARC-1 has a different focus. It can run as a shared service on BTP, serve different AI clients and team workflows, cover classic and modern ABAP use cases, and give administrators one place for access rules and audit information. Many teams can use both.&lt;/p&gt;&#xA;&lt;p&gt;The detailed &lt;a href=&#34;https://docs.arc-1-mcp.com/arc-1-vs-sap-abap-mcp-server/&#34;&gt;ARC-1 and SAP ABAP MCP Server comparison&lt;/a&gt; explains where each option fits, where each one is stronger, and where each one has limits. It is meant as a decision guide, not as a sales comparison.&lt;/p&gt;&#xA;&lt;p&gt;More important for a wider rollout is the &lt;a href=&#34;https://docs.arc-1-mcp.com/sap-api-policy-and-architecture/&#34;&gt;SAP API Policy and architecture guide&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;ARC-1 uses the ADT interfaces behind SAP&amp;rsquo;s ABAP development tools. These interfaces have been used by SAP and third-party developer tools for many years, but the ADT web endpoints are not listed as published APIs in the SAP Business Accelerator Hub. SAP&amp;rsquo;s current API policy also talks directly about access by generative AI and autonomous agents.&lt;/p&gt;&#xA;&lt;p&gt;At the same time, SAP has published an architecture for third-party MCP servers. ARC-1 is close to this architecture, especially when it runs on SAP BTP Cloud Foundry with BTP login, destinations, Cloud Connector, the real SAP user identity, traffic limits, and audit logging. This is a good technical fit, but it is not by itself a legal approval for every customer and every landscape.&lt;/p&gt;&#xA;&lt;p&gt;My recommendation is simple. Start in development or test, start read-only, and keep SAP authorizations in control. Before a broader or production rollout, ask your SAP contact whether your agreement allows third-party tools to use the ADT endpoints in this way. The policy and SAP guidance can change, so check the current documents instead of relying only on this post.&lt;/p&gt;&#xA;&lt;h2 id=&#34;thank-you&#34;&gt;Thank you&lt;/h2&gt;&#xA;&lt;p&gt;ARC-1 1.0 is not the result of one large feature. It is the result of many small reports, tests, discussions, fixes, and reviews.&lt;/p&gt;&#xA;&lt;p&gt;Thank you to everyone who opened an issue or pull request, tested another SAP release, shared a BTP setup, challenged a security decision, built an extension, tried the documentation, or sent a private message. Even when I could not implement an idea directly, the feedback helped make the project clearer and safer.&lt;/p&gt;&#xA;&lt;p&gt;Feedback is still greatly appreciated. Open an &lt;a href=&#34;https://github.com/arc-mcp/arc-1/issues&#34;&gt;issue&lt;/a&gt; when something does not work or the documentation is unclear. Send a pull request when you have a fix or improvement. A private message is also welcome, especially when you want to share details about a real landscape or raise a security concern.&lt;/p&gt;&#xA;&lt;p&gt;Version 1.0 is a milestone, not the end. Now there is a stable base, public documentation, a clearer security process, and a growing set of reusable projects around it.&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
