MCP serverMCP servertypeExposes tools to a coding agent over MCP.See every one →What this type is →independently maintainedindependently maintainedoriginPublished by one person or a small company outside SAP. Says nothing about quality; the readings say that.See every one →

sap-note-search-mcp

An MCP server over SAP Notes and Knowledge Base articles: search finds a note, fetch returns it whole, and a scripted browser does the S-user login the content sits behind.

SAP Notes are where the answer to a specific failure is written down, and they are behind me.sap.com rather than a public API, so an agent cannot reach them. This logs in as the caller's own S-user, by username and password or an SAP Passport certificate, and caches the session cookies with a configurable lifetime. fetch returns a note's text together with the metadata it carries beside it: validity ranges, support packages and patches, references, prerequisites, side effects, correction summaries and attachments, and fetch(includeCorrections=true) adds the ABAP correction instructions through a further OData call. Two tools, no writing anywhere. It is published to npm on its own as sap-note-search-mcp, developed in the sap-mcp-servers monorepo beside sap-api-hub-mcp and sap-roadmap-mcp, and it is the successor to the archived marianfoo/mcp-sap-notes repository.

Facts

Latestv0.3.10ReleasedLast pushLicenceApache-2.0

Where it sits

Lives in
Provides
DocumentationBTPABAPDocumentationcapabilityFinding the answer in what has already been written, and writing it where it has not — first-party documentation made searchable by something other than a person scrolling it, including by an agent, and a document of custom code produced from the code itself.
Serves

Who is behind it

Marian ZeisMarian ZeisPersonMaintains this
In the atlas: maintains 35, contributes to 86, wrote 25
@marianfoo
maintaineradam0thmanPersonContributes to this
In the atlas: maintains 1, contributes to 3
@adam0thman
David SlugaPersonContributes to this
In the atlas: contributes to 4
@army113
2 contributors

Before choosing this

Conditions

PracticalFunctional boundary

It needs an S-user with SAP Support Portal access, so there is nothing to search without a support contract behind the login. The maintainer states it uses private SAP APIs behind authentication, asks the reader to check whether that use breaches SAP's terms of service, and disclaims both liability and any guarantee that it keeps working. MFA is handled only by typing the code into a visible browser, so a headless deployment cannot complete a login that demands one.

What it declares

Every artifact

Type
MCP server
Origin
Independently maintained
Runtime
Node.js

As an MCP server

Type declarations
declared
Runs as
local process
Transport
stdioHTTP
Authentication
user and passwordX.509
Tools
2

Connections2

Install

npm add sap-note-search-mcp

Derived from the package name. No recipe recorded; the README has the configuration.

Your machinemarianfoo/sap-mcp-servers — README, Running a server, checked 2026-09-18: “Each server is a stdio/HTTP MCP server.”stdio or HTTPYour MCP client, actorYour MCP clientsap-note-search-mcp, modulesap-note-search-mcp
SAPnot SAP's, or the project's ownstated in the document

README

quoted from marianfoo/sap-mcp-servers under Apache-2.0, read
marianfoo/sap-mcp-servers/packages/notes/README.mdOn GitHub

SAP Note Search MCP Server

Part of the sap-mcp-servers monorepo (npm workspaces) — published to npm independently as sap-note-search-mcp with build provenance.

MCP server for searching and retrieving SAP Notes / KB articles with full metadata extraction

License: Apache 2.0 Node.js TypeScript

Add to Werkbank

Caution

This MCP Server uses private APIs from SAP behind authentication. Please check whether the use violates SAP's ToS. The author assumes no liability for this. Because of this i do not guarantee that the server will always work.

This Model Context Protocol (MCP) server gives AI coding assistants (Cursor, Claude Desktop, VS Code, etc.) direct access to SAP Notes and Knowledge Base articles. It authenticates with SAP via username/password or SAP Passport certificate and uses Playwright browser automation to retrieve actual note content.

Live Preview in Cursor

Cursor MCP Server Preview

