{"_id":"@androidosswal/mcp-sap-b1","name":"@androidosswal/mcp-sap-b1","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@androidosswal/mcp-sap-b1","version":"0.1.0","description":"MCP server exposing SAP B1 Service Layer schema (incl. UDFs) and one latest sample row, for AI-assisted custom-app development.","type":"module","author":{"name":"Ronak Jain","email":"ronak.jain@osswalinfo.in"},"license":"MIT","bin":{"mcp-sap-b1":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsx src/index.ts","start":"node dist/index.js","prepublishOnly":"npm run build"},"dependencies":{"@modelcontextprotocol/sdk":"^1.0.4","fast-xml-parser":"^4.5.0","undici":"^6.20.0"},"devDependencies":{"@types/node":"^22.10.0","tsx":"^4.19.2","typescript":"^5.6.3"},"engines":{"node":">=20.0.0"},"keywords":["mcp","model-context-protocol","sap","sap-b1","service-layer","claude"],"_id":"@androidosswal/mcp-sap-b1@0.1.0","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-R83BexWQWYW8u+c6SgI4c8a/Jiq++SVtehNDfiGu1xcd+vObHs+XgVyA1y5mV/7j7DHOFGCVf/pj7QT5EtI0RA==","shasum":"858cc5f03f0ccc0ecb13e81e776930859d067630","tarball":"https://registry.npmjs.org/@androidosswal/mcp-sap-b1/-/mcp-sap-b1-0.1.0.tgz","fileCount":10,"unpackedSize":21583,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIFpWEi36ghGHq2hm2tDD9fFzVtUGCLSvEkzN60chkFC9AiBI0NfUFH5O88cHUe9GgQv2VpNczqFAJ6HY9Yk9zXW6mg=="}]},"_npmUser":{"name":"androidosswal","email":"android05@osswalinfo.com"},"directories":{},"maintainers":[{"name":"androidosswal","email":"android05@osswalinfo.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-sap-b1_0.1.0_1777197721533_0.9416952049094722"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-26T10:02:01.414Z","0.1.0":"2026-04-26T10:02:01.674Z","modified":"2026-04-26T10:02:01.928Z"},"maintainers":[{"name":"androidosswal","email":"android05@osswalinfo.com"}],"description":"MCP server exposing SAP B1 Service Layer schema (incl. UDFs) and one latest sample row, for AI-assisted custom-app development.","keywords":["mcp","model-context-protocol","sap","sap-b1","service-layer","claude"],"author":{"name":"Ronak Jain","email":"ronak.jain@osswalinfo.in"},"license":"MIT","readme":"# @androidosswal/mcp-sap-b1\n\nAn MCP (Model Context Protocol) server that gives AI coding assistants ground-truth knowledge of a **SAP B1 Service Layer** — schema (including custom **UDFs**) and a single latest sample row per entity — so generated code matches the customer's actual setup instead of hallucinating.\n\nRead-only. Lean output. One process per project.\n\n---\n\n## What it exposes\n\nExactly **two** tools:\n\n### `list_endpoints`\n\n```\n{ companyDB: string }\n→ { count, endpoints: string[] }\n```\n\nAll entity-set names from the Service Layer `$metadata`, sorted.\n\n### `describe_endpoint`\n\n```\n{ companyDB: string, entity: string }\n→ {\n    schema: { entitySet, keys, fields: [{ name, type, nullable?, isUDF?, maxLength? }] },\n    latestRow: <one record, latest by CreateDate desc> | null\n  }\n```\n\nThe schema is parsed from `$metadata` and trimmed (no SAP boilerplate). The sample row is fetched live with `$top=1&$orderby=CreateDate desc` (fallback to first key). Binary fields are replaced with `\"<binary stripped>\"`.\n\n---\n\n## Configuration\n\nEnv vars (set in your MCP client config):\n\n| Var | Required | Notes |\n|---|---|---|\n| `SAP_URL` | ✅ | Full base URL incl. `/b1s/v1`, e.g. `https://sap.acme.com:50000/b1s/v1` |\n| `SAP_USERNAME` | ✅ | Service Layer login user |\n| `SAP_PASSWORD` | ✅ | Service Layer password |\n| `SAP_CA_BUNDLE` | ❌ | Path to a PEM CA bundle (for self-signed corporate CAs) |\n| `SAP_INSECURE_SSL` | ❌ | `true` to disable TLS verification entirely. Off by default. |\n\nTLS is **strict by default**. Both insecure modes log a warning at startup when active.\n\n---\n\n## Install / Run\n\n### Via `npx` (recommended)\n\nIn your MCP client config (e.g. `claude_desktop_config.json`):\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"sap-b1-acme\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@androidosswal/mcp-sap-b1\"],\n      \"env\": {\n        \"SAP_URL\": \"https://sap.acme.com:50000/b1s/v1\",\n        \"SAP_USERNAME\": \"manager\",\n        \"SAP_PASSWORD\": \"yourPassword\",\n        \"SAP_INSECURE_SSL\": \"true\"\n      }\n    }\n  }\n}\n```\n\n### Local development\n\n```sh\nnpm install\nnpm run dev   # runs src/index.ts via tsx\n```\n\n### Build\n\n```sh\nnpm run build   # emits dist/\nnpm start       # runs dist/index.js\n```\n\n---\n\n## Typical AI workflow\n\n1. AI calls `list_endpoints({ companyDB: \"SBODEMOUS\" })` once — caches the list mentally.\n2. Per generated piece of code, AI calls `describe_endpoint({ companyDB, entity: \"Orders\" })` to confirm the field set (especially `U_*` UDFs) and see one realistic row.\n3. AI generates code that maps onto the real schema, not a generic SAP B1 template.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-063b00a76dea2262c6b4112903e25326"}