{"_id":"@dfine-io-gmbh/semantic-mcp","_rev":"7-466292abec194bf364808f27a3bbb031","name":"@dfine-io-gmbh/semantic-mcp","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@dfine-io-gmbh/semantic-mcp","version":"0.1.0","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"author":{"name":"Stefan King","email":"sk@difference.berlin"},"license":"MIT","_id":"@dfine-io-gmbh/semantic-mcp@0.1.0","maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"bin":{"dfine-semantic-mcp":"build/index.js"},"dist":{"shasum":"b80619a38a2ddd1c5a431da46f45671bd3fee423","tarball":"https://registry.npmjs.org/@dfine-io-gmbh/semantic-mcp/-/semantic-mcp-0.1.0.tgz","fileCount":15,"integrity":"sha512-xP8epkU4+6+vLReMi3kW36FTKmjcRFysu1WXO6RaI2T21S7w5AVhKSBIrOtXwfsU5fE2fplGP9b81LDTs2IPOA==","signatures":[{"sig":"MEUCIBaCkK8PM4voMQ4Z6PiKajK0+lY4dfTDnPPHwGJMU5eFAiEAw5fSF9JhEvX9V9KoFxZBQ6yMCVVJlyUezIU97qqsLOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39521},"type":"module","_from":"file:dfine-io-gmbh-semantic-mcp-0.1.0.tgz","engines":{"node":">=20.0.0"},"scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings=0","build":"tsc","check":"tsc && eslint src/ --max-warnings=0 && prettier --check \"src/**/*.ts\"","start":"node build/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","format:check":"prettier --check \"src/**/*.ts\""},"_npmUser":{"name":"stefan-king","email":"stefan.king@dfine.io"},"_resolved":"/private/var/folders/tj/781h0fzd7_z5t58_2sbtvfv40000gn/T/24c5171175c56ffcbce837ec4d7fcd83/dfine-io-gmbh-semantic-mcp-0.1.0.tgz","_integrity":"sha512-xP8epkU4+6+vLReMi3kW36FTKmjcRFysu1WXO6RaI2T21S7w5AVhKSBIrOtXwfsU5fE2fplGP9b81LDTs2IPOA==","deprecated":"please use 0.1.1+","repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Semantic codebase search MCP server — embeds project chunks into a local SQLite vector store and exposes natural-language search over them.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","ignore":"^7.0.0","sqlite-vec":"^0.1.6","better-sqlite3":"^12.6.2","@huggingface/transformers":"^3.4.0","@modelcontextprotocol/sdk":"^1.27.0"},"publishConfig":{"access":"restricted"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.0.2","prettier":"^3.8.1","typescript":"^5.9.3","@types/node":"^25.3.0","@types/better-sqlite3":"^7.6.13","eslint-plugin-sonarjs":"^4.0.0","eslint-plugin-import-x":"^4.16.1","eslint-plugin-security":"^4.0.0","eslint-plugin-no-secrets":"^2.2.2","@typescript-eslint/parser":"^8.56.1","eslint-plugin-unused-imports":"^4.4.1","@typescript-eslint/eslint-plugin":"^8.56.1"},"_npmOperationalInternal":{"tmp":"tmp/semantic-mcp_0.1.0_1778165363401_0.036457238638279765","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@dfine-io-gmbh/semantic-mcp","version":"0.1.1","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"author":{"name":"dfine.io","email":"support@dfine.io"},"license":"MIT","_id":"@dfine-io-gmbh/semantic-mcp@0.1.1","maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"bin":{"dfine-semantic-mcp":"build/index.js"},"dist":{"shasum":"99979206e3e8023cd813b2ba305e9a50862c88b9","tarball":"https://registry.npmjs.org/@dfine-io-gmbh/semantic-mcp/-/semantic-mcp-0.1.1.tgz","fileCount":16,"integrity":"sha512-6E5RXcRWzPuCMbZzXDA8gBKlnFSTq/s07D9fSZJLNMBsMHewf0tSBEcjBvOzWOfg5gxy6+7A2Ukxex/2HYwhcA==","signatures":[{"sig":"MEQCIAVr7SafeeUk25bpqtN3clZWMN5lJt+/U8+p5um83bxXAiBG2sbpEhE7OQC3xMZaSr7f7PNmIW1pjsecIddfDHDR3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":43546},"pnpm":{"peerDependencyRules":{"allowedVersions":{"eslint":"10"}}},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"b7a6b289b6c8ec921550459d59e78cf04a966940","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings=0","build":"tsc","check":"tsc && eslint src/ --max-warnings=0 && prettier --check \"src/**/*.ts\"","start":"node build/index.js","format":"prettier --write \"src/**/*.ts\"","lint:fix":"eslint src/ --fix","format:check":"prettier --check \"src/**/*.ts\"","prepublishOnly":"rm -rf build && tsc && chmod +x build/index.js"},"_npmUser":{"name":"stefan-king","email":"stefan.king@dfine.io"},"repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Semantic codebase search MCP server — embeds project chunks into a local SQLite vector store and exposes natural-language search over them.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","ignore":"^7.0.5","sqlite-vec":"^0.1.9","better-sqlite3":"^12.10.1","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","prettier":"^3.8.4","typescript":"^6.0.3","@types/node":"^25.9.3","@types/better-sqlite3":"^7.6.13","eslint-plugin-sonarjs":"^4.0.3","eslint-plugin-import-x":"^4.16.2","eslint-plugin-security":"^4.0.1","eslint-plugin-no-secrets":"^2.3.3","@typescript-eslint/parser":"^8.61.1","eslint-plugin-unused-imports":"^4.4.1","@typescript-eslint/eslint-plugin":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/semantic-mcp_0.1.1_1781552135753_0.06627788892470798","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@dfine-io-gmbh/semantic-mcp","version":"0.1.2","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"author":{"name":"dfine.io","email":"support@dfine.io"},"license":"MIT","_id":"@dfine-io-gmbh/semantic-mcp@0.1.2","maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"bin":{"dfine-semantic-mcp":"build/index.js"},"dist":{"shasum":"63d3529134b1f6fce19029462a0b03401de30e34","tarball":"https://registry.npmjs.org/@dfine-io-gmbh/semantic-mcp/-/semantic-mcp-0.1.2.tgz","fileCount":16,"integrity":"sha512-oga5yRftZzEEGwpiblHdxwvlYyliip4es4mW5hz0v1eeVIVFoJdADpfl2DSGXhCfjz0+2CcLGFHwYt4rjvMh9A==","signatures":[{"sig":"MEYCIQCc02t6XkWtTPlztOsuJ/0iZ0BmRQxL3fQp/6fqgMQFuQIhAKHfcFw0oTJmTSaP5gB6YaNXXPAwJLq8JN19FSeRXXZf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44896},"type":"module","engines":{"node":">=20.0.0"},"gitHead":"40c88a8a7add8180dd709df08415bd2bc8f75dd3","scripts":{"dev":"tsc --watch","build":"tsc","check":"tsc && pnpm lint:dlint && prettier --check \"src/**/*.ts\"","start":"node build/index.js","format":"prettier --write \"src/**/*.ts\"","lint:dlint":"dlint --format compact","format:check":"prettier --check \"src/**/*.ts\"","prepublishOnly":"rm -rf build tsconfig.tsbuildinfo && tsc && chmod +x build/index.js"},"_npmUser":{"name":"stefan-king","email":"stefan.king@dfine.io"},"repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Semantic codebase search MCP server — embeds project chunks into a local SQLite vector store and exposes natural-language search over them.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","ignore":"^7.0.5","sqlite-vec":"^0.1.9","better-sqlite3":"^12.11.1","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.8.4","typescript":"^6.0.3","@types/node":"^25.9.3","@dfine-io-gmbh/dlint":"^1.2.0","@types/better-sqlite3":"^7.6.13"},"_npmOperationalInternal":{"tmp":"tmp/semantic-mcp_0.1.2_1781826961666_0.6955874721964701","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@dfine-io-gmbh/semantic-mcp","version":"0.1.3","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"author":{"name":"dfine.io","email":"support@dfine.io"},"license":"MIT","_id":"@dfine-io-gmbh/semantic-mcp@0.1.3","maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"bin":{"dfine-semantic-mcp":"build/index.js"},"dist":{"shasum":"277660c416730c726dd4555f54b62ba6fcd77a0b","tarball":"https://registry.npmjs.org/@dfine-io-gmbh/semantic-mcp/-/semantic-mcp-0.1.3.tgz","fileCount":16,"integrity":"sha512-EqyVNKkMB+ibsrKsbYLsEykJPUI+dB+XOKs81hsMx8Nft3k5Ur2V5te4uy98ljlr5AvwvBm1QBXCb0IwwhP5yg==","signatures":[{"sig":"MEUCIQC3OYGh0wBqWggUOQVvsMBK+Pz+N2q+Y8cycvTD+E939gIgQ0Ue/rKGvqamLoA6fSYnkhtSWBhU43RTXuxdqso8FYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51463},"type":"module","engines":{"node":">=22.0.0"},"gitHead":"08f4ba802dfcc10e26c012c7a51de0774583f0d0","scripts":{"dev":"tsc --watch","test":"tsc && node --test \"test/*.test.mjs\"","build":"tsc","check":"tsc && pnpm lint:dlint && prettier --check \"src/**/*.ts\"","start":"node build/index.js","format":"prettier --write \"src/**/*.ts\"","lint:dlint":"dlint --format compact","format:check":"prettier --check \"src/**/*.ts\"","prepublishOnly":"rm -rf build tsconfig.tsbuildinfo && tsc && chmod +x build/index.js"},"_npmUser":{"name":"stefan-king","email":"stefan.king@dfine.io"},"repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Semantic codebase search MCP server — embeds project chunks into a local SQLite vector store and exposes natural-language search over them.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.4.3","ignore":"^7.0.6","sqlite-vec":"^0.1.9","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.2.0","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.6","typescript":"^7.0.2","@types/node":"^24.13.3","@dfine-io-gmbh/dlint":"^1.5.1","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"tmp":"tmp/semantic-mcp_0.1.3_1786704849641_0.8566276745514119","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"_id":"@dfine-io-gmbh/semantic-mcp@0.1.4","bin":{"dfine-semantic-mcp":"build/index.js"},"bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"dist":{"shasum":"228f1e48509c95e5fbd148597148e65a36fd4e56","tarball":"https://registry.npmjs.org/@dfine-io-gmbh/semantic-mcp/-/semantic-mcp-0.1.4.tgz","fileCount":22,"integrity":"sha512-2rKY7FCLbapEvbaPj6Q7FTMTG8EHCWSo9t3gzwCFLOJaPCxLgNr1JS0xBrh6WXh2ciIv8miGAGAZ81g0YupFrg==","signatures":[{"sig":"MEUCIQD48vPmF7I15AjfoI49AgR6il4iFYrLdJAK1gnnyIOxaAIgXwvkz+ANCeX0BHeNZ6DZ/wfv8jdyfSe0CSkORQIs0os=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGlW8bVXBUj0mcbLv+wdvWUgTHqTKWvwwkJH+AXbEa7QAiEAkJrlIG0Ff3gA7T8Vm+g7dm2rdcN9dSoJ/uImftUhKmE="}],"unpackedSize":88317},"name":"@dfine-io-gmbh/semantic-mcp","type":"module","author":{"name":"dfine.io","email":"support@dfine.io"},"engines":{"node":">=22.0.0"},"gitHead":"2dc8b48c7716c5fba97545659eab19a04a3be6eb","license":"MIT","scripts":{"dev":"tsc --watch","test":"tsc && node --test \"test/*.test.mjs\"","build":"tsc","check":"tsc && pnpm lint:dlint && prettier --check \"src/**/*.ts\"","start":"node build/index.js","format":"prettier --write \"src/**/*.ts\"","lint:dlint":"dlint --format compact","format:check":"prettier --check \"src/**/*.ts\"","prepublishOnly":"rm -rf build tsconfig.tsbuildinfo && tsc && chmod +x build/index.js"},"version":"0.1.4","_npmUser":{"name":"stefan-king","email":"stefan.king@dfine.io"},"homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"Semantic code search MCP server: embeds a project into a local SQLite vector store for natural-language queries.","directories":{},"maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.6.5","sqlite-vec":"^0.1.9","better-sqlite3":"^13.0.3","@huggingface/transformers":"^4.3.0","@modelcontextprotocol/server":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"prettier":"^3.9.9","typescript":"^7.0.2","@types/node":"^24.13.3","@dfine-io-gmbh/dlint":"^1.5.5","@types/better-sqlite3":"^9.6.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/semantic-mcp_0.1.4_1791211045759_0.12835021264010438"}}},"time":{"created":"2026-05-07T14:49:23.269Z","modified":"2026-10-05T14:37:26.010Z","0.1.0":"2026-05-07T14:49:23.550Z","0.1.1":"2026-06-15T19:35:35.883Z","0.1.2":"2026-06-18T23:56:01.829Z","0.1.3":"2026-08-14T10:54:09.814Z","0.1.4":"2026-10-05T14:37:25.853Z"},"bugs":{"url":"https://github.com/dfine-io/dfine-semantic-mcp/issues"},"author":{"name":"dfine.io","email":"support@dfine.io"},"license":"MIT","homepage":"https://github.com/dfine-io/dfine-semantic-mcp#readme","keywords":["mcp","model-context-protocol","semantic-search","embeddings","sqlite-vec","transformers","claude-code"],"repository":{"url":"git+https://github.com/dfine-io/dfine-semantic-mcp.git","type":"git"},"description":"Semantic code search MCP server: embeds a project into a local SQLite vector store for natural-language queries.","maintainers":[{"name":"stefan-king","email":"stefan.king@dfine.io"}],"readme":"# @dfine-io-gmbh/semantic-mcp\n\nSemantic code search as an [MCP](https://modelcontextprotocol.io) server. It embeds a project's code into a\nlocal SQLite vector store and answers natural-language questions that a plain `grep` cannot match.\nEverything runs locally once the model is downloaded.\n\n## How it works\n\n- Code is split into chunks and embedded with `jinaai/jina-embeddings-v2-base-code` (768 dimensions)\n  through `@huggingface/transformers`.\n- Vectors live in one local SQLite database per project (`sqlite-vec`).\n- The server speaks MCP over stdio, revision 2026-07-28 and the 2025 revisions, and works with any\n  MCP client, for example Claude Code or Cursor.\n- Each search first re-indexes the files that changed since the last one. If that would take longer\n  than about a minute, clients on MCP 2026-07-28 that support forms ask you first. Other clients\n  re-index without asking.\n- Long runs report progress to clients that ask for it. Claude Code and other clients that reset\n  their timeout on progress keep such a call open until it finishes.\n\n## Requirements\n\n- Node.js 22 or newer\n- Git on the `PATH`. Every indexed root must be inside a git work tree, because files are listed with\n  `git ls-files`.\n- Network access to download the model (about 640 MB) into `~/.dfine-semantic/models` when it is\n  not there yet\n- `better-sqlite3` and `sqlite-vec` ship prebuilt binaries for macOS (arm64, x64), Linux (x64, arm64)\n  and Windows (x64). Other targets build from source and need a C/C++ toolchain.\n\n## Use it with an MCP client\n\nNo install step is needed: `npx` fetches and runs the server. Add it to your MCP client config\n(`.mcp.json` for Claude Code project scope, or `~/.claude.json` for user scope):\n\n```json\n{\n  \"mcpServers\": {\n    \"dfine-semantic\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@dfine-io-gmbh/semantic-mcp\"]\n    }\n  }\n}\n```\n\nThe server sends short usage instructions to the client when it connects.\n\n## Tools\n\n| Name              | Purpose                                                                  |\n| ----------------- | ------------------------------------------------------------------------ |\n| `semantic_search` | Natural-language query, returns ranked `file:line` references            |\n| `index_project`   | Index or refresh a project root, embedding only what changed             |\n| `index_status`    | List indexed projects with file, chunk and size counts                   |\n| `find_duplicates` | List near-identical code for files or line ranges (opt-in, see below)    |\n\n`semantic_search` and `find_duplicates` also return their results as structured data, described by\neach tool's output schema. Its `status` field tells an agent that duplicate search is `off` for a\nproject, which is not the same as finding no duplicates.\n\n`semantic_search` covers `.ts` and `.tsx` by default. Pass `include` (for example `[\".md\", \".vue\"]`)\nto search other indexed file types. `index_project` indexes the allow-listed `extensions` you pass\nand keeps that list, so a later call without `extensions` indexes the same file types.\n\n## Duplicate search (opt-in)\n\n`find_duplicates` is off until you turn it on for a project. It needs a second index of short code\nwindows, and building that index takes time and disk space, so projects that never use it never pay\nfor it.\n\n1. Ask your agent to run `index_project` with `duplicates: true` once for the project. On an\n   indexed repository with about 1,400 TypeScript files, this takes about 45 minutes and 70 MB. A\n   project without a search index yet needs about 35 minutes more.\n2. Ask for duplicates of files or line ranges, for example `src/a.ts:10-40`, and your agent calls\n   `find_duplicates`. Searches and index runs keep the windows of edited files current. When a\n   result says windows are missing, run `index_project` again.\n3. Run `index_project` with `duplicates: false` to switch it off and delete the duplicate index.\n\nEach result pairs a range of your file with a similar range in another file, plus a similarity\nscore. Read both ranges before you merge anything. At the default threshold of 0.88, the tool found\nabout 40% of the real duplicates in a measured TypeScript project; a higher threshold returns fewer\nfalse pairs. It covers `.ts`, `.tsx`, `.js`, `.jsx` and `.mjs` files and skips tests, specs and\n`.d.ts` files. Pass `exclude` with folders such as `src/generated` to leave generated or vendored\ncode out.\n\n## Configuration\n\n| Variable                 | Default             | Purpose                                                     |\n| ------------------------ | ------------------- | ----------------------------------------------------------- |\n| `SEMANTIC_ALLOWED_ROOTS` | `cwd`, `~/.claude`  | Extra absolute roots the server may index (comma-separated) |\n| `SEMANTIC_DATA_DIR`      | `~/.dfine-semantic` | Where the indexes and the model are stored                  |\n\nThe working directory counts as a root unless it is `/` or your home folder. Indexes are keyed by\nproject path and survive upgrades. Run `index_project` with `force: true` for a clean rebuild.\n\n## Upgrading from 0.1.3 or older\n\n- Restart every session that still runs 0.1.3 or older. An old server cannot read an upgraded index.\n- The model downloads once more into its new folder. Copies inside old `npx` caches can be deleted.\n- Files are now split into chunks differently. Searches keep using your existing index, and clients\n  that support forms offer a rebuild. You can also run `index_project`.\n- `find_duplicates` is new and stays off until your agent runs `index_project` with `duplicates: true`.\n\n## Security\n\nSee [SECURITY.md](./SECURITY.md) for the security model and how to report a vulnerability.\n\n## Local development\n\n```bash\npnpm install\npnpm build        # tsc\npnpm lint:dlint   # dlint, the dfine linter on the TypeScript compiler\npnpm check        # tsc, dlint and prettier\npnpm start\n```\n\n## License and support\n\nMIT, see [LICENSE](./LICENSE). Questions or issues: <support@dfine.io> or the\n[issue tracker](https://github.com/dfine-io/dfine-semantic-mcp/issues).\n","readmeFilename":"README.md"}