SAP Note Search MCP Server
The SAP Note Search MCP Server enables AI assistants to search and retrieve SAP Notes/Knowledge Base articles directly from SAP's Support Portal.
Search SAP Notes (
sap_note_search): Find relevant notes by keyword, error code, transaction code, component, or note number — returns a ranked list with metadata (ID, title, summary, component, release date, URL)Fetch Full Note Details (
sap_note_get): Retrieve complete content and enriched metadata for a specific note, including problem descriptions, root cause analysis, step-by-step solutions, affected releases, support packages, references, prerequisites, side effects, correction summaries, manual activity instructions, and attachmentsABAP Correction Instructions: Optionally fetch detailed ABAP correction details (affected objects, per-correction prerequisites) via OData using
includeCorrections=trueFlexible Authentication: Username/password or SAP Passport certificate (.pfx), with MFA/2FA support via headful browser mode
Smart Session Caching: Caches session cookies locally (
token-cache.json) to minimize re-authentication, with configurable TTL (default 12 hours)Multi-language Support: Search and retrieve notes in English (EN) or German (DE)
HTTP/SSE Transport: Run as an HTTP server for remote or multi-client access, with optional bearer token protection
Docker Support: Pre-built Docker image with all Playwright/Chromium dependencies included
MCP Client Integration: Works with Cursor, Claude Desktop, VS Code with Copilot, and other Model Context Protocol clients
Utilizes certificate-based authentication to securely access SAP systems, handling complex authentication flows for retrieving SAP Notes content.
Provides direct access to SAP Notes and Knowledge Base articles using SAP Passport certificate authentication, enabling searching for specific notes by ID or keywords and retrieving their full content and metadata.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SAP Note Search MCP ServerFind SAP Note 2744792"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SAP Note Search MCP Server
This repository is being archived. Active development has moved to marianfoo/sap-mcp-servers, where this server now lives in packages/notes. Please open new issues and pull requests there.
MCP server for searching and retrieving SAP Notes / KB articles with full metadata extraction
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