Features

  • Search and fetch — find notes and retrieve full content with metadata over stdio or HTTP
  • Attachment downloads — fetch_attachment saves referenced files locally over stdio, without overwriting existing files
  • Enriched metadata — validity ranges, support packages and patches, references, prerequisites, side effects, correction summaries, attachments
  • Optional correction details — fetch(includeCorrections=true) retrieves detailed ABAP correction instructions (affected objects, per-correction prerequisites) via an additional OData call
  • Two auth methods — username/password (recommended) or SAP Passport certificate
  • MFA/2FA support — manual code entry in headful mode
  • Smart caching — session cookies cached locally (configurable TTL)
  • Docker support — pre-built image with all Playwright dependencies

Quick Start

Prerequisites
  • Node.js 22.12+ — Download here
  • SAP S-User — with access to SAP Support Portal / me.sap.com
  • An MCP client — Cursor, Claude Desktop, VS Code with Copilot, etc.
Installation

For a one-click Claude Desktop installation, download sap-notes.mcpb from the matching SAP Notes GitHub release and open it.

The Add to Werkbank button uses the same MCPB. Werkbank downloads the bundle, reads its manifest, and shows the command and configuration form before installing it.

For other MCP clients, run the npm package directly with npx:

{
  "mcpServers": {
    "sap-notes": {
      "command": "npx",
      "args": ["-y", "sap-note-search-mcp"]
    }
  }
}

To develop from source, clone the sap-mcp-servers monorepo and build from its root:

git clone https://github.com/marianfoo/sap-mcp-servers.git
cd sap-mcp-servers
npm install          # installs all workspaces + links @marianfoo/sap-mcp-auth locally
npm run build        # builds auth first, then the servers → this one lands in packages/notes/dist

Build just this package with npm run build -w sap-note-search-mcp (after auth is built).


Authentication

The server supports two methods. Choose whichever is easier for you.

The simplest approach — no certificate management required.

SAP_USERNAME=your.email@company.com
SAP_PASSWORD="your_sap_password"

When using a .env file, quote any value containing #; dotenv otherwise treats # and everything after it as a comment. For example, use SAP_PASSWORD="My#Pass". The same applies to PFX_PASSPHRASE.

Or pass credentials directly in your MCP client config (no .env file needed):

{
  "mcpServers": {
    "sap-notes": {
      "command": "npx",
      "args": ["-y", "sap-note-search-mcp"],
      "env": {
        "SAP_USERNAME": "your.email@company.com",
        "SAP_PASSWORD": "your_sap_password"
      }
    }
  }
}
Option 2: SAP Passport Certificate

Uses a .pfx client certificate for TLS-level authentication.

  1. Download your certificate from SAP Passport
  2. Place the .pfx file in certs/:
    mkdir -p certs
    cp ~/Downloads/sap.pfx certs/
  3. Configure:
    PFX_PATH=./certs/sap.pfx
    PFX_PASSPHRASE="your_certificate_passphrase"
Auto Mode (Default)

When AUTH_METHOD=auto (the default), the server picks the first available method:

  1. Password — if SAP_USERNAME + SAP_PASSWORD are set
  2. Certificate — if PFX_PATH + PFX_PASSPHRASE are set
  3. Error — if neither is configured

You can force a method with AUTH_METHOD=password or AUTH_METHOD=certificate.

MFA / 2FA

If your SAP account uses two-factor authentication:

HEADFUL=true       # show the browser window so you can enter the code
MFA_TIMEOUT=120000 # wait up to 2 minutes for code entry (ms)

The server detects TOTP, passcode, and verification pages automatically and waits for you to complete the challenge.

Token Caching

After successful login, session cookies are cached to token-cache.json (default TTL: 12 hours, configurable via MAX_JWT_AGE_H). Delete the file to force re-authentication.


Connect to your MCP Client

Cursor / Claude Desktop

Add to your MCP settings (settings.json or claude_desktop_config.json):

With username/password (recommended):

