{"_id":"@agent-code-index/mcp-server","_rev":"11-58c1b71b5ddc18e5c5a343e0a52ecd13","name":"@agent-code-index/mcp-server","dist-tags":{"latest":"0.1.10"},"versions":{"0.1.0":{"name":"@agent-code-index/mcp-server","version":"0.1.0","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.0","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"cf701d64779f5aa1bb457e113b7998c233ac478a","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.0.tgz","fileCount":5,"integrity":"sha512-8QOhE5txhcVGD7AeVaHPifB1pasu3YObVmjbkaH4UPpIdxMVDYHP2gVhOBi8Q3UsajDc4/ML4b8Xo7WHLathAQ==","signatures":[{"sig":"MEUCIQCvcd7gX8ru+sgu3uC16ZtkpGd9GGmZ7l9UjpYAMKEFjwIgIpjjapFX2FaFAtWPvr0Z8yjOTwan1oyB3X9FF48oNbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":340858},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"b56a6bc8d56c82e91bf673dd8ca400b96c257930","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.3","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.0_1774236747286_0.6245248925086668","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agent-code-index/mcp-server","version":"0.1.1","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.1","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"08a9b217f821749445199eea5a2068a0be1b89a3","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.1.tgz","fileCount":5,"integrity":"sha512-gX9wNEbyfW+9rgFND/rELrMKKKDEXUMTWnpClgqfix2yIaO/iweTPNJrHXQ/JvV+FS8a6vVyLxXjPE9u0G4RWQ==","signatures":[{"sig":"MEUCIHdcaiiYCl8/th82WTB1sxsDLvXj/rojlkgNSmj+KamzAiEApCrqzgV44AIsBvR0V9pmvVMhI5yquDJukCZnqWsVoI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":347117},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"8ce9b3fdab9eb52ca06fdb3dfe918651b4a99d56","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.3","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.1_1774250973219_0.7203503647113632","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agent-code-index/mcp-server","version":"0.1.2","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.2","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"57718bbb471027a1fcd4fd687dda72f87f2736d1","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.2.tgz","fileCount":5,"integrity":"sha512-BuKXgQSVMeWYHDeg/+U2LOFALygCx403Ueq6XpNR1tN+JLwMzWRruTba5FWr1IX9loAi5n1S34Jhg2EPYhtQzw==","signatures":[{"sig":"MEUCIFLf+pMhMHw90CUcHEP4LbuJOa85ezKhRtsV2O9hNk+oAiEAuouRwvrmn8cXZ3T3Kg+lRZfXKe8FfwXlTVrJ6YcCQwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":349637},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"d686ae1138b76477f62dbca482c195a4a14ac644","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.2_1774269612663_0.8368271144785533","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agent-code-index/mcp-server","version":"0.1.3","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.3","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"676c11a58dd4deda166f5fb1ba1cd82248248804","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.3.tgz","fileCount":5,"integrity":"sha512-6DijAfV+enP2m+Do3UYWPRcEfckH3cLqqp9WqPqRHyN7C6kxNOAK/8/j40Ybh5UBqassHD7pQqNIrSKzW8c3YQ==","signatures":[{"sig":"MEQCIHtD5v9GvT/yEhDx/SkCqKpLND0OdHjSq5NbU0q3ZgLnAiBk+hBGQGhdeqnSZGsZft6n16zUZjwYIbrWjlOD2J5PVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350933},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"b31a1f112bd278e78e8142a249c28514887c84b8","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.3_1774270081902_0.17373025188470703","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@agent-code-index/mcp-server","version":"0.1.4","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.4","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"9befebc47d3a9ec17efadef3fa6e22370670cd82","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.4.tgz","fileCount":5,"integrity":"sha512-JlS90fsbAtPplMA9Ytk3ss2qeb3e3kSOniMZd+gTVaWb/96V71Lk4xMXsGvqJ9ccZDJ1MWTJLI34l0bx+FPxHw==","signatures":[{"sig":"MEUCIQCpaCCrLTaZJGRuAdiUNzME1Ytp0nFTkvIdXM+mkq9UJwIgB0WhdmY/5G9LF2rGw1tZwKr45vMXEVHfT8IbFt3rzJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351146},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"0b89da3bec6a7eb36bf87b7967593544d0b6a751","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.4_1774272202606_0.4261667371731188","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@agent-code-index/mcp-server","version":"0.1.5","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.5","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"837b328fa984ce54fd54a2dac208d4dbf6f27f1b","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.5.tgz","fileCount":5,"integrity":"sha512-J1+bUhWTsbZ1TluT+6CyLtf0pZmvD6uIFf9lxbXQaPmYuYUZaP+/k9qHMnV+EqBuqLu8ir1Tqo+nCYOong/g4Q==","signatures":[{"sig":"MEQCIBbhy1rJ1p9gVUX+2UMKP+aCFiG0sDg2vzL6Hovas5IEAiBRTdr3LxDKOX2C8ddFFWonNizluuJknhiQBuQKCUKhbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":351546},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"a44a61fd77b46a60f99c791f4d8da165f9ee79eb","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.5_1774273743473_0.7713190030366719","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@agent-code-index/mcp-server","version":"0.1.6","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.6","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"b858247237f15665e3459f21d58620805f07078f","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.6.tgz","fileCount":5,"integrity":"sha512-4IAYAq6mb+gWvJ+ski4Wwn/LOXX3i8MBRyQO64tkNvwvpIYCGT9sB+LKiDkaIlCSnCtS4csPoFo3ds7H7oBzsA==","signatures":[{"sig":"MEUCIQC20Tl+8IVoR9mqJtfkQFf1IUtlX8tdv6IrsFT3qSPUOQIgBSLZ856+i686kvrmYN6HESTU0sKmz8L3vl0trv6AQOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":354650},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"890e847c0042f1738db483c3873edc035fdd5586","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.6_1774277176714_0.9670087295253189","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@agent-code-index/mcp-server","version":"0.1.7","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.7","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"5fd46007bab68a20cc6cd2280b7cbc120100e659","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.7.tgz","fileCount":5,"integrity":"sha512-Z3Dvsibgc30AW5PygSsLYSrsioBr3/XtCuvY6zij/BAClFtb3GTFoVxC/ShBvX36xtQZbsfG76dpfK70NXyPag==","signatures":[{"sig":"MEUCIHZG3WoDs2ahCxhi7pdcEpLDfqHvRtC834fcwxYXSIENAiEAzGE3fhD23IycQHtzNSkwqbP+AW5Lzg3XBdsePYyabbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361378},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"55783df3e56c97c31839744f23e65ae1e6a4fab4","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.7_1774445104781_0.44533086650615483","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@agent-code-index/mcp-server","version":"0.1.8","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.8","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"1821f169864a824aebd980cb4722c42b448ea2e3","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.8.tgz","fileCount":5,"integrity":"sha512-fpNEnrHvZdivOSUPqIPioI2xJdgbh+nwJj38rcxmSTUB0Stw3hPKxQWL4AH9Mc5I0OPVMsnGlKZxRNSoQLLbqQ==","signatures":[{"sig":"MEQCIGNKBCYNgNXmZxDTsjnLL+CcYM9Zs3AQ1lJcxGGlq3hiAiB8kUwmWXsmbNUk03oM0BYmOigVuUgP0nGm0uC34McU+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":369939},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"f0c99b4d559bb797ecac8036f69541cc8370e035","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.6.2","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.8_1776507358825_0.7355107761536939","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@agent-code-index/mcp-server","version":"0.1.9","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","_id":"@agent-code-index/mcp-server@0.1.9","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"homepage":"https://github.com/cct124/agent-code-index#readme","bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"bin":{"agent-code-index-mcp":"cli.js"},"dist":{"shasum":"2a5e147a51bf54bfc823403577e647dc4b1d76ce","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.9.tgz","fileCount":5,"integrity":"sha512-b603erLeTA/jWJcUuGaHY4KXac7sPqGcA43S08t2MsXWFJ92qUn3+jhw47vbL/6bmr6KmCNeWCYyXop4XWdVhA==","signatures":[{"sig":"MEUCICEMt9vFT1Akp0WARcjBa+r/coWcSRcXXbuIg0Deg9sFAiEAn6zNkez2U49dq2eFJoyZ5aDXEvK2/LO9oCdBZj+ehIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":387723},"main":"./index.js","type":"module","engines":{"node":">=20"},"exports":{".":{"default":"./index.js"}},"gitHead":"0efa3227fb190445801530ac84127a7634411812","private":false,"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"repository":{"url":"git+https://github.com/cct124/agent-code-index.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"10.9.3","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"zod":"^4.3.6","pino":"^9.9.4","tslib":"^2.8.1","unified":"^11.0.5","surrealdb":"^2.0.3","pino-pretty":"^13.1.2","tree-sitter":"^0.22.4","remark-parse":"^11.0.0","unist-util-visit":"^5.0.0","remark-frontmatter":"^5.0.0","tree-sitter-python":"^0.23.6","mdast-util-to-string":"^4.0.0","tree-sitter-javascript":"^0.23.1","tree-sitter-typescript":"^0.23.2","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/mcp-server_0.1.9_1776929126630_0.9014410492729861","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@agent-code-index/mcp-server","version":"0.1.10","description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","type":"module","private":false,"main":"./index.js","bin":{"agent-code-index-mcp":"cli.js"},"exports":{".":{"default":"./index.js"}},"keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"license":"Apache-2.0","homepage":"https://github.com/cct124/agent-code-index#readme","repository":{"type":"git","url":"git+https://github.com/cct124/agent-code-index.git","directory":"packages/mcp-server"},"bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","pino":"^9.9.4","pino-pretty":"^13.1.2","zod":"^4.3.6","mdast-util-to-string":"^4.0.0","remark-frontmatter":"^5.0.0","remark-parse":"^11.0.0","surrealdb":"^2.0.3","tree-sitter":"^0.22.4","tree-sitter-javascript":"^0.23.1","tree-sitter-python":"^0.23.6","tree-sitter-typescript":"^0.23.2","tslib":"^2.8.1","unified":"^11.0.5","unist-util-visit":"^5.0.0"},"_id":"@agent-code-index/mcp-server@0.1.10","gitHead":"0f1ebc687d2aebea44fbf7c5af982659bc7e8846","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-CAmekc1PuoeLkA/5NSG6rXm7sVgBF8jjvNmvYWVfhpn2sb7LnAeiXZt0WXziloA2XsYwYgO7HegEm2E+7W06oA==","shasum":"c18f165293f941cd75869f5e868f23f5be721f77","tarball":"https://registry.npmjs.org/@agent-code-index/mcp-server/-/mcp-server-0.1.10.tgz","fileCount":5,"unpackedSize":390674,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDaorgG6eeoz8V1A+SSXs7MtXTCmQg8A4XbLb9mBnRrtAIhAIcrenmkVuPKVh1pEjyqFtFFX4Mi1qcpV4eOxhzV8nNS"}]},"_npmUser":{"name":"cct124","email":"727751354@qq.com"},"directories":{},"maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_0.1.10_1776935305189_0.6318174663651788"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-23T03:32:27.198Z","modified":"2026-04-23T09:08:25.457Z","0.1.0":"2026-03-23T03:32:27.454Z","0.1.1":"2026-03-23T07:29:33.391Z","0.1.2":"2026-03-23T12:40:12.889Z","0.1.3":"2026-03-23T12:48:02.038Z","0.1.4":"2026-03-23T13:23:22.797Z","0.1.5":"2026-03-23T13:49:03.663Z","0.1.6":"2026-03-23T14:46:16.873Z","0.1.7":"2026-03-25T13:25:04.941Z","0.1.8":"2026-04-18T10:15:58.992Z","0.1.9":"2026-04-23T07:25:26.796Z","0.1.10":"2026-04-23T09:08:25.321Z"},"bugs":{"url":"https://github.com/cct124/agent-code-index/issues"},"license":"Apache-2.0","homepage":"https://github.com/cct124/agent-code-index#readme","keywords":["mcp","model-context-protocol","rag","code-search","surrealdb"],"repository":{"type":"git","url":"git+https://github.com/cct124/agent-code-index.git","directory":"packages/mcp-server"},"description":"MCP server for indexing repositories and retrieving code context with SurrealDB-backed semantic search.","maintainers":[{"name":"cct124","email":"727751354@qq.com"}],"readme":"# @agent-code-index/mcp-server\n\n`packages/mcp-server` 是当前项目的运行时装配与 MCP 协议接入模块，负责把 `core` 与 `infra` 组合成一个可启动、可通过 stdio 暴露 tools 的应用。\n\n这一层的目标是：\n\n1. 读取运行时配置\n2. 创建并装配依赖容器\n3. 在启动阶段执行必要校验\n4. 注册并暴露当前可用的 MCP tools\n\n当前阶段，`mcp-server` 已经具备完整的启动装配能力，并已真正对外暴露 MCP tools。\n\n## 作为 npm 包使用\n\n当前仓库采用双轨模式：\n\n1. 开发态继续保留 Yarn workspace 依赖，方便在 monorepo 内联调 `core / infra / mcp-server`\n2. 发布态通过单独的打包脚本生成 `package-dist/`，产出依赖闭合的 npm 包内容\n\n也就是说，仓库里的 `packages/mcp-server/package.json` 仍然面向开发，而真正用于 npm 发布的是打包后生成的 `package-dist/package.json`。\n\n### 生成发布产物\n\n在仓库根目录执行：\n\n```bash\nyarn workspace @agent-code-index/mcp-server build:package\n```\n\n执行后会生成：\n\n```text\npackages/mcp-server/package-dist/\n```\n\n该目录包含：\n\n1. 打包后的 CLI 和 ESM 入口\n2. 用于发布的 `package.json`\n3. `README.md`\n4. `LICENSE`\n\n当前 `package-dist` 的首要目标是提供稳定可安装的 CLI 产物，因此它优先保证运行时闭合与可执行性；开发态类型系统仍以 monorepo 内的 workspace 包为准。\n\n如需本地验包，可继续执行：\n\n```bash\nyarn workspace @agent-code-index/mcp-server pack:package:dry-run\n```\n\n如需在真正发布前执行一次完整的发布前检查，可执行：\n\n```bash\nyarn workspace @agent-code-index/mcp-server check:release\n```\n\n这条命令当前会做两件事：\n\n1. 校验 `packages/mcp-server/package.json`、`src/server.ts` 与 `package-dist/package.json` 的版本号一致\n2. 在 `package-dist/` 内执行 `npm pack --dry-run`，确认最终会发布到 npm 的文件集合\n\n### 安装\n\n```bash\nnpm install -g @agent-code-index/mcp-server\n```\n\n或通过 `npx` 直接运行：\n\n```bash\nnpx @agent-code-index/mcp-server\n```\n\n安装后可执行命令名为：\n\n```bash\nagent-code-index-mcp\n```\n\n### 运行\n\n这个 CLI 会启动一个基于 stdio transport 的 MCP server，因此通常由 MCP host 以子进程方式拉起，而不是手工长期在终端前台运行。\n\n最小运行前提仍然是提供完整环境变量，例如：\n\n```bash\nPROJECT_SPACE=demo \\\nSURREAL_URL=http://127.0.0.1:8000/rpc \\\nSURREAL_DATABASE=agent_code_index \\\nSURREAL_USERNAME=root \\\nSURREAL_PASSWORD=root \\\nEMBEDDING_PROVIDER=openai-compatible \\\nEMBEDDING_API_KEY=your-key \\\nEMBEDDING_VECTOR_DIMENSION=1024 \\\nagent-code-index-mcp\n```\n\n如果通过 MCP host 配置，推荐直接在 server 条目的 `command` 中使用 `agent-code-index-mcp`，并通过 `env` 注入项目级配置。\n\n### 发布说明\n\n为避免破坏当前 monorepo 开发流程，不建议直接从 `packages/mcp-server` 根目录执行 `npm publish`。\n\n推荐流程是：\n\n```bash\nyarn workspace @agent-code-index/mcp-server build:package\nyarn workspace @agent-code-index/mcp-server check:release\ncd packages/mcp-server/package-dist\nnpm publish --access public\n```\n\n## 模块职责\n\n当前 `mcp-server` 主要承担四类职责：\n\n1. 配置加载与校验\n2. 应用依赖装配\n3. 启动阶段健康检查与元数据校验\n4. MCP tool 注册与请求映射\n\n## 当前目录结构\n\n```text\nsrc/\n  adapters/\n    shared/\n    tools/\n  bootstrap/\n    app.ts\n    config.ts\n    container.ts\n  server.ts\n  index.ts\n```\n\n### bootstrap/config.ts\n\n负责读取和校验运行时配置。\n\n当前能力：\n\n1. 读取 `PROJECT_SPACE`\n2. 根据 `PROJECT_SPACE` 派生 Surreal namespace\n3. 读取 Surreal 连接配置\n4. 读取 embedding 配置\n5. 读取索引链路默认参数\n6. 读取 MCP adapter 默认参数，例如 `MCP_DEFAULT_REPOSITORY_ID`、`MCP_REPOSITORY_ROOT`\n7. 读取日志输出配置，例如 `LOG_LEVEL`、`LOG_PRETTY`、`LOG_FILE_PATH`、`LOG_FILE_PRETTY`\n8. 校验 embedding 必填配置\n\n当前直接支持从进程环境变量读取配置，因此天然适合由 MCP host 在 `mcp.json` 中按 server 注入 env。\n\n### bootstrap/container.ts\n\n负责创建应用依赖容器。\n\n当前已经装配：\n\n1. `embeddingProvider`\n2. `surrealClient`\n3. `chunkSchema`\n4. `projectMetadataSchema`\n5. `chunkPreparationService`\n6. `chunkRepository`\n7. `fileChunkPreparationService`\n8. `searchRepository`\n9. `indexRepositoryService`\n10. `searchCodeContextService`\n11. `indexFilesService`\n12. `deleteFilesService`\n13. `projectMetadataRepository`\n\n也就是说，当前运行时已经能拿到完整的最小索引链依赖图。\n\n### bootstrap/app.ts\n\n负责创建完整应用实例。\n\n当前启动流程包括：\n\n1. 加载配置\n2. 创建容器\n3. 执行 Surreal 健康检查\n4. 执行 chunk schema 初始化\n5. 执行 `project_metadata` schema 初始化\n6. 校验或初始化项目元数据\n\n### index.ts\n\n当前导出 `createApp`、`createMcpServer`、`startStdioServer`、共享 resolver 和 tool 注册函数。\n\n### adapters/shared\n\n负责 MCP adapter 层共用的输入回填、参数清洗与校验辅助。\n\n### adapters/tools\n\n负责把 `core` use case 映射为真正的 MCP tools。\n\n当前已实现并注册：\n\n1. `index_repository`\n2. `search_code_context`\n3. `index_files`\n4. `delete_files`\n5. `get_file_context`\n\n### server.ts\n\n负责创建 `McpServer`、注册 tools，并提供 stdio 启动入口。\n\n## 当前已经实现的功能\n\n截至当前，`mcp-server` 已经具备以下能力。\n\n### 1. 运行时配置模型\n\n已实现：\n\n1. Surreal 配置模型\n2. Embedding 配置模型\n3. 索引配置模型\n4. 环境变量加载与校验逻辑\n\n### 2. 启动期元数据锁定\n\n已实现：\n\n1. 首次启动写入项目元数据\n2. 二次启动校验 provider/model/vectorDimension 一致性\n3. 不一致时拒绝继续启动\n\n### 3. 运行时依赖装配\n\n已实现：\n\n1. Embedding provider 装配\n2. Surreal client 与 repository 装配\n3. chunk preparation 服务装配\n4. 默认索引服务装配\n5. 文件级索引与删除服务装配\n\n### 4. MCP tools 暴露\n\n已实现：\n\n1. 通过官方 MCP TypeScript SDK 创建真实 `McpServer`\n2. 通过 stdio transport 暴露当前 server\n3. `index_repository` tool 注册\n4. `search_code_context` tool 注册\n5. `index_files` tool 注册\n6. `delete_files` tool 注册\n7. `get_file_context` tool 注册\n8. tool 输入参数清洗、默认值回填与错误映射\n\n### 4.1 get_file_context 的当前语义\n\n当前 `get_file_context` 已按最小可用原则落地：\n\n1. 从已索引 chunk 中按 `repositoryId + filePath` 读取当前文件\n2. 返回结构化 `chunks[]`\n3. 同时返回一个面向 Agent 的 `assembledContext.content`\n4. 当前实现不做截断，因此 `assembledContext.truncated = false`\n5. 同时返回最小可用的 `contextPacket`\n6. `assembledContext` 只是已索引 chunk 的连续文本视图，不等价于直接重读磁盘原文件\n\n### 4.2 search_code_context 的当前语义\n\n当前 `search_code_context` 已不再只是“返回原始检索命中列表”，而是同时返回一个 richer `contextPacket`：\n\n1. 原始 `results[]` 仍保留，便于调试向量检索得分与召回原因\n2. `contextPacket.items[]` 会先做去重，再按文件内相邻 chunk 合并\n3. 合并后的 item 会补充 `estimatedTokens`、`mergedChunkIds`、`mergedFromCount`\n4. `contextPacket.files[]` 会按最终返回 item 做文件级聚合摘要\n5. `tokenBudget` 若传入，将驱动 `max_items` 截断，而不是只按 `topK` 生硬裁剪\n6. `contextPacket.truncation` 会显式返回 `budgetTokens`、`estimatedTotalTokens` 与 `estimatedReturnedTokens`\n\n### 5. 启动与索引链验证\n\n已实现：\n\n1. `createApp()` 单元测试\n2. `createApp()` 真实 SurrealDB 集成测试\n3. 真实整链路测试，验证 `prepare -> embed -> upsert -> search`\n4. 基于子进程 stdio 的 MCP smoke test，验证真实 transport 接入\n\n## MCP JSON 配置约定\n\n当前 `mcp-server` 已经具备真实 MCP adapters 和 tools，配置模型也适合按 MCP server 进程做项目级隔离。\n\n推荐约定是：\n\n1. 一个 `mcp.json` server 条目对应一个 `PROJECT_SPACE`\n2. 每个 server 条目通过 `env` 提供自己的 Surreal 与 embedding 配置\n3. 不同项目不要复用同一个 `PROJECT_SPACE`\n4. 同一个 `PROJECT_SPACE` 一旦写入 `project_metadata`，就不应再切换 provider / model / vectorDimension\n\n### 必填环境变量\n\n以下字段是当前配置模型要求的最小集合：\n\n1. `PROJECT_SPACE`\n2. `SURREAL_URL`\n3. `SURREAL_DATABASE`\n4. `EMBEDDING_PROVIDER`\n5. `EMBEDDING_VECTOR_DIMENSION`\n6. `EMBEDDING_API_KEY`\n\n另外，Surreal 认证需要二选一：\n\n1. `SURREAL_USERNAME` + `SURREAL_PASSWORD`\n2. `SURREAL_TOKEN`\n\n### 常用可选环境变量\n\n1. `EMBEDDING_MODEL`\n2. `EMBEDDING_BASE_URL`\n3. `SURREAL_USE_TLS`\n4. `SURREAL_DEPLOYMENT_MODE`\n5. `DEFAULT_TOP_K`\n6. `MCP_DEFAULT_REPOSITORY_ID`\n7. `MCP_REPOSITORY_ROOT`\n8. `DEFAULT_EMBEDDING_BATCH_SIZE`\n9. `DEFAULT_EMBEDDING_CONCURRENCY`\n10. `DEFAULT_SCAN_IGNORE_PATTERNS`\n11. `DEFAULT_SCAN_INCLUDE_PATTERNS`\n12. `DEFAULT_SCAN_GITIGNORE_PATH`\n13. `SEARCH_NATIVE_CANDIDATE_MULTIPLIER`\n14. `SEARCH_NATIVE_EF_SEARCH_MIN`\n15. `LOG_LEVEL`\n16. `LOG_PRETTY`\n17. `LOG_FILE_PATH`\n18. `LOG_FILE_PRETTY`\n19. `LOG_FILE_ROTATE_DAILY`\n20. `LOG_FILE_RETENTION_DAYS`\n\n其中：\n\n1. `MCP_DEFAULT_REPOSITORY_ID` 仅用于 MCP adapter 层在单仓库场景下回填缺省的 `repositoryId`\n2. `MCP_REPOSITORY_ROOT` 仅用于 `index_repository` 与 `index_files` 这类需要访问文件系统的方法回填缺省的 `rootPath`\n3. 它不会改变 `core` 层 use case 仍要求显式 `repositoryId` / `rootPath` 的事实；adapter 只是做默认值解析\n4. 如果未来一个 server 要服务多个仓库，仍建议在每次 tool 调用时显式传入 `repositoryId`\n5. `rootPath` 的解析优先级应为：tool 输入值 > `MCP_REPOSITORY_ROOT` > 校验错误\n6. 如果配置了 `MCP_REPOSITORY_ROOT`，它必须是一个已存在的绝对目录；否则 server 会在启动阶段直接失败，避免把错配拖到首次索引请求时才暴露\n7. `embeddingBatchSize` 的解析优先级应为：tool 输入值 > `DEFAULT_EMBEDDING_BATCH_SIZE` > core 默认值\n8. `embeddingConcurrency` 的解析优先级应为：tool 输入值 > `DEFAULT_EMBEDDING_CONCURRENCY` > core 默认值\n9. `LOG_FILE_PATH` 若配置，则当前 server 会额外把日志写入本地文件，默认写结构化 JSON\n10. `LOG_FILE_PRETTY=true` 时，文件日志会改为 pretty 文本格式，便于本地人工阅读\n11. `LOG_FILE_ROTATE_DAILY` 在配置了 `LOG_FILE_PATH` 时默认开启，会把活跃日志持续写入当前文件，并在跨天时自动归档为 `name.YYYY-MM-DD.ext`\n12. `LOG_FILE_RETENTION_DAYS` 控制按天轮转后保留的历史文件天数；默认保留最近 7 天\n13. `DEFAULT_SCAN_IGNORE_PATTERNS` 用于在内置默认排除列表之后追加自定义规则；内置列表始终包含 `node_modules`、`.git`、`dist`、`build`、`.next`、`.yarn` 与 `*.tsbuildinfo`\n14. `DEFAULT_SCAN_INCLUDE_PATTERNS` 用于补充扫描阶段的白名单规则，采用逗号分隔；一旦命中，会覆盖 `DEFAULT_SCAN_IGNORE_PATTERNS` 与 `.gitignore` 的排除结果；该规则同时作用于 `index_repository` 与 `index_files`\n15. `DEFAULT_SCAN_GITIGNORE_PATH` 若配置，则会读取该绝对路径指向的根 `.gitignore`，并将其中的排除规则并入扫描忽略集合\n16. 如果未配置 `DEFAULT_SCAN_GITIGNORE_PATH`，但配置了 `MCP_REPOSITORY_ROOT`，则启动时会自动尝试读取 `MCP_REPOSITORY_ROOT/.gitignore`\n17. 如果自动推导出的 `.gitignore` 文件不存在，则扫描器会忽略该步骤，不会导致启动失败\n18. 如果没有配置 `MCP_DEFAULT_REPOSITORY_ID`，且调用 MCP tool 时也没有传 `repositoryId`，adapter 应直接返回校验错误，而不是猜测仓库身份\n19. 如果没有配置 `MCP_REPOSITORY_ROOT`，且调用 `index_repository` / `index_files` 时也没有传 `rootPath`，adapter 应直接返回校验错误，而不是依赖工作目录推断仓库根目录\n\n### 推荐的 mcp.json 形态\n\n下面的示例体现的是“一个 server 对应一个项目配置”的推荐做法：\n\n仓库内也提供了一份可直接参考、可带注释的示例文件：[.vscode/mcp.example.jsonc](../../.vscode/mcp.example.jsonc)。\n\n```json\n{\n  \"servers\": {\n    \"agent-code-index-project-a\": {\n      \"command\": \"node\",\n      \"args\": [\"./packages/mcp-server/dist/index.js\"],\n      \"env\": {\n        \"PROJECT_SPACE\": \"project_a\",\n        \"SURREAL_URL\": \"ws://127.0.0.1:8100/rpc\",\n        \"SURREAL_DATABASE\": \"default\",\n        \"SURREAL_USERNAME\": \"surrealdb\",\n        \"SURREAL_PASSWORD\": \"surrealdb\",\n        \"SURREAL_USE_TLS\": \"false\",\n        \"SURREAL_DEPLOYMENT_MODE\": \"local\",\n        \"EMBEDDING_PROVIDER\": \"openai-compatible\",\n        \"EMBEDDING_MODEL\": \"Qwen/Qwen3-Embedding-8B\",\n        \"EMBEDDING_VECTOR_DIMENSION\": \"4096\",\n        \"EMBEDDING_API_KEY\": \"${input:agentCodeIndexApiKey}\",\n        \"EMBEDDING_BASE_URL\": \"https://api.siliconflow.cn/v1\",\n        \"DEFAULT_TOP_K\": \"10\",\n        \"MCP_DEFAULT_REPOSITORY_ID\": \"repo-a\",\n        \"MCP_REPOSITORY_ROOT\": \"/workspace/repo-a\",\n        \"DEFAULT_EMBEDDING_BATCH_SIZE\": \"16\",\n        \"DEFAULT_EMBEDDING_CONCURRENCY\": \"8\",\n        \"DEFAULT_SCAN_IGNORE_PATTERNS\": \"coverage,.cache\",\n        \"DEFAULT_SCAN_INCLUDE_PATTERNS\": \".env.example,dist/schema.json\",\n        \"DEFAULT_SCAN_GITIGNORE_PATH\": \"/workspace/repo-a/.gitignore\",\n        \"SEARCH_NATIVE_CANDIDATE_MULTIPLIER\": \"20\",\n        \"SEARCH_NATIVE_EF_SEARCH_MIN\": \"100\",\n        \"LOG_LEVEL\": \"info\",\n        \"LOG_PRETTY\": \"true\",\n        \"LOG_FILE_PATH\": \"/tmp/agent-code-index/project-a.log\",\n        \"LOG_FILE_PRETTY\": \"false\"\n      }\n    },\n    \"agent-code-index-project-b\": {\n      \"command\": \"node\",\n      \"args\": [\"./packages/mcp-server/dist/index.js\"],\n      \"env\": {\n        \"PROJECT_SPACE\": \"project_b\",\n        \"SURREAL_URL\": \"ws://127.0.0.1:8100/rpc\",\n        \"SURREAL_DATABASE\": \"default\",\n        \"SURREAL_USERNAME\": \"surrealdb\",\n        \"SURREAL_PASSWORD\": \"surrealdb\",\n        \"SURREAL_USE_TLS\": \"false\",\n        \"SURREAL_DEPLOYMENT_MODE\": \"local\",\n        \"EMBEDDING_PROVIDER\": \"voyage\",\n        \"EMBEDDING_MODEL\": \"voyage-code-3\",\n        \"EMBEDDING_VECTOR_DIMENSION\": \"1024\",\n        \"EMBEDDING_API_KEY\": \"${input:voyageApiKey}\",\n        \"DEFAULT_TOP_K\": \"10\",\n        \"MCP_DEFAULT_REPOSITORY_ID\": \"repo-b\",\n        \"MCP_REPOSITORY_ROOT\": \"/workspace/repo-b\",\n        \"DEFAULT_EMBEDDING_BATCH_SIZE\": \"16\",\n        \"DEFAULT_EMBEDDING_CONCURRENCY\": \"8\",\n        \"DEFAULT_SCAN_IGNORE_PATTERNS\": \"coverage,.cache\",\n        \"DEFAULT_SCAN_INCLUDE_PATTERNS\": \".env.example,dist/schema.json\",\n        \"DEFAULT_SCAN_GITIGNORE_PATH\": \"/workspace/repo-b/.gitignore\",\n        \"SEARCH_NATIVE_CANDIDATE_MULTIPLIER\": \"20\",\n        \"SEARCH_NATIVE_EF_SEARCH_MIN\": \"100\",\n        \"LOG_LEVEL\": \"info\",\n        \"LOG_PRETTY\": \"true\",\n        \"LOG_FILE_PATH\": \"/tmp/agent-code-index/project-b.log\",\n        \"LOG_FILE_PRETTY\": \"false\"\n      }\n    }\n  }\n}\n```\n\n### 为什么推荐这种方式\n\n1. 当前 `loadConfig()` 直接读取进程环境变量，实现简单且可预测\n2. `PROJECT_SPACE` 会派生 Surreal namespace，避免每个项目重复维护两套标识\n3. 项目级 provider / model / vectorDimension 锁定已经在启动期校验，不容易混索引\n4. 单仓库 server 可以通过 `MCP_DEFAULT_REPOSITORY_ID` 与 `MCP_REPOSITORY_ROOT` 降低 tool 调用时的重复参数\n5. 未配置默认值时可以强制调用方显式传入 `repositoryId` 或 `rootPath`，避免作用域歧义\n6. 这种方式比依赖工作目录推断仓库根目录更稳定、更可测试\n7. 这种方式比“一个进程动态切多个项目”更符合当前 v1 的稳定性目标\n\n### 当前限制\n\n1. 当前已实现的 tools 包括 `index_repository`、`search_code_context`、`index_files`、`delete_files`、`get_file_context`\n2. `index_files` 的返回结果会显式带出 `skippedFileCount`，用于提示哪些显式传入文件因 ignore 规则、`.gitignore`、二进制内容或空 chunk 而未被重建\n3. `search_code_context` 已具备 richer `ContextBuilder`、相邻 chunk 合并和 token budget 驱动的 `max_items` 截断，但跨文件重排与更复杂的 query-aware summarization 仍未落地\n4. 当前更适合每个项目起一个独立 server 进程，而不是共享一个进程做多项目动态路由\n5. `mcp.json` 中不建议直接提交明文 API key、token 或数据库密码\n\n## 本地启动与最小接入示例\n\n下面给出一个最小可运行的本地流程，用来验证当前 stdio MCP server 的实际接入方式。\n\n### 1. 构建 server\n\n在仓库根目录执行：\n\n```bash\nyarn build\n```\n\n构建完成后，stdio 入口为：\n\n```text\n./packages/mcp-server/dist/index.js\n```\n\n### 1.1 开发态直接运行 TypeScript 源码\n\n为了本地联调和更容易定位启动时报错，当前仓库也支持直接运行 TypeScript 源码入口：\n\n```bash\ncorepack yarn mcp:dev\n```\n\n这个命令实际会通过 `tsx` 运行：\n\n```text\n./packages/mcp-server/src/index.ts\n```\n\n并且会额外开启 Node.js 的 `development` 条件导出解析，因此 `mcp-server` 通过包名导入的 `@agent-code-index/core` 与 `@agent-code-index/infra` 在开发态也会优先落到各自的 `src/index.ts`，而不是旧的 `dist/index.js`。\n\n建议：\n\n1. 本地排查配置、启动和 stack trace 时，优先用源码入口\n2. 稳定使用或对外共享配置时，优先用构建产物入口\n\n### 2. 通过 MCP host 配置接入\n\n如果使用支持 `mcp.json` 的 host，可配置一个最小条目。\n\n开发态联调时，推荐直接运行源码入口：\n\n```json\n{\n  \"servers\": {\n    \"agent-code-index-local\": {\n      \"command\": \"corepack\",\n      \"args\": [\"yarn\", \"mcp:dev\"],\n      \"env\": {\n        \"PROJECT_SPACE\": \"agent_code_index_local\",\n        \"SURREAL_URL\": \"ws://127.0.0.1:8100/rpc\",\n        \"SURREAL_DATABASE\": \"default\",\n        \"SURREAL_USERNAME\": \"surrealdb\",\n        \"SURREAL_PASSWORD\": \"surrealdb\",\n        \"SURREAL_USE_TLS\": \"false\",\n        \"SURREAL_DEPLOYMENT_MODE\": \"local\",\n        \"EMBEDDING_PROVIDER\": \"openai-compatible\",\n        \"EMBEDDING_MODEL\": \"Qwen/Qwen3-Embedding-8B\",\n        \"EMBEDDING_VECTOR_DIMENSION\": \"4096\",\n        \"EMBEDDING_API_KEY\": \"<your-api-key>\",\n        \"EMBEDDING_BASE_URL\": \"https://api.siliconflow.cn/v1\",\n        \"MCP_DEFAULT_REPOSITORY_ID\": \"agent-code-index\",\n        \"MCP_REPOSITORY_ROOT\": \"/home/janex/project/ai-agent/agent-code-index\",\n        \"DEFAULT_EMBEDDING_BATCH_SIZE\": \"16\",\n        \"DEFAULT_EMBEDDING_CONCURRENCY\": \"8\",\n        \"LOG_FILE_PATH\": \"/tmp/agent-code-index/local.log\",\n        \"LOG_FILE_PRETTY\": \"false\"\n      }\n    }\n  }\n}\n```\n\n这条配置的含义是：\n\n1. host 会以子进程方式启动 `corepack yarn mcp:dev`\n2. server 通过标准输入输出与 host 通信，而不是监听 HTTP 端口\n3. `repositoryId` 与 `rootPath` 可在单仓场景下通过环境变量提供默认值\n4. 日志会额外写入本地文件，便于联调时排查启动和运行问题\n\n如果你更希望使用构建产物运行，可把上面的启动方式替换为：\n\n```json\n{\n  \"command\": \"node\",\n  \"args\": [\"./packages/mcp-server/dist/index.js\"]\n}\n```\n\n### 3. 最小调用示例\n\n接入成功后，可以直接让 host 调用以下 tool 参数。\n\n先做一次全量索引：\n\n```json\n{\n  \"name\": \"index_repository\",\n  \"arguments\": {\n    \"mode\": \"full\",\n    \"embeddingBatchSize\": 16,\n    \"embeddingConcurrency\": 8\n  }\n}\n```\n\n参数含义：\n\n1. `embeddingBatchSize`：单次请求携带的 chunk 数量\n2. `embeddingConcurrency`：允许同时并发的批次数量，core 内置默认 `16`\n\n### 3.1 已验证的默认值与覆盖规则\n\n截至 2026-03-23，当前仓库已经在本地开发态配置下完成过一轮 live 验证，验证场景为：\n\n1. MCP host 通过 `corepack yarn mcp:dev` 直接启动 TypeScript 源码入口\n2. embedding provider 使用 `openai-compatible`\n3. embedding model 使用 `Qwen/Qwen3-Embedding-8B`\n4. `PROJECT_SPACE` 使用独立的 `agent_code_index_qwen`，避免与旧的 Voyage 元数据冲突\n5. `DEFAULT_EMBEDDING_BATCH_SIZE=16`\n6. `DEFAULT_EMBEDDING_CONCURRENCY=8`\n\n已确认的行为如下：\n\n1. 当 `index_files` 或 `index_repository` 不显式传 `embeddingBatchSize` / `embeddingConcurrency` 时，adapter 会优先回填 `DEFAULT_EMBEDDING_BATCH_SIZE` 与 `DEFAULT_EMBEDDING_CONCURRENCY`\n2. 当前 live 验证中，不显式传参时，日志已确认实际生效值为 `batchSize=16`、`embeddingConcurrency=8`\n3. 当 tool 调用显式传入参数时，显式值会覆盖环境默认值\n4. 当前 live 验证中，显式传 `embeddingBatchSize=4`、`embeddingConcurrency=2` 后，日志已确认实际生效值变为 `4 / 2`\n5. 在 `16 / 8` 的默认配置下，已完成一次真实 `index_repository` 全量索引，结果为：`scannedFileCount=156`、`parsedFileCount=156`、`preparedChunkCount=1340`、`storedChunkCount=1340`、`failedFileCount=0`\n\n因此，当前默认值优先级可以明确写成：\n\n1. tool 显式输入\n2. `DEFAULT_EMBEDDING_BATCH_SIZE` / `DEFAULT_EMBEDDING_CONCURRENCY`\n3. `core` 层保守默认值 `32 / 1`\n\n然后读取某个文件的已索引上下文：\n\n```json\n{\n  \"name\": \"get_file_context\",\n  \"arguments\": {\n    \"filePath\": \"packages/mcp-server/src/server.ts\"\n  }\n}\n```\n\n预期结果要点：\n\n1. 返回值中包含 `repositoryId`、`filePath`、`chunkCount`\n2. `chunks[]` 会给出结构化 chunk 明细\n3. `assembledContext.content` 会给出适合 Agent 连续阅读的文本\n\n### 4. 调试判断标准\n\n如果 stdio 接入正确，通常会观察到：\n\n1. 启动日志中会出现 `Application startup completed`\n2. `Application startup started` 会带出 provider、embeddingModel、embeddingVectorDimension、logLevel、默认 batch/concurrency、ignore/include 列表、`resolvedGitignorePath` 以及 native search 调优参数，便于快速确认当前实例实际加载的运行时配置\n3. `index_repository` / `index_files` 的日志中会带出 `batchSize` 与 `embeddingConcurrency`\n4. 当日志字段中包含 `error: Error` 时，当前 logger 已会序列化 `name / message / stack`\n5. 如果启动失败发生在 `project_metadata` 校验阶段，日志中应能直接看到类似 `Project metadata mismatch: expected ... received ...` 的完整错误信息，而不是只有空对象\n6. host 能成功列出 5 个 tools\n7. `index_repository` 可以在不显式传 `repositoryId` / `rootPath` 的情况下运行\n8. `get_file_context` 可以在不显式传 `repositoryId` 的情况下返回目标文件的已索引上下文\n9. 如果漏配 `MCP_DEFAULT_REPOSITORY_ID` 或 `MCP_REPOSITORY_ROOT`，server 会返回明确的校验错误，而不是猜测默认值\n10. 如果 `MCP_REPOSITORY_ROOT` 指向不存在的目录，server 会在启动阶段直接失败，而不是带着错误配置继续启动\n\n## 当前边界\n\n`mcp-server` 当前明确还不负责：\n\n1. 更完整的 `ContextPacket` 与检索结果二次组装\n2. 定义核心业务语义\n3. 实现具体存储和 embedding 技术细节\n\n这些职责分别属于未来的协议适配层，以及 `core` / `infra`。\n\n## 当前状态总结\n\n从当前项目进度来看，`mcp-server` 已经不再只是配置占位层，而是已经具备：\n\n1. 可运行的配置加载与校验能力\n2. 可运行的应用容器装配能力\n3. 启动阶段的真实数据库健康检查与元数据锁定能力\n4. 对完整最小索引链的运行时装配能力\n5. 可通过 stdio 对外暴露的 MCP tool server\n6. 文件级已索引上下文读取能力\n\n也就是说，当前 `mcp-server` 已经承担起“把系统真正启动起来、装配完成并暴露当前可用 tools”的职责；下一阶段主要集中在更完整的上下文包组装，而不是补最小可用 tool 集。\n","readmeFilename":"README.md"}