MCP server for searching SAP Notes/KB articles using SAP Passport authentication and Playwright automation
The server defines 2 tools with clear, functional descriptions and documented input schemas. Tool names follow verb-noun convention (search, fetch). Descriptions are action-oriented and adequate (99-171 chars). Input schemas exist with type definitions and parameter descriptions. However, output schemas are not explicitly documented in the visible source, parameter constraints could be more rigorous (no enums despite constrained options), and error handling lacks recovery guidance. The server is above average but has gaps preventing higher scores.
Fetch full details of a specific SAP Note by ID. Returns the complete note content including symptom, solution, and correction instructions with detailed formatting and structure.
Search SAP Notes by keyword. Returns a list of matching SAP Notes with metadata including ID, title, summary, component, release date, and direct link to the note.
Output schemas not documented in tool definitions. LLMs cannot predict returned fields (e.g., does fetch return 'symptom', 'solution', 'corrections', or something else?). Agents will hallucinate field access patterns.
Language parameter accepts a string with only a default value (EN) documented. No enum constraint (e.g., 'EN'|'DE'|'FR'), no min/max length, no validation. Agents could pass invalid language codes like 'xx' or '123'.
Error handling present (errorReporting=true) but error messages visible in code are generic (no recovery guidance, no actionable next steps). Example: authentication failures or API timeouts lack 'Try X' guidance for the LLM.
Search result limit not specified in schema or description. 'search' may return 1 result or 1000 results, no pagination guidance (limit, offset, cursor) visible in tool definition. Could blow context window.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
'includeCorrections' boolean parameter on fetch() lacks clarity. Description says 'Include correction instruction details (default: false)' but does not explain what 'correction instructions' are or when an LLM should set it to true. LLMs will guess.