{
  "mcpServers": {
    "sap-notes": {
      "command": "npx",
      "args": ["-y", "sap-note-search-mcp"],
      "env": {
        "SAP_USERNAME": "your.email@company.com",
        "SAP_PASSWORD": "your_sap_password"
      }
    }
  }
}

With certificate (via .env file):

{
  "mcpServers": {
    "sap-notes": {
      "command": "npx",
      "args": ["-y", "sap-note-search-mcp"],
      "env": {
        "ENV_FILE": "/full/path/to/.env"
      }
    }
  }
}

Note: When using ENV_FILE, replace the path with the absolute path to your .env file.

After adding the config, restart your MCP client. The tools will appear in the AI assistant.


Available Tools

Search SAP Notes by keyword, error code, component, or note number.

ParameterTypeRequiredDefaultDescription
qstringYes—Search query (2-200 chars)
langEN | DENoENLanguage

Examples:

Search for SAP Notes about "OData gateway error 415"
Find SAP Note 2744792
fetch

Retrieve full content and enriched metadata for a specific SAP Note.

ParameterTypeRequiredDefaultDescription
idstringYes—Note ID (alphanumeric)
langEN | DENoENLanguage
includeCorrectionsbooleanNofalseFetch detailed ABAP correction instructions via OData

Returns (beyond the basic content):

  • Software component validity ranges
  • Support packages and patches
  • Cross-references (to/from other notes)
  • Prerequisites, side effects
  • Correction instruction summaries and counts
  • Manual activity instructions
  • Attachments and SNOTE download URL
  • (with includeCorrections=true) Detailed correction entries with affected ABAP objects (TADIR) and per-correction prerequisites

If SAP responds with HTTP 429, fetch returns an error; pause before retrying. Generic HTML and fallback JSON without note text are not returned as successful notes.

Examples:

Get the full content of SAP Note 2744792
Show me note 3481252 with correction details
fetch_attachment (stdio)

Pass an attachment URL returned by fetch to download that file locally. Optional outputDir selects an existing directory; otherwise the tool creates a private temporary directory. Optional filename overrides the server-provided name. Existing files are never overwritten.

The result contains the saved path, filename, content type, byte count and SHA-256. Downloads are limited to 100 MiB, 60 seconds per download attempt and five checked redirects. If SAP Documents requires a separate sign-in, the tool uses your configured SAP credentials once, then retries the download. Later calls reuse the document cookies, including after restart. The working Notes session is preserved. If SAP rejects the sign-in, correct the credentials or use interactive login and restart the server before retrying. Set HEADFUL=true if your account requires interactive sign-in or MFA. See the tool reference for details.


Docker

A Dockerfile is included with all Playwright/Chromium dependencies pre-installed:

docker build -t mcp-sap-notes .
docker run -it \
  -e SAP_USERNAME="your.email@company.com" \
  -e SAP_PASSWORD="your_sap_password" \
  mcp-sap-notes

Configuration Reference

Environment Variables
VariableRequiredDefaultDescription
SAP_USERNAME*—SAP login username (email)
SAP_PASSWORD*—SAP login password
PFX_PATH*—Path to SAP Passport .pfx certificate
PFX_PASSPHRASE*—Certificate passphrase
AUTH_METHODNoautoauto, password, or certificate
MFA_TIMEOUTNo1200002FA wait timeout in ms
MAX_JWT_AGE_HNo12Token cache lifetime in hours
HEADFULNofalseShow browser window (for debugging / 2FA)
LOG_LEVELNoinfodebug, info, warn, error
HTTP_PORTNo3123Port for HTTP MCP transport
ACCESS_TOKENNo—Bearer token for HTTP server auth

* At least one auth pair is required: either SAP_USERNAME + SAP_PASSWORD or PFX_PATH + PFX_PASSPHRASE.

HTTP Server

An HTTP/SSE transport is also available for remote or multi-client setups:

npm run serve:http          # start HTTP server
npm run serve:http:debug    # with debug logging