Related MCP server: BelugaMCP
Features
Two MCP tools —
search(find notes) andfetch(retrieve full content + metadata)Enriched metadata — validity ranges, support packages, 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 callTwo 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 18+ — 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
git clone https://github.com/marianfoo/sap-mcp-servers
cd sap-mcp-servers/packages/notes
npm install
npm run buildAuthentication
The server supports two methods. Choose whichever is easier for you.
Option 1: Username / Password (Recommended)
The simplest approach — no certificate management required.
SAP_USERNAME=your.email@company.com
SAP_PASSWORD=your_sap_passwordOr pass credentials directly in your MCP client config (no .env file needed):
{
"mcpServers": {
"sap-notes": {
"command": "node",
"args": ["/path/to/mcp-sap-notes/dist/mcp-server.js"],
"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.
Download your certificate from SAP Passport
Place the
.pfxfile incerts/:mkdir -p certs cp ~/Downloads/sap.pfx certs/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:
Password — if
SAP_USERNAME+SAP_PASSWORDare setCertificate — if
PFX_PATH+PFX_PASSPHRASEare setError — 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": "node",
"args": ["/full/path/to/mcp-sap-notes/dist/mcp-server.js"],
"env": {
"SAP_USERNAME": "your.email@company.com",
"SAP_PASSWORD": "your_sap_password"
}
}
}
}With certificate (via .env file):
{
"mcpServers": {
"sap-notes": {
"command": "node",
"args": ["/full/path/to/mcp-sap-notes/dist/mcp-server.js"]
}
}
}Note: Replace the path with your actual absolute path. On Windows use
C:\\Users\\you\\..., on macOS/Linux use/Users/you/....
After adding the config, restart your MCP client. The tools will appear in the AI assistant.
Available Tools
search
Search SAP Notes by keyword, error code, component, or note number.
Parameter | Type | Required | Default | Description |
| string | Yes | — | Search query (2-200 chars) |
|
| No |
| Language |
Examples:
Search for SAP Notes about "OData gateway error 415"
Find SAP Note 2744792fetch
Retrieve full content and enriched metadata for a specific SAP Note.
Parameter | Type | Required | Default | Description |
| string | Yes | — | Note ID (alphanumeric) |
|
| No |
| Language |
| boolean | No |
| Fetch 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
Examples:
Get the full content of SAP Note 2744792
Show me note 3481252 with correction detailsDocker
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-notesConfiguration Reference
Environment Variables
Variable | Required | Default | Description |
| * | — | SAP login username (email) |
| * | — | SAP login password |
| * | — | Path to SAP Passport |
| * | — | Certificate passphrase |
| No |
|
|
| No |
| 2FA wait timeout in ms |
| No |
| Token cache lifetime in hours |
| No |
| Show browser window (for debugging / 2FA) |
| No |
|
|
| No |
| Port for HTTP MCP transport |
| No | — | 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 loggingProtect with a bearer token:
ACCESS_TOKEN=your-secret-tokenClients 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 testsDebug mode:
HEADFUL=true LOG_LEVEL=debug npm run test:authProject 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.mdTroubleshooting
Authentication
Symptom | Fix |
"Could not find username field" | SAP login page may have changed — try |
"Authentication timed out" | Check connectivity; increase |
"Certificate load failed" | Verify |
Browser
Symptom | Fix |
"Browser launch failed" | Run |
Hangs during auth | Use |
MCP Client
Symptom | Fix |
Tools not showing | Restart client; verify absolute path in config |
"MCP server failed to start" | Check |
See docs/authentication.md for detailed troubleshooting.
Contributing
Fork the repository
Create a feature branch:
git checkout -b feature/amazing-featureCommit your changes:
git commit -m 'Add amazing feature'Push to the branch:
git push origin feature/amazing-featureOpen a Pull Request
License
Available Tools
2 toolssap_note_getGet SAP Note DetailsA
Fetch complete content and metadata for a specific SAP Note by ID. Returns full HTML content, solution details, and all metadata.
SAP Notes contain: • Detailed problem description • Step-by-step solution instructions • Root cause analysis • Affected releases/versions • Related notes and references • Corrections and patches • Implementation guides
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ USE WHEN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • You have a Note ID from sap_note_search results • User asks for details about a specific note (e.g., "get details for note 2744792") • You need full solution steps, not just the summary • User wants to see the complete note content • You're following the search → get workflow pattern
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DO NOT USE WHEN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • You don't have a specific Note ID (use sap_note_search first) • User hasn't asked for detailed note content (summaries may suffice) • Note ID is invalid (contains spaces or special characters) • You're just browsing/searching (use sap_note_search instead)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ PARAMETER REQUIREMENTS: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Note ID Format: • Typically alphanumeric characters only • No spaces, no prefixes • Valid examples: "2744792", "438342", "3089413", "123ABC" • Invalid examples: "Note 2744792", "SAP Note 2744792", ""
If user input includes text, extract the ID only: "Note 2744792" → "2744792" "SAP Note 438342" → "438342"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ WORKFLOW PATTERN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Typical usage flow:
Search for relevant notes: sap_note_search(q="OData 415 error")
Review search results, identify relevant note IDs: Results: [{id: "2744792", ...}, {id: "438342", ...}]
Fetch full content for top 2-3 relevant notes: sap_note_get(id="2744792") sap_note_get(id="438342")
Synthesize solution from full note content
Do NOT fetch all notes - only get details for the most relevant 2-3.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ERROR HANDLING: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Common errors and solutions:
• "Note ID must contain only alphanumeric characters" → Validate ID format before calling → Extract alphanumeric ID only from user input
• "Note not found" → Note ID doesn't exist or is invalid → Try searching again with different terms
• "Access denied" → Some notes require special S-user permissions → Inform user to access directly on SAP Support Portal
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BEST PRACTICES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Always validate Note ID format (alphanumeric) before calling
Only fetch notes that are clearly relevant from search results
Limit to 2-3 note fetches per user query
Parse and summarize the HTML content field for users
Include the note URL in your response
Extract key sections: Symptom, Solution, Affected Releases
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | SAP Note ID: Typically 6-8 digits, but may include letters or vary in length. Valid examples: • "2744792" (7 digits) • "438342" (6 digits) • "12345678" (8 digits) • "123ABC" (mixed alphanumeric) Invalid examples: • "Note 2744792" (contains text prefix - extract ID only) • "" (empty) If user input includes text (e.g., "Note 2744792" or "SAP Note 2744792"), extract only the ID portion before calling this tool. | |
| lang | No | Language code for note content. • EN (English) - Default, recommended for most cases • DE (German) - Use if note exists in German and user requests it Note: Not all notes are available in both languages. | EN |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | SAP Note ID (6-8 digits) that was fetched |
| url | Yes | Direct URL to view the note on SAP Support Portal. Share this link with users so they can access the official source. |
| title | Yes | Full note title describing the issue, error, or topic |
| content | Yes | Full HTML content of the SAP Note including all sections: Typical sections in note content: • Symptom - Description of the problem/error • Reason and Prerequisites - Root cause analysis • Solution - Detailed step-by-step instructions to resolve the issue • Affected Releases - Which SAP versions are impacted • Related Notes - Links to other relevant notes • Additional Information - Extra context, warnings, or tips Important: This is raw HTML content. You should: 1. Parse the HTML to extract key sections 2. Summarize the Symptom and Solution for the user 3. Keep technical details but make them readable 4. Preserve any code snippets, configuration steps, or warnings 5. If content is very long (>5000 chars), focus on Symptom and Solution sections Do not return raw HTML to the user - extract and format the relevant information. |
| summary | Yes | Executive summary of the note content (high-level overview of the problem and solution) |
| category | Yes | Note category/type indicating the nature of the note: • "Correction" - Bug fixes, error corrections • "Consulting" - Implementation guidance, best practices • "Performance" - Performance optimization tips • "Security" - Security patches, vulnerability fixes • "Master Data" - Data migration, master data issues • etc. null if category is not specified. |
| language | Yes | Language of the note content (EN or DE) |
| priority | Yes | Note priority level indicating urgency: • "Very High" - Critical issues, security vulnerabilities • "High" - Important fixes, significant bugs • "Medium" - Standard corrections and improvements • "Low" - Minor issues, cosmetic fixes • "Recommendation" - Best practices, optimization tips null if priority is not assigned. |
| component | Yes | SAP component code this note relates to (e.g., 'CA-UI5-CTR' for UI5 controls, 'MM-IM' for Inventory Management). Format: [Area]-[Module]-[Submodule] null if not specified. |
| releaseDate | Yes | Date when note was published or last updated (ISO 8601 format: YYYY-MM-DD or full timestamp) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly describes behavioral traits: it explains the tool's role in a workflow (search → get pattern), provides error handling details (e.g., common errors like 'Note not found' or 'Access denied' with solutions), and includes best practices (e.g., limit fetches to 2-3 notes, validate ID format). This goes beyond basic functionality to cover operational context and constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (e.g., USE WHEN, DO NOT USE WHEN, PARAMETER REQUIREMENTS), making it easy to navigate. However, it is lengthy due to extensive details like error handling and best practices. While every section adds value, it could be more concise by integrating some points (e.g., merging parameter examples with schema info). Overall, it's front-loaded with key purpose but includes necessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (fetching detailed SAP Notes) and the presence of an output schema (which handles return values), the description is highly complete. It covers purpose, usage guidelines, parameter semantics, workflow patterns, error handling, and best practices. With no annotations, it compensates by providing all necessary context for the agent to use the tool effectively, including sibling tool relationships and operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds significant value beyond the schema: it provides a 'PARAMETER REQUIREMENTS' section with detailed examples of valid and invalid Note IDs, instructions for extracting IDs from user input, and practical guidance on usage. While the schema covers the technical details, the description enhances understanding with real-world context and preprocessing steps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Fetch complete content and metadata for a specific SAP Note by ID.' It specifies the verb ('fetch'), resource ('SAP Note'), and distinguishes from its sibling sap_note_search by emphasizing detailed content retrieval versus searching. The description explicitly lists what the note contains, reinforcing the comprehensive nature of the fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance with dedicated 'USE WHEN' and 'DO NOT USE WHEN' sections. It clearly states when to use this tool (e.g., after search results, for detailed content) and when not to (e.g., without a Note ID, for browsing). It explicitly names the alternative tool (sap_note_search) and outlines a workflow pattern, ensuring the agent understands the context and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sap_note_searchSearch SAP NotesA
Search SAP Knowledge Base (SAP Notes) for troubleshooting articles, bug fixes, patches, corrections, and known issues. Returns a ranked list of matching notes with metadata.
SAP Notes are official support articles that document: • Known bugs and their fixes • Patches and corrections for SAP software • Troubleshooting guides for specific errors • Performance optimization tips • Security vulnerabilities and patches • Missing or incorrect functionality
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ USE WHEN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • User mentions "error", "issue", "bug", "problem", "not working" • User asks about "fixes", "patches", "corrections" • User reports unexpected behavior or incorrect functionality • User mentions specific error codes (e.g., "error 415", "dump ABAP_EXCEPTION") • User asks "why isn't this working?" or "how to fix?" • User references a specific Note ID (e.g., "Note 2744792")
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ DO NOT USE WHEN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • User asks "how to configure" or "how to set up" → use sap_help_search instead • User wants implementation guides or best practices → use sap_help_search instead • User asks about product features or capabilities → use sap_help_search instead • User wants training materials or tutorials → use sap_community_search instead • User asks general "what is" questions → use sap_help_search instead
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ QUERY CONSTRUCTION: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Effective queries should:
Include specific error codes, messages, or transaction codes
Use SAP terminology (not generic terms)
Be concise (2-6 words typically)
Include product/module context if known
Query Formula: [Error Code/Transaction] + [Module/Component] + [Issue Type]
Examples: ✓ GOOD: • "error 415 CAP action" (specific error + context) • "MM02 material master dump" (transaction + module + issue) • "ABAP CX_SY_ZERODIVIDE" (specific exception class) • "S/4HANA migration performance" (product + issue) • "Note 2744792" (direct note ID lookup)
✗ BAD: • "how to configure SAP" (too vague, use sap_help_search) • "mm22" (transaction only, no issue context) • "I have a problem" (no specifics) • "SAP not working" (too generic)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ WORKFLOW PATTERN: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Call sap_note_search(q="your query") to find relevant notes
Review results array for relevant note IDs
Call sap_note_get(id="note_id") for detailed content of top 2-3 notes
Synthesize answer from fetched note content
Example Chain: sap_note_search(q="OData gateway error") → Returns: [{id: "2744792", title: "OData Gateway 415 Error"}, ...] → Then call: sap_note_get(id="2744792") → Returns: Full note content with solution
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ IMPORTANT NOTES: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ • SAP Notes require S-user credentials to access full content • Note IDs are typically alphanumeric (e.g., "2744792", "438342", "123ABC") • Results are ranked by relevance (best matches first) • Empty results suggest trying sap_help_search instead • Language parameter defaults to English (EN)
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search query: Specific error codes, transaction codes, component names, or issue descriptions. Use concise SAP terminology (2-6 words). Examples of effective queries: • "OData gateway error" - Specific error with context • "MM02 material master dump" - Transaction + module + issue • "ABAP CX_SY_ZERODIVIDE" - Specific exception class • "S/4HANA migration performance" - Product + issue • "Note 2744792" - Direct note ID lookup • "error 415 CAP" - Error code + technology • "Fiori launchpad not loading" - Specific symptom Query construction tips: • Include error codes, transaction codes, or component names • Use SAP terminology (not generic terms) • Be specific but concise (2-6 words typically) • Format: [Error Code/Transaction] + [Module/Component] + [Issue Type] Avoid vague queries like: "SAP problem", "not working", "help" | |
| lang | No | Language code for search results and note content. • EN (English) - Default and recommended, most comprehensive coverage • DE (German) - Available for German-language notes Use EN unless user specifically requests German content. | EN |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | The exact search query that was executed (for reference and debugging) |
| results | Yes | Array of matching SAP Notes, ranked by relevance (best matches first). Typical workflow after getting results: 1. Review the first 2-5 results 2. Identify the most relevant note IDs based on title and summary 3. Use sap_note_get(id) to fetch full content for top 2-3 notes 4. Synthesize the solution from the detailed note content Do NOT fetch all notes - only retrieve details for the most relevant ones. |
| totalResults | Yes | Total number of SAP Notes found matching the search query. • 0 results: Try different search terms or use sap_help_search instead • 1-5 results: High relevance, likely good matches • 6+ results: Multiple relevant notes found Results are ranked by relevance (best matches first). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It thoroughly explains important behavioral aspects: S-user credentials required for full content access, note ID format, ranking methodology, language defaults, and workflow patterns with sibling tools. This provides comprehensive behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and headings, making it easy to navigate. While comprehensive, it maintains focus on relevant information without unnecessary fluff. Some sections could be slightly more concise, but overall the structure enhances readability and information retrieval.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (search functionality with specific domain knowledge requirements), no annotations, rich input schema, and presence of an output schema, the description provides excellent completeness. It covers purpose, usage guidelines, behavioral aspects, parameter guidance, workflow patterns, and important notes, making it highly comprehensive for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds significant value by providing extensive query construction guidance, examples of effective vs. ineffective queries, and specific query formulas. While the schema already documents parameters well, the description's additional context about query strategy and examples enhances understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the SAP Knowledge Base for specific types of content (troubleshooting articles, bug fixes, patches, etc.) and returns ranked results with metadata. It explicitly distinguishes this from sibling tools by explaining what SAP Notes are and what they contain, making the purpose specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'USE WHEN' and 'DO NOT USE WHEN' sections with detailed scenarios and named alternatives (sap_help_search, sap_community_search). It gives clear guidance on when to use this tool versus others, including specific user queries and contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have perfectly distinct purposes: sap_note_search is for finding relevant SAP Notes based on a query, while sap_note_get is for retrieving detailed content for a specific note ID. Their descriptions clearly differentiate them, with no overlap in functionality, making it impossible for an agent to confuse them.
Both tools follow a consistent snake_case naming pattern with the prefix 'sap_note_' followed by a verb (search, get). This uniformity makes the tool set predictable and easy to understand, adhering to a clear convention throughout.
With only two tools, the server feels thin for its domain of SAP Note search and retrieval. While the tools cover the core workflow (search and get), the low count might limit functionality, such as lacking tools for filtering, sorting, or managing notes, which could be expected in a more comprehensive SAP support system.
The tool set effectively covers the essential workflow for accessing SAP Notes: searching for notes and retrieving detailed content. However, there are minor gaps, such as no tools for updating, deleting, or listing all notes, which might be less critical here but could enhance completeness for broader note management scenarios.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Related MCP Servers
- FlicenseBqualityNot gradedmaintenanceAn MCP server that enables AI assistants to interact with SAP systems via the ABAP Development Tools (ADT) REST API. It allows users to read ABAP source code, inspect DDIC objects, and execute SQL queries directly.66
- AlicenseNot gradedqualityCmaintenanceUnified SAP MCP server combining SAP documentation search, ABAP linting, and BTP service exploration into a single extensible ecosystem for AI assistants.MIT

@cap-js/mcp-serverofficial
AlicenseNot gradedqualityBmaintenanceMCP server for SAP CAP that enables AI-assisted development by searching CDS model definitions and CAP documentation.68,060111Apache 2.0- AlicenseAqualityDmaintenanceAn MCP server for searching SAP Help Portal documentation, enabling AI assistants to search, browse, and retrieve SAP documentation programmatically.416MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/marianfoo/mcp-sap-notes'
If you have feedback or need assistance with the MCP directory API, please join our Discord server