{"ref":"artifact:cap-js-mcp-server","page":"/artifacts/cap-js-mcp-server","json":"/artifacts/cap-js-mcp-server.json","generated":"2026-10-27","drafted_with_ai":true,"entity":{"id":"cap-js-mcp-server","name":"@cap-js/mcp-server","artifact_type":"mcp-server","ecosystem":"cap","domain":"ai-and-agents","secondary_domains":["learning-and-reference"],"origin_ring":"sap-official","use_as":"dependency","description":{"one_line":"SAP's MCP server for CAP development, run as `cds-mcp`: `search_model` searches the project's compiled CDS model, `search_docs` searches the CAP documentation indexed as embeddings on the developer's own machine.","short":"MCP server for CAP development: model and docs search","what_it_solves":"A coding agent asked to change a CAP project answers from what it remembers about CAP and from whichever `.cds` files it happened to open. This server gives it two tools instead: `search_model` fuzzy-matches names in the compiled CDS model, which carries every definition with its annotations and the HTTP endpoints the services are served at, and `search_docs` runs a semantic search over preprocessed CAP documentation held as embeddings on the machine the server runs on. It is registered with the MCP client rather than added to the project: the client starts `npx -y @cap-js/mcp-server`, for which the README shows the configuration in VS Code, Claude Code, OpenAI Codex and opencode, and two rules to paste into `AGENTS.md` are what tell the model to search before it proposes a change. Installed globally it is also a command, so `cds-mcp search_docs` and `cds-mcp search_model` answer the same two questions from a terminal. Both tools read; what the agent then writes is the agent's.","when_not_to_use":"The tools are documented as meant for AI models and not a stable API, so anything built to parse `cds-mcp` output rather than to feed a model can break between releases. Its corpus is the CAP documentation, so Fiori elements, BTP service or ABAP questions are not in what `search_docs` indexes.","to_build_on_it":"Apache-2.0 in a public repository, and the retrieval behind `search_docs` is where most of it sits: cosine similarity fused with BM25 keyword search by weighted reciprocal rank fusion, an embedding model chosen with `--model` or `CDS_MCP_MODEL` (`BAAI/bge-small-en-v1.5` since 0.0.8), and cross-encoder reranking that runs locally when `RERANK_ENABLED` is set. The project takes feature requests and bug reports through GitHub issues."},"links":{"repo":"https://github.com/cap-js/mcp-server","npm":"https://www.npmjs.com/package/@cap-js/mcp-server","docs":"https://cap.cloud.sap/docs/guides/ai/cap-mcp"},"type_properties":{"transports":{"value":["stdio"],"sources":[{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, VS Code mcp.json example","checked":"2026-10-18","quote":"\"type\": \"stdio\""}]}},"provides":[{"capability":"capability:agent-code-access","what_it_does":"An MCP server for AI-assisted development of CAP projects, started by the MCP client as `npx -y @cap-js/mcp-server` and also usable as the `cds-mcp` command: search_model fuzzy-matches names of definitions from the compiled CDS model, which includes annotations and HTTP endpoints, and search_docs searches preprocessed CAP documentation stored as embeddings, on the developer's own machine. Retrieval for search_docs combines semantic cosine similarity with BM25 keyword search through weighted reciprocal rank fusion, with optional local cross-encoder reranking. Model access is restricted to the workspace roots the client advertises, and the tools are documented as not a stable API.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, About This Project","checked":"2026-10-18","quote":"Use it for AI-assisted development of CAP applications (_agentic coding_)."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, Setup","checked":"2026-10-18","quote":"Configure your MCP client (Cline, opencode, Claude Code, GitHub Copilot, etc.) to start the server using the command `npx -y @cap-js/mcp-server` as in the following examples."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, CLI Usage","checked":"2026-10-18","quote":"This will provide the command `cds-mcp`, with which you can invoke the tools directly as follows."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, search_model","checked":"2026-10-18","quote":"This tool performs fuzzy searches against names of definitions from the compiled CDS model (Core Schema Notation)."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, search_model on the compiled model","checked":"2026-10-18","quote":"CDS compiles all your `.cds` files into a unified model representation that includes:"},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, search_docs","checked":"2026-10-18","quote":"This tool uses vector embeddings to locally search through preprocessed CAP documentation, stored as embeddings."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, note on the tools","checked":"2026-10-18","quote":"Tools are meant to be used by AI models and do not constitute a stable API."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.7 hybrid search","checked":"2026-10-18","quote":"Hybrid search for `search_docs`: semantic cosine similarity combined with BM25 keyword search (SQLite FTS5, with a pure-JS fallback when FTS5 is not compiled into `node:sqlite`) via weighted Reciprocal Rank Fusion"},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.7 reranking","checked":"2026-10-18","quote":"Optional local cross-encoder reranking of `search_docs` results, opt-in via `RERANK_ENABLED`"},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.6 workspace roots","checked":"2026-10-18","quote":"Restricted MCP model access to advertised workspace roots, including symlink and resolved-source validation"},{"url":"https://cap.cloud.sap/docs/guides/ai/cap-mcp","title":"Model Context Protocol Adapter | capire","checked":"2026-10-18","quote":"which serves a different purpose, though, that is: AI-assisted development of CAP projects."}]},{"capability":"capability:documentation","what_it_does":"Makes the CAP documentation searchable by an agent, or from a terminal through `cds-mcp search_docs`: the search_docs tool queries preprocessed CAP documentation stored as embeddings and finds pages whose wording differs from the query, all on the local machine. The embeddings are versioned against capire and resolved through a local manifest, and CDS_MCP_OFFLINE uses the locally cached embeddings without checking for updates.","sources":[{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, search_docs","checked":"2026-10-18","quote":"This semantic search approach enables you to find relevant documentation even when your query does not use the exact keywords found in the docs, all locally on your machine."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, CLI Usage example","checked":"2026-10-18","quote":"cds-mcp search_docs \"how to add columns to a select statement in CAP Node.js\" 1"},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/README.md","title":"cap-js/mcp-server — README, Environment Variables","checked":"2026-10-18","quote":"Set to `true` to use locally cached embeddings without checking for updates."},{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.6 capire-versioned embeddings","checked":"2026-10-18","quote":"Capire-versioned embeddings with local manifest resolution"}]}],"requires":[{"ref":"artifact:sap-cds","for":"The CDS runtime version the project's model is compiled with for search_model. When the project provides no local CDS, the @sap/cds runtime version of a globally installed cds-dk is used instead.","requirement":"required","basis":"binding","role":"cds-runtime","sources":[{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.7","checked":"2026-10-18","quote":"Fall back to the globally installed `cds-dk`'s `@sap/cds` runtime version when the project provides no local CDS"}]},{"ref":"artifact:sap-cds-dk","for":"Supplies the @sap/cds runtime version the model is compiled with when the project itself provides none.","requirement":"conditional","condition":"the project provides no local CDS","basis":"binding","role":"cds-runtime-fallback","sources":[{"url":"https://raw.githubusercontent.com/cap-js/mcp-server/main/CHANGELOG.md","title":"cap-js/mcp-server — CHANGELOG, 0.0.7","checked":"2026-10-18","quote":"Fall back to the globally installed `cds-dk`'s `@sap/cds` runtime version when the project provides no local CDS"}]}],"maintainers":["actor:cap-js"],"provenance":{"discovered_via":[{"source":"source:npm"}],"first_seen":"2026-09-20"},"drafted_with_ai":true,"contributors":["actor:chgeo","actor:david-kunz","actor:kevinriedelsheimer","actor:koblers","actor:larsplessing","actor:ole-lilienthal","actor:sevladimirs","actor:sjvans","actor:smahati","actor:swaldmann"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"released this month"},{"label":"Continuity","tier":"good","evidence":"12 contributors, 3 publishers, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"fair","evidence":"nothing declared"},{"label":"Survived majors","tier":"good","evidence":"released before and after @sap/cds 10"},{"label":"Maintainer's CI","tier":"good","evidence":"CI green, 2026-10-23"}],"practice":[{"label":"Tests","tier":"good","evidence":"53 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs site, README 10 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":32460,"unit":"installs/week"},{"value":117,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","latest_version":"0.0.8","majors":{"0.0":{"version":"0.0.1","date":"2025-09-03"}},"license":"Apache-2.0","first_release":"2025-09-03","last_release":"2026-10-14","releases":8,"cadence_days":18,"maintainers":3,"repository":"git+https://github.com/cap-js/mcp-server.git","peer_cds":null,"test_script":true,"types":false,"downloads_weekly":32460,"stars":117,"forks":19,"open_issues":6,"archived":false,"pushed_at":"2026-10-25","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","contributors":12,"tree_truncated":false,"test_files":53,"workflows":3,"other_ci":false,"readme_bytes":10221,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"ci_status":"success","ci_run_at":"2026-10-23","ci_workflow":"CI","ci_event":"push","readme_path":"README.md","readme_sha":"7b6c92f2202bca8a31c4dc2633271421c9d2f2d4","months_since_release":0,"dormant":false,"repository_directory":null,"first_commit":"2025-08-18","last_commit":"2026-10-23","commits":120,"created_at":"2025-04-05T19:05:08Z","dependencies":8,"node_engine":null,"downloads_monthly":194843,"open_prs":4,"repo_read":"2026-10-26"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"0.0.8","date":"2026-10-14","date_source":"heading","heading":"Version 0.0.8 - 2026-10-14","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-008---2026-10-14","sections":[{"kind":"feature","heading":"Added","items":2},{"kind":"change","heading":"Changed","items":2},{"kind":"fix","heading":"Fixed","items":1}],"hash":"f95b67565a7dac42"},{"version":"0.0.7","date":"2026-10-09","date_source":"heading","heading":"Version 0.0.7 - 2026-10-09","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-007---2026-10-09","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":4}],"hash":"86f7fab2425d89e0"},{"version":"0.0.6","date":"2026-09-21","date_source":"heading","heading":"Version 0.0.6 - 2026-09-21","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-006---2026-09-21","sections":[{"kind":"feature","heading":"Added","items":3},{"kind":"change","heading":"Changed","items":4},{"kind":"fix","heading":"Fixed","items":6}],"hash":"9a6d2390d58a08b8"},{"version":"0.0.5","date":"2026-04-27","date_source":"heading","heading":"Version 0.0.5 - 2026-04-27","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-005---2026-04-27","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"e10a4557ec6d3276"},{"version":"0.0.4","date":"2026-03-06","date_source":"heading","heading":"Version 0.0.4 - 2026-03-06","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-004---2026-03-06","sections":[{"kind":"feature","heading":"Added","items":2}],"hash":"f8dd4f00f470f062"},{"version":"0.0.3","date":"2025-09-22","date_source":"heading","heading":"Version 0.0.3 - 2025-09-22","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-003---2025-09-22","sections":[{"kind":"change","heading":"Changed","items":1}],"hash":"2a2a8226086baadb"},{"version":"0.0.2","date":"2025-09-04","date_source":"heading","heading":"Version 0.0.2 - 2025-09-04","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-002---2025-09-04","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"efaa89dc97e5bcde"},{"version":"0.0.1","date":"2025-09-03","date_source":"heading","heading":"Version 0.0.1 - 2025-09-03","url":"https://github.com/cap-js/mcp-server/blob/main/CHANGELOG.md#version-001---2025-09-03","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"955492c926db47de"}],"versions":[{"version":"0.0.8","date":"2026-10-14"},{"version":"0.0.7","date":"2026-10-09"},{"version":"0.0.6","date":"2026-09-21"},{"version":"0.0.5","date":"2026-04-27"},{"version":"0.0.4","date":"2026-03-06"},{"version":"0.0.3","date":"2025-09-22"},{"version":"0.0.2","date":"2025-09-04"},{"version":"0.0.1","date":"2025-09-03"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-js","name":"SAP Cloud Application Programming Model","json":"/actors/cap-js.json"}],"contributors":[{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:david-kunz","name":"Dr. David A. Kunz","json":"/actors/david-kunz.json"},{"ref":"actor:kevinriedelsheimer","name":"Kevin Riedelsheimer","json":"/actors/kevinriedelsheimer.json"},{"ref":"actor:larsplessing","name":"Lars Plessing","json":"/actors/larsplessing.json"},{"ref":"actor:smahati","name":"Mahati Shankar","json":"/actors/smahati.json"},{"ref":"actor:ole-lilienthal","name":"Ole Lilienthal","json":"/actors/ole-lilienthal.json"},{"ref":"actor:koblers","name":"Simon Kobler","json":"/actors/koblers.json"},{"ref":"actor:sjvans","name":"sjvans","json":"/actors/sjvans.json"},{"ref":"actor:swaldmann","name":"Steffen Waldmann","json":"/actors/swaldmann.json"},{"ref":"actor:sevladimirs","name":"Vladimirs Semikins","json":"/actors/sevladimirs.json"}],"explained_by":[{"ref":"content:devtoberfest-2026-ai-assisted-cap-development","name":"AI Assisted CAP Development","json":"/content/devtoberfest-2026-ai-assisted-cap-development.json"},{"ref":"content:introducing-the-mcp-server-for-cap","name":"Boost your CAP Development with AI: Introducing the MCP Server for CAP","json":"/content/introducing-the-mcp-server-for-cap.json"},{"ref":"content:teched-2026-jw262","name":"OData to outcomes—Build AI-enabled SAP Fiori apps using SAP Fiori elements","json":"/content/teched-2026-jw262.json"}],"alternative_to_this":[],"needed_by":[{"ref":"artifact:secondsky-sap-skills","name":"secondsky/sap-skills","json":"/artifacts/secondsky-sap-skills.json","requirement":"conditional","condition":"the sap-cap-capire plugin is used in a client that activates the MCP server its .mcp.json registers; in a client that does not, the README says that file is a connection recipe to configure by hand"}],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}