Protect with a bearer token:

ACCESS_TOKEN=your-secret-token

Clients must then include Authorization: Bearer your-secret-token in every request.


Testing & Development

npm run test:auth         # test authentication flow
npm run test:api          # test SAP Notes API
npm run test:mcp          # test full MCP server
npm run test              # run all tests

Debug mode:

HEADFUL=true LOG_LEVEL=debug npm run test:auth

Project Structure

mcp-sap-notes/
├── src/
│   ├── mcp-server.ts          # Main MCP server (stdio transport)
│   ├── http-mcp-server.ts     # HTTP/SSE MCP transport
│   ├── auth.ts                # SAP authentication (password + certificate)
│   ├── sap-notes-api.ts       # SAP Notes API client + OData corrections
│   ├── html-utils.ts          # HTML-to-text parsing
│   ├── schemas/
│   │   └── sap-notes.ts       # Zod schemas + tool descriptions
│   ├── types.ts               # TypeScript definitions
│   └── logger.ts              # Logging
├── docs/
│   ├── tools.md               # Detailed tool reference
│   ├── authentication.md      # Auth deep dive
│   ├── architecture.md        # Architecture overview
│   └── setup.md               # Setup guide
├── test/                      # Test scripts
├── dist/                      # Compiled JS
├── certs/                     # Certificate directory
├── Dockerfile                 # Docker image
├── env.example                # Environment template
└── README.md

Troubleshooting

Authentication
SymptomFix
"Could not find username field"SAP login page may have changed — try HEADFUL=true to inspect
"Authentication timed out"Check connectivity; increase MFA_TIMEOUT if using 2FA
"Certificate load failed"Verify .pfx path + passphrase; check expiry
Browser
SymptomFix
"Browser launch failed"Run npx playwright install chromium
Hangs during authUse HEADFUL=true to see what's happening
MCP Client
SymptomFix
Tools not showingRestart client; verify absolute path in config
"MCP server failed to start"Check npm run build succeeded; check deps with npm install

See docs/authentication.md for detailed troubleshooting.


Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Commit your changes: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

License

Apache 2.0

Apache-2.0, read

History

Latest

v0.3.10

Features 1, Fixes 5

Notes
Features
  • notes: add fetch_attachment tool to download SAP Note attachments (#48) (b7f5655)
Bug Fixes
  • auth: recover malformed SSO state and validate Notes sessions (#87) (565145c)
  • deps: refresh SDK and vulnerable dependency resolutions (#83) (e20284b)
  • notes: escape Unicode line breaks in SSE responses (#86) (6ca692a)
  • notes: honour HEADFUL=true over stdio and on Windows (#82) (267b0f4)
  • shared SSO state path on Windows, real notes version, keep SSO state on session expiry (#81) (b9ffee1)
  1. v0.3.9

    Fixes 1

    Notes
    Bug Fixes
    • notes: reject rate limits and content-free fallbacks (#67) (407ef6c)
  2. v0.3.8

    Fixes 1

    Notes
    Bug Fixes
    • notes: advertise JSON Schema 2020-12 (#56) (4ccdab8)
  3. v0.3.7

    Fixes 1

    Notes
    Bug Fixes
    • notes: add required CorrIns paging and TCI package URL (#45) (1a840e7)
  4. v0.3.6

    Fixes 1

    Notes
    Bug Fixes
    • notes: extract and harden Detail enriched metadata (#43) (a97b25c)
  5. v0.3.5

    Fixes 1

    Notes
    Bug Fixes
    • notes: add installable MCPB distribution (#40) (2368546)
  6. v0.3.4

    Fixes 1

    Notes
    Bug Fixes
    • notes: restore authenticated backend access (#32) (ff8e497)
  7. v0.3.3

    Fixes 1

    Notes
    Bug Fixes
    • auth: update authentication flow to use session management and improve cookie handling (8fcbdb6)
  8. v0.3.2

    Docs 1

    Notes
    Documentation
    • notes: note npm build provenance (603dc5f)
315downloads per week, npm
Weekly downloads for sap-note-search-mcp26 complete calendar weeks from 2026-04-20 to 2026-10-18; the latest total is 315.20 Apr – 26 Apr: 027 Apr – 3 May: 04 May – 10 May: 011 May – 17 May: 018 May – 24 May: 025 May – 31 May: 2761 Jun – 7 Jun: 458 Jun – 14 Jun: 2415 Jun – 21 Jun: 1622 Jun – 28 Jun: 3729 Jun – 5 Jul: 336 Jul – 12 Jul: 1613 Jul – 19 Jul: 1120 Jul – 26 Jul: 2727 Jul – 2 Aug: 1753 Aug – 9 Aug: 33410 Aug – 16 Aug: 21617 Aug – 23 Aug: 5724 Aug – 30 Aug: 8731 Aug – 6 Sept: 417 Sept – 13 Sept: 14514 Sept – 20 Sept: 14021 Sept – 27 Sept: 37128 Sept – 4 Oct: 2425 Oct – 11 Oct: 26912 Oct – 18 Oct: 315
Documentation
  1. abap2UI5 PlaygroundIn-browser ABAP editor beside the abap2UI5 app it buildsfrom ABAP
  2. @cap-js/mcp-serverMCP server for CAP development: model and docs searchfrom CAP
  3. mcp-sap-docsMCP server searching seventeen SAP documentation repositoriesfrom CAP
  4. sap-api-hub-mcpRead-only MCP server over the SAP Business Accelerator Hubfrom BTP/BAIP
  5. sap-roadmap-mcpMCP server over SAP Road Map Explorerfrom BTP/BAIP
  6. ui5-lib-diffHosted app listing changes between SAPUI5 or OpenUI5 versionsfrom UI5
  7. abap-docNode.js command writing PDF documentation for an ABAP packagefrom ABAP
  8. sap-ai-docs-mcpMCP server with semantic search over SAP AI Core documentationfrom BTP/BAIP
  9. sap-btp-docs-mcpMCP server with semantic search over SAP BTP documentationfrom BTP/BAIP
  10. @sap-ux/fiori-docs-embeddingsFiori documentation indexed as embeddingsfrom CAP
  11. Clean-Core.ioHosted workspace redrawing custom ABAP as BPMN and grading itfrom ABAP
  12. abapdocs-code-scannerReads the abapDoc comments of a class or interface's public methods and type definitions and returns their text at runtime.from ABAP
  13. @ui5/webcomponents-mcp-serverMCP server answering questions on UI5 Web Componentsfrom UI5
  14. vscode-ui5-api-referenceVS Code side bar view of the SAPUI5 and OpenUI5 API referencefrom UI5

Details

Sources4
GitHub APIdiscovered here, marianfoochecked
npm registry, sap-note-search-mcpversion, releases, installschecked
github.com/git+https://github.com/marianfoo/sap-mcp-servers.gittree, pushes, contributors, CIchecked
packages/notes/README.mdquoted, and what the entry declareschecked

Sources are graph entities: the same page may back several entries, and an unreachable source flags every row that rests on it.

Compatibility and provenance
runtimesnode
latestv0.3.10
first release
releases and cadence10, ~4d median
discovered viaGitHub API · marianfoo
first seen in the atlas
ecosystem and domainbtp, ai-and-agents
Contributors2

From the repository’s contributor list, .

History in the atlas2
  1. The decline recorded for candidate:marianfoo/mcp-sap-notes on 2026-09-10 named this as the successor and as an open gap: "SAP Notes search is a real gap in the corpus and the thing that fills it has to be found some other way." Entered from the monorepo package rather than the archived repository, and from the package's own README.
  2. First seen.
For your agent
Ref
artifact:marianfoo-sap-note-search-mcp
JSON
/artifacts/marianfoo-sap-note-search-mcp.json
MCP
Connecting an agent