purecontext-mcp 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/README.md +206 -207
  2. package/dist/config/cli.d.ts +37 -0
  3. package/dist/config/cli.d.ts.map +1 -1
  4. package/dist/config/cli.js +198 -2
  5. package/dist/config/cli.js.map +1 -1
  6. package/dist/config/config-loader.js +10 -0
  7. package/dist/config/config-loader.js.map +1 -1
  8. package/dist/config/config-schema.d.ts +41 -1
  9. package/dist/config/config-schema.d.ts.map +1 -1
  10. package/dist/config/config-schema.js +52 -2
  11. package/dist/config/config-schema.js.map +1 -1
  12. package/dist/core/db/embedding-store.d.ts +5 -0
  13. package/dist/core/db/embedding-store.d.ts.map +1 -1
  14. package/dist/core/db/embedding-store.js +30 -17
  15. package/dist/core/db/embedding-store.js.map +1 -1
  16. package/dist/core/db/file-store.d.ts +22 -0
  17. package/dist/core/db/file-store.d.ts.map +1 -1
  18. package/dist/core/db/file-store.js +43 -8
  19. package/dist/core/db/file-store.js.map +1 -1
  20. package/dist/core/db/git-metadata-store.d.ts +49 -0
  21. package/dist/core/db/git-metadata-store.d.ts.map +1 -0
  22. package/dist/core/db/git-metadata-store.js +124 -0
  23. package/dist/core/db/git-metadata-store.js.map +1 -0
  24. package/dist/core/db/repo-scope.d.ts +23 -0
  25. package/dist/core/db/repo-scope.d.ts.map +1 -0
  26. package/dist/core/db/repo-scope.js +55 -0
  27. package/dist/core/db/repo-scope.js.map +1 -0
  28. package/dist/core/db/schema.d.ts +10 -1
  29. package/dist/core/db/schema.d.ts.map +1 -1
  30. package/dist/core/db/schema.js +239 -83
  31. package/dist/core/db/schema.js.map +1 -1
  32. package/dist/core/db/symbol-store.d.ts +53 -0
  33. package/dist/core/db/symbol-store.d.ts.map +1 -1
  34. package/dist/core/db/symbol-store.js +145 -13
  35. package/dist/core/db/symbol-store.js.map +1 -1
  36. package/dist/core/diff-parser.d.ts +61 -0
  37. package/dist/core/diff-parser.d.ts.map +1 -0
  38. package/dist/core/diff-parser.js +167 -0
  39. package/dist/core/diff-parser.js.map +1 -0
  40. package/dist/core/errors.d.ts +22 -0
  41. package/dist/core/errors.d.ts.map +1 -1
  42. package/dist/core/errors.js +43 -0
  43. package/dist/core/errors.js.map +1 -1
  44. package/dist/core/file-processor.d.ts.map +1 -1
  45. package/dist/core/file-processor.js +30 -6
  46. package/dist/core/file-processor.js.map +1 -1
  47. package/dist/core/git-log-reader.d.ts +72 -0
  48. package/dist/core/git-log-reader.d.ts.map +1 -0
  49. package/dist/core/git-log-reader.js +218 -0
  50. package/dist/core/git-log-reader.js.map +1 -0
  51. package/dist/core/github-api-fetcher.d.ts +99 -0
  52. package/dist/core/github-api-fetcher.d.ts.map +1 -0
  53. package/dist/core/github-api-fetcher.js +220 -0
  54. package/dist/core/github-api-fetcher.js.map +1 -0
  55. package/dist/core/grammar-paths.d.ts +2 -0
  56. package/dist/core/grammar-paths.d.ts.map +1 -0
  57. package/dist/core/grammar-paths.js +6 -0
  58. package/dist/core/grammar-paths.js.map +1 -0
  59. package/dist/core/index-manager.d.ts.map +1 -1
  60. package/dist/core/index-manager.js +61 -0
  61. package/dist/core/index-manager.js.map +1 -1
  62. package/dist/core/indexing-worker.d.ts.map +1 -1
  63. package/dist/core/indexing-worker.js +26 -0
  64. package/dist/core/indexing-worker.js.map +1 -1
  65. package/dist/core/metrics/complexity-calculator.d.ts +20 -0
  66. package/dist/core/metrics/complexity-calculator.d.ts.map +1 -0
  67. package/dist/core/metrics/complexity-calculator.js +334 -0
  68. package/dist/core/metrics/complexity-calculator.js.map +1 -0
  69. package/dist/core/parse-dispatcher.d.ts +5 -1
  70. package/dist/core/parse-dispatcher.d.ts.map +1 -1
  71. package/dist/core/parse-dispatcher.js +28 -6
  72. package/dist/core/parse-dispatcher.js.map +1 -1
  73. package/dist/core/search/relevance-ranker.d.ts +15 -1
  74. package/dist/core/search/relevance-ranker.d.ts.map +1 -1
  75. package/dist/core/search/relevance-ranker.js +40 -13
  76. package/dist/core/search/relevance-ranker.js.map +1 -1
  77. package/dist/core/symbol-source-helper.d.ts +23 -0
  78. package/dist/core/symbol-source-helper.d.ts.map +1 -0
  79. package/dist/core/symbol-source-helper.js +73 -0
  80. package/dist/core/symbol-source-helper.js.map +1 -0
  81. package/dist/core/test-mapper.d.ts +43 -0
  82. package/dist/core/test-mapper.d.ts.map +1 -0
  83. package/dist/core/test-mapper.js +200 -0
  84. package/dist/core/test-mapper.js.map +1 -0
  85. package/dist/core/types.d.ts +43 -4
  86. package/dist/core/types.d.ts.map +1 -1
  87. package/dist/core/watcher/file-watcher.d.ts +2 -0
  88. package/dist/core/watcher/file-watcher.d.ts.map +1 -1
  89. package/dist/core/watcher/file-watcher.js +2 -0
  90. package/dist/core/watcher/file-watcher.js.map +1 -1
  91. package/dist/handlers/bash.d.ts +3 -0
  92. package/dist/handlers/bash.d.ts.map +1 -0
  93. package/dist/handlers/bash.js +165 -0
  94. package/dist/handlers/bash.js.map +1 -0
  95. package/dist/handlers/erlang.d.ts +3 -0
  96. package/dist/handlers/erlang.d.ts.map +1 -0
  97. package/dist/handlers/erlang.js +326 -0
  98. package/dist/handlers/erlang.js.map +1 -0
  99. package/dist/handlers/fortran.d.ts +3 -0
  100. package/dist/handlers/fortran.d.ts.map +1 -0
  101. package/dist/handlers/fortran.js +268 -0
  102. package/dist/handlers/fortran.js.map +1 -0
  103. package/dist/handlers/gdscript.d.ts +3 -0
  104. package/dist/handlers/gdscript.d.ts.map +1 -0
  105. package/dist/handlers/gdscript.js +273 -0
  106. package/dist/handlers/gdscript.js.map +1 -0
  107. package/dist/handlers/gleam.d.ts +3 -0
  108. package/dist/handlers/gleam.d.ts.map +1 -0
  109. package/dist/handlers/gleam.js +257 -0
  110. package/dist/handlers/gleam.js.map +1 -0
  111. package/dist/handlers/graphql.d.ts +3 -0
  112. package/dist/handlers/graphql.d.ts.map +1 -0
  113. package/dist/handlers/graphql.js +384 -0
  114. package/dist/handlers/graphql.js.map +1 -0
  115. package/dist/handlers/groovy.d.ts +3 -0
  116. package/dist/handlers/groovy.d.ts.map +1 -0
  117. package/dist/handlers/groovy.js +366 -0
  118. package/dist/handlers/groovy.js.map +1 -0
  119. package/dist/handlers/handler-registry.d.ts.map +1 -1
  120. package/dist/handlers/handler-registry.js +29 -0
  121. package/dist/handlers/handler-registry.js.map +1 -1
  122. package/dist/handlers/nix.d.ts +3 -0
  123. package/dist/handlers/nix.d.ts.map +1 -0
  124. package/dist/handlers/nix.js +236 -0
  125. package/dist/handlers/nix.js.map +1 -0
  126. package/dist/handlers/objective-c.d.ts +3 -0
  127. package/dist/handlers/objective-c.d.ts.map +1 -0
  128. package/dist/handlers/objective-c.js +317 -0
  129. package/dist/handlers/objective-c.js.map +1 -0
  130. package/dist/handlers/openapi.d.ts +3 -0
  131. package/dist/handlers/openapi.d.ts.map +1 -0
  132. package/dist/handlers/openapi.js +180 -0
  133. package/dist/handlers/openapi.js.map +1 -0
  134. package/dist/handlers/perl.d.ts +3 -0
  135. package/dist/handlers/perl.d.ts.map +1 -0
  136. package/dist/handlers/perl.js +232 -0
  137. package/dist/handlers/perl.js.map +1 -0
  138. package/dist/handlers/protobuf.d.ts +3 -0
  139. package/dist/handlers/protobuf.d.ts.map +1 -0
  140. package/dist/handlers/protobuf.js +258 -0
  141. package/dist/handlers/protobuf.js.map +1 -0
  142. package/dist/handlers/sql-jinja-preprocessor.d.ts +33 -0
  143. package/dist/handlers/sql-jinja-preprocessor.d.ts.map +1 -0
  144. package/dist/handlers/sql-jinja-preprocessor.js +63 -0
  145. package/dist/handlers/sql-jinja-preprocessor.js.map +1 -0
  146. package/dist/handlers/sql.d.ts +3 -0
  147. package/dist/handlers/sql.d.ts.map +1 -0
  148. package/dist/handlers/sql.js +177 -0
  149. package/dist/handlers/sql.js.map +1 -0
  150. package/dist/handlers/terraform.d.ts +3 -0
  151. package/dist/handlers/terraform.d.ts.map +1 -0
  152. package/dist/handlers/terraform.js +313 -0
  153. package/dist/handlers/terraform.js.map +1 -0
  154. package/dist/handlers/xml.d.ts +3 -0
  155. package/dist/handlers/xml.d.ts.map +1 -0
  156. package/dist/handlers/xml.js +210 -0
  157. package/dist/handlers/xml.js.map +1 -0
  158. package/dist/index.d.ts.map +1 -1
  159. package/dist/index.js +116 -31
  160. package/dist/index.js.map +1 -1
  161. package/dist/providers/dbt-provider.d.ts +43 -0
  162. package/dist/providers/dbt-provider.d.ts.map +1 -0
  163. package/dist/providers/dbt-provider.js +252 -0
  164. package/dist/providers/dbt-provider.js.map +1 -0
  165. package/dist/providers/provider-registry.d.ts +43 -0
  166. package/dist/providers/provider-registry.d.ts.map +1 -0
  167. package/dist/providers/provider-registry.js +78 -0
  168. package/dist/providers/provider-registry.js.map +1 -0
  169. package/dist/semantic/hybrid-search.d.ts +4 -0
  170. package/dist/semantic/hybrid-search.d.ts.map +1 -1
  171. package/dist/semantic/hybrid-search.js +12 -2
  172. package/dist/semantic/hybrid-search.js.map +1 -1
  173. package/dist/server/http-server.d.ts +16 -0
  174. package/dist/server/http-server.d.ts.map +1 -1
  175. package/dist/server/http-server.js +295 -1
  176. package/dist/server/http-server.js.map +1 -1
  177. package/dist/server/mcp-server.d.ts +8 -0
  178. package/dist/server/mcp-server.d.ts.map +1 -1
  179. package/dist/server/mcp-server.js +143 -1
  180. package/dist/server/mcp-server.js.map +1 -1
  181. package/dist/server/resources.d.ts +28 -0
  182. package/dist/server/resources.d.ts.map +1 -0
  183. package/dist/server/resources.js +119 -0
  184. package/dist/server/resources.js.map +1 -0
  185. package/dist/server/tools/analyze-diff.d.ts +28 -0
  186. package/dist/server/tools/analyze-diff.d.ts.map +1 -0
  187. package/dist/server/tools/analyze-diff.js +309 -0
  188. package/dist/server/tools/analyze-diff.js.map +1 -0
  189. package/dist/server/tools/detect-antipatterns.d.ts +74 -0
  190. package/dist/server/tools/detect-antipatterns.d.ts.map +1 -0
  191. package/dist/server/tools/detect-antipatterns.js +442 -0
  192. package/dist/server/tools/detect-antipatterns.js.map +1 -0
  193. package/dist/server/tools/export-index.d.ts +84 -0
  194. package/dist/server/tools/export-index.d.ts.map +1 -0
  195. package/dist/server/tools/export-index.js +168 -0
  196. package/dist/server/tools/export-index.js.map +1 -0
  197. package/dist/server/tools/fetch-public-index.d.ts +41 -0
  198. package/dist/server/tools/fetch-public-index.d.ts.map +1 -0
  199. package/dist/server/tools/fetch-public-index.js +244 -0
  200. package/dist/server/tools/fetch-public-index.js.map +1 -0
  201. package/dist/server/tools/find-cross-repo-usages.d.ts +49 -0
  202. package/dist/server/tools/find-cross-repo-usages.d.ts.map +1 -0
  203. package/dist/server/tools/find-cross-repo-usages.js +126 -0
  204. package/dist/server/tools/find-cross-repo-usages.js.map +1 -0
  205. package/dist/server/tools/find-refactoring-opportunities.d.ts +81 -0
  206. package/dist/server/tools/find-refactoring-opportunities.d.ts.map +1 -0
  207. package/dist/server/tools/find-refactoring-opportunities.js +390 -0
  208. package/dist/server/tools/find-refactoring-opportunities.js.map +1 -0
  209. package/dist/server/tools/find-references.d.ts +45 -0
  210. package/dist/server/tools/find-references.d.ts.map +1 -0
  211. package/dist/server/tools/find-references.js +119 -0
  212. package/dist/server/tools/find-references.js.map +1 -0
  213. package/dist/server/tools/generate-docs.d.ts +67 -0
  214. package/dist/server/tools/generate-docs.d.ts.map +1 -0
  215. package/dist/server/tools/generate-docs.js +520 -0
  216. package/dist/server/tools/generate-docs.js.map +1 -0
  217. package/dist/server/tools/get-churn-metrics.d.ts +46 -0
  218. package/dist/server/tools/get-churn-metrics.d.ts.map +1 -0
  219. package/dist/server/tools/get-churn-metrics.js +268 -0
  220. package/dist/server/tools/get-churn-metrics.js.map +1 -0
  221. package/dist/server/tools/get-file-content.d.ts +19 -0
  222. package/dist/server/tools/get-file-content.d.ts.map +1 -0
  223. package/dist/server/tools/get-file-content.js +94 -0
  224. package/dist/server/tools/get-file-content.js.map +1 -0
  225. package/dist/server/tools/get-quality-metrics.d.ts +67 -0
  226. package/dist/server/tools/get-quality-metrics.d.ts.map +1 -0
  227. package/dist/server/tools/get-quality-metrics.js +151 -0
  228. package/dist/server/tools/get-quality-metrics.js.map +1 -0
  229. package/dist/server/tools/get-symbol-history.d.ts +24 -0
  230. package/dist/server/tools/get-symbol-history.d.ts.map +1 -0
  231. package/dist/server/tools/get-symbol-history.js +172 -0
  232. package/dist/server/tools/get-symbol-history.js.map +1 -0
  233. package/dist/server/tools/get-symbol-source.d.ts +8 -2
  234. package/dist/server/tools/get-symbol-source.d.ts.map +1 -1
  235. package/dist/server/tools/get-symbol-source.js +75 -22
  236. package/dist/server/tools/get-symbol-source.js.map +1 -1
  237. package/dist/server/tools/get-symbols.d.ts +19 -0
  238. package/dist/server/tools/get-symbols.d.ts.map +1 -0
  239. package/dist/server/tools/get-symbols.js +131 -0
  240. package/dist/server/tools/get-symbols.js.map +1 -0
  241. package/dist/server/tools/get-task-context.d.ts +55 -0
  242. package/dist/server/tools/get-task-context.d.ts.map +1 -0
  243. package/dist/server/tools/get-task-context.js +441 -0
  244. package/dist/server/tools/get-task-context.js.map +1 -0
  245. package/dist/server/tools/import-index.d.ts +15 -0
  246. package/dist/server/tools/import-index.d.ts.map +1 -0
  247. package/dist/server/tools/import-index.js +223 -0
  248. package/dist/server/tools/import-index.js.map +1 -0
  249. package/dist/server/tools/index-repo.d.ts +14 -5
  250. package/dist/server/tools/index-repo.d.ts.map +1 -1
  251. package/dist/server/tools/index-repo.js +232 -18
  252. package/dist/server/tools/index-repo.js.map +1 -1
  253. package/dist/server/tools/invalidate-cache.d.ts +15 -0
  254. package/dist/server/tools/invalidate-cache.d.ts.map +1 -0
  255. package/dist/server/tools/invalidate-cache.js +121 -0
  256. package/dist/server/tools/invalidate-cache.js.map +1 -0
  257. package/dist/server/tools/search-columns.d.ts +32 -0
  258. package/dist/server/tools/search-columns.d.ts.map +1 -0
  259. package/dist/server/tools/search-columns.js +167 -0
  260. package/dist/server/tools/search-columns.js.map +1 -0
  261. package/dist/server/tools/search-semantic.d.ts +9 -3
  262. package/dist/server/tools/search-semantic.d.ts.map +1 -1
  263. package/dist/server/tools/search-semantic.js +211 -109
  264. package/dist/server/tools/search-semantic.js.map +1 -1
  265. package/dist/server/tools/search-similar.d.ts +52 -0
  266. package/dist/server/tools/search-similar.d.ts.map +1 -0
  267. package/dist/server/tools/search-similar.js +266 -0
  268. package/dist/server/tools/search-similar.js.map +1 -0
  269. package/dist/server/tools/search-symbols.d.ts +6 -2
  270. package/dist/server/tools/search-symbols.d.ts.map +1 -1
  271. package/dist/server/tools/search-symbols.js +221 -122
  272. package/dist/server/tools/search-symbols.js.map +1 -1
  273. package/dist/server/tools/search-text.d.ts +4 -2
  274. package/dist/server/tools/search-text.d.ts.map +1 -1
  275. package/dist/server/tools/search-text.js +85 -58
  276. package/dist/server/tools/search-text.js.map +1 -1
  277. package/dist/server/webhooks/github-webhook.d.ts +33 -0
  278. package/dist/server/webhooks/github-webhook.d.ts.map +1 -0
  279. package/dist/server/webhooks/github-webhook.js +90 -0
  280. package/dist/server/webhooks/github-webhook.js.map +1 -0
  281. package/dist/server/webhooks/gitlab-webhook.d.ts +32 -0
  282. package/dist/server/webhooks/gitlab-webhook.d.ts.map +1 -0
  283. package/dist/server/webhooks/gitlab-webhook.js +84 -0
  284. package/dist/server/webhooks/gitlab-webhook.js.map +1 -0
  285. package/dist/server/webhooks/webhook-utils.d.ts +23 -0
  286. package/dist/server/webhooks/webhook-utils.d.ts.map +1 -0
  287. package/dist/server/webhooks/webhook-utils.js +111 -0
  288. package/dist/server/webhooks/webhook-utils.js.map +1 -0
  289. package/dist/summarizer/ai-summarizer.d.ts +16 -7
  290. package/dist/summarizer/ai-summarizer.d.ts.map +1 -1
  291. package/dist/summarizer/ai-summarizer.js +42 -6
  292. package/dist/summarizer/ai-summarizer.js.map +1 -1
  293. package/dist/summarizer/providers/gemini-provider.d.ts +23 -0
  294. package/dist/summarizer/providers/gemini-provider.d.ts.map +1 -0
  295. package/dist/summarizer/providers/gemini-provider.js +86 -0
  296. package/dist/summarizer/providers/gemini-provider.js.map +1 -0
  297. package/dist/ui/assets/BlastRadius-DRLtokvE.js +1 -0
  298. package/dist/ui/assets/DependencyGraph-D7IWT3Sf.js +27 -0
  299. package/dist/ui/assets/{NotFound-C1wVKP-6.js → NotFound-Bkcpdshj.js} +1 -1
  300. package/dist/ui/assets/RepoDetail-Dz5EJYcE.js +1 -0
  301. package/dist/ui/assets/RepoList-DkgINNmw.js +1 -0
  302. package/dist/ui/assets/Search-CaEY9HUv.js +1 -0
  303. package/dist/ui/assets/SymbolView-B1VIiI_B.js +14 -0
  304. package/dist/ui/assets/index-DADf5y_L.css +1 -0
  305. package/dist/ui/assets/index-x3TQf_82.js +61 -0
  306. package/dist/ui/assets/useSearch-DbM4Vq6b.js +1 -0
  307. package/dist/ui/index.html +2 -2
  308. package/grammars/tree-sitter-bash.wasm +0 -0
  309. package/grammars/tree-sitter-perl.wasm +0 -0
  310. package/package.json +7 -4
  311. package/dist/ui/assets/BlastRadius-ccQ3ktbv.js +0 -1
  312. package/dist/ui/assets/DependencyGraph-Ca84q89b.js +0 -27
  313. package/dist/ui/assets/RepoDetail-B_8qid2Y.js +0 -1
  314. package/dist/ui/assets/RepoList-BuPu-ODM.js +0 -1
  315. package/dist/ui/assets/Search-BzZ9Og8E.js +0 -1
  316. package/dist/ui/assets/SymbolView-FdpKlzql.js +0 -14
  317. package/dist/ui/assets/client-BANW_tIp.js +0 -1
  318. package/dist/ui/assets/index-CnwwQi_S.js +0 -61
  319. package/dist/ui/assets/index-SS2IXr8I.css +0 -1
  320. package/dist/ui/assets/repoStore-SbGR6YI6.js +0 -1
  321. package/dist/ui/assets/useSearch-DHyve22h.js +0 -1
package/README.md CHANGED
@@ -1,207 +1,206 @@
1
- # PureContext MCP
2
-
3
- [![CI](https://github.com/Goran-Ocokoljic/purecontext-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Goran-Ocokoljic/purecontext-mcp/actions/workflows/ci.yml)
4
- [![npm version](https://img.shields.io/npm/v/purecontext-mcp.svg)](https://www.npmjs.com/package/purecontext-mcp)
5
- [![Stable](https://img.shields.io/badge/stability-stable-brightgreen.svg)](docs/API_STABILITY.md)
6
-
7
- Token-efficient source code navigation for AI agents. Indexes TypeScript/JavaScript projects using tree-sitter AST parsing, stores structured symbol metadata in SQLite, and exposes a Model Context Protocol (MCP) server so AI agents can retrieve precisely the code they need — signatures, dependencies, and source — without reading entire files.
8
-
9
- ## What's New in 1.0
10
-
11
- Version 1.0.0 is the first stable release. The tool API is now under semver — breaking changes require a major version bump. See [CHANGELOG.md](CHANGELOG.md) for the full history and [docs/API_STABILITY.md](docs/API_STABILITY.md) for the public API contract.
12
-
13
- Highlights since the initial prototype:
14
- - **16 languages** — TypeScript, JavaScript, Python, Go, Rust, Java, C/C++, C#, Swift, Kotlin, Dart, Elixir, Haskell, Scala, R, PHP, Lua, Ruby
15
- - **20+ framework adapters** Vue, Nuxt, React, Next.js, Angular, Express, Fastify, Django, FastAPI, Flask, Spring, and more
16
- - **FTS5 + semantic search** — keyword search with camelCase splitting and HNSW vector index
17
- - **Dependency graph tools** — blast radius, context bundle, dead code detection
18
- - **Worker thread pool** — parallel parsing for 10k–50k file enterprise repos
19
- - **Zero-build install** — prebuilt `better-sqlite3` binaries for Node 18/20/22 × Windows/macOS/Linux
20
-
21
- ---
22
-
23
- ## Quick Start
24
-
25
- ### Install and connect to Claude Code
26
-
27
- ```bash
28
- # Add to Claude Code (uses npx to run without global install)
29
- claude mcp add purecontext-mcp -- npx purecontext-mcp
30
-
31
- # Or install globally first
32
- npm install -g purecontext-mcp
33
- claude mcp add purecontext-mcp -- purecontext-mcp
34
- ```
35
-
36
- ### Index a project
37
-
38
- Once connected, tell Claude to index your project:
39
-
40
- ```
41
- Index my project at /path/to/my-project using the index_folder tool
42
- ```
43
-
44
- Then use any of the tools below to navigate it.
45
-
46
- ### Configuration (optional)
47
-
48
- ```bash
49
- # Generate a config file with all defaults and comments
50
- npx purecontext-mcp config --init
51
-
52
- # Validate config and check prerequisites
53
- npx purecontext-mcp config --check
54
-
55
- # Show effective configuration
56
- npx purecontext-mcp config
57
- ```
58
-
59
- ---
60
-
61
- ## Tool Reference
62
-
63
- All tools return JSON. Responses include a `_tokenEstimate` field (where applicable) so agents can gauge context size before loading full source.
64
-
65
- ### Indexing
66
-
67
- | Tool | Description |
68
- |------|-------------|
69
- | `index_folder` | Index a project directory. Discovers source files, parses symbols and imports, builds a dependency graph. Returns `repoId` and statistics. |
70
- | `resolve_repo` | Resolve a local path to its `repoId`. Reports whether the project has been indexed and its metadata. |
71
- | `list_repos` | List all indexed repositories with their metadata. |
72
-
73
- ### Symbol Search and Retrieval
74
-
75
- | Tool | Description |
76
- |------|-------------|
77
- | `search_symbols` | Search symbols by name fragment. Filters by `kind`, `filePath`, and `limit`. Returns signatures and summaries — no source code. |
78
- | `get_symbol_source` | Retrieve the raw source of one symbol using its byte offsets. Use after `search_symbols` to drill into a specific definition. |
79
- | `get_file_outline` | All symbols defined in a file with signatures and summaries. Token-efficient alternative to reading the file. |
80
- | `get_repo_outline` | All files with their top-level symbols. Useful for understanding project structure. |
81
- | `get_file_tree` | Directory tree of an indexed project with file counts per directory. |
82
-
83
- ### Dependency Graph
84
-
85
- | Tool | Description |
86
- |------|-------------|
87
- | `get_context_bundle` | Forward-walk from a symbol: returns everything needed to understand it (transitive imports). Includes token estimate. |
88
- | `get_blast_radius` | Reverse-walk from a symbol: returns all files that (transitively) import it. Use before modifying or deleting a symbol. |
89
- | `find_importers` | Direct importers of a file, with their symbols. |
90
- | `find_dead_code` | Exported symbols in files that nothing else imports. Helps identify unused code. |
91
-
92
- ---
93
-
94
- ## Configuration Reference
95
-
96
- Config file location: `~/.purecontext/config.json`
97
-
98
- | Field | Type | Default | Description |
99
- |-------|------|---------|-------------|
100
- | `indexDir` | `string` | `~/.purecontext/indexes/` | Where SQLite index files are stored |
101
- | `fileLimit` | `number` | `1000` | Max files indexed per project |
102
- | `watchDebounceMs` | `number` | `2000` | File watcher debounce window (ms) |
103
- | `excludePatterns` | `string[]` | `[]` | Additional glob patterns to exclude |
104
- | `adapters` | `'auto'`\|`'none'`\|`string[]` | `'auto'` | Framework adapter activation |
105
- | `ai.provider` | `'none'`\|`'anthropic'`\|`'openai'` | `'none'` | AI summarization provider (Phase 2) |
106
- | `ai.allowRemoteAI` | `boolean` | `false` | Allow outbound AI API calls |
107
-
108
- ---
109
-
110
- ## Team Setup (Shared Server)
111
-
112
- PureContext can run as an always-on shared server so your whole team queries the same index without each developer re-indexing independently.
113
-
114
- ### 1. Start the server
115
-
116
- ```bash
117
- # Docker (recommended)
118
- docker run -d \
119
- -p 3000:3000 \
120
- -v ./data:/data \
121
- -e PCTX_ADMIN_KEY=your-admin-secret \
122
- purecontext/purecontext-mcp:latest
123
-
124
- # Or with npx
125
- PCTX_ADMIN_KEY=your-admin-secret npx purecontext-mcp --server --host 0.0.0.0 --port 3000
126
- ```
127
-
128
- ### 2. Create a workspace and API keys
129
-
130
- ```bash
131
- # Create workspace
132
- curl -s -X POST http://localhost:3000/admin/workspaces \
133
- -H "Authorization: Bearer your-admin-secret" \
134
- -H "Content-Type: application/json" \
135
- -d '{"name": "my-team"}' | jq .
136
-
137
- # Create a key for each developer
138
- curl -s -X POST http://localhost:3000/admin/keys \
139
- -H "Authorization: Bearer your-admin-secret" \
140
- -H "Content-Type: application/json" \
141
- -d '{"label": "alice-laptop", "permissions": ["read", "write"]}' | jq .key
142
- ```
143
-
144
- ### 3. Index the shared repo (once, on the server)
145
-
146
- ```bash
147
- curl -s -X POST http://localhost:3000/mcp/sse \
148
- -H "Authorization: Bearer pctx_alice_key_here" \
149
- -H "Accept: application/json, text/event-stream" \
150
- -H "Content-Type: application/json" \
151
- -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"cli","version":"1.0.0"}},"id":1}'
152
- ```
153
-
154
- Or simply ask Claude Code to index via the remote connection (step 4).
155
-
156
- ### 4. Connect each developer's Claude Code
157
-
158
- ```bash
159
- claude mcp add purecontext-remote \
160
- --transport http \
161
- --url https://purecontext.mycompany.com/mcp/sse \
162
- --header "Authorization: Bearer pctx_yourkey"
163
- ```
164
-
165
- Each developer gets their own API key. The server handles concurrent agent sessions independently. See [docs/TEAM_SETUP.md](docs/TEAM_SETUP.md) for the full walkthrough including proxy configuration, TLS, and troubleshooting.
166
-
167
- ---
168
-
169
- ## Architecture Overview
170
-
171
- PureContext MCP follows a strict three-layer architecture:
172
-
173
- ```
174
- Adapters (src/adapters/) Framework-specific extraction (Vue, Nuxt, React — Phase 2)
175
-
176
- Handlers (src/handlers/) Language-specific AST parsing (TypeScript, JavaScript)
177
-
178
- Core (src/core/) File discovery, SQLite storage, MCP transport
179
- ```
180
-
181
- Dependencies flow strictly downward. Core knows nothing about specific languages or frameworks.
182
-
183
- ### Key components
184
-
185
- - **Index Manager** (`src/core/index-manager.ts`) — orchestrates the full pipeline: discover → parse → extract → store → graph
186
- - **Parse Dispatcher** (`src/core/parse-dispatcher.ts`)routes files to language handlers via web-tree-sitter (WASM)
187
- - **Graph Traversal** (`src/graph/graph-traversal.ts`) — BFS forward/reverse walks over the dependency graph
188
- - **File Watcher** (`src/core/watcher/file-watcher.ts`) chokidar-based incremental re-indexing on file changes
189
- - **MCP Server** (`src/server/mcp-server.ts`) — registers all tools, handles stdio transport
190
-
191
- For detailed design decisions and requirements, see `docs/PureContext_MCP_PRD_v1.0.docx`.
192
-
193
- ---
194
-
195
- ## Development
196
-
197
- ```bash
198
- npm run build # Compile TypeScript
199
- npm run dev # Watch mode
200
- npm run test # Run test suite (vitest)
201
- npm run lint # ESLint
202
- ```
203
-
204
- ### Requirements
205
-
206
- - Node.js >= 18.0.0
207
- - The `grammars/` directory must contain the bundled `.wasm` grammar files (included in the package)
1
+ # PureContext MCP
2
+
3
+ [![CI](https://github.com/Goran-Ocokoljic/purecontext-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Goran-Ocokoljic/purecontext-mcp/actions/workflows/ci.yml)
4
+ [![npm version](https://img.shields.io/npm/v/purecontext-mcp.svg)](https://www.npmjs.com/package/purecontext-mcp)
5
+ [![Stable](https://img.shields.io/badge/stability-stable-brightgreen.svg)](docs/27-api-stability.md)
6
+
7
+ **Stop burning context tokens reading whole files.** PureContext MCP indexes your codebase and lets AI agents retrieve exactly the code they need — a single function, a class, a route definition — without loading hundreds of irrelevant lines first.
8
+
9
+ ```
10
+ Without PureContext: 800-line auth file → ~2,000 tokens to find one function
11
+ With PureContext: 45-line function → ~150 tokens
12
+ Savings: 93%
13
+ ```
14
+
15
+ But token savings are the mechanism, not the point. The point is that AI gets better answers from precise context than from bulk context. Less hallucination. More accurate suggestions. The ability to work effectively on large codebases that don't fit in any context window.
16
+
17
+ ---
18
+
19
+ ## Quick start
20
+
21
+ ```bash
22
+ # Connect to Claude Code (no global install needed)
23
+ claude mcp add purecontext-mcp -- npx purecontext-mcp
24
+ ```
25
+
26
+ Then in a Claude Code conversation:
27
+
28
+ ```
29
+ Index my project at /path/to/my-project
30
+ ```
31
+
32
+ That's it. Claude will index your codebase and you can start navigating it by name, by meaning, or by dependency — without reading files.
33
+
34
+ ---
35
+
36
+ ## Documentation
37
+
38
+ ### User Guide start here
39
+
40
+ The guide explains what PureContext does, why each feature exists, and how to use it effectively in real-world situations. It covers both solo developers and team deployments.
41
+
42
+ | | |
43
+ |-|-|
44
+ | [Why PureContext](guide/why-purecontext.md) | The full case beyond token savings |
45
+ | [Navigating a New Codebase](guide/navigating-new-code.md) | Day one on an unfamiliar project |
46
+ | [Finding Code](guide/finding-code.md) | Three search modes with examples |
47
+ | [Making Changes Safely](guide/safe-changes.md) | Blast radius and dependency analysis |
48
+ | [Understanding Code History](guide/code-history.md) | Symbol-level git history and churn |
49
+ | [The Web UI](guide/web-ui.md) | Visual graph, heatmap, symbol timeline |
50
+ | [AI Summaries](guide/ai-summaries.md) | Better search on undocumented codebases |
51
+ | [Code Health & Architecture Analysis](guide/code-health.md) | Quality metrics, anti-patterns, arch docs |
52
+ | [Using PureContext with a Team](guide/team-setup.md) | Shared server, enterprise setup |
53
+
54
+ **Real-world workflows:**
55
+
56
+ | | |
57
+ |-|-|
58
+ | [Onboarding to a New Codebase](guide/workflow-onboarding.md) | First day on a 6,000-file microservices platform |
59
+ | [Refactoring Legacy Code](guide/workflow-refactoring.md) | Replacing auth in a 6-year-old Django monolith |
60
+ | [Reviewing a Pull Request](guide/workflow-pr-review.md) | 40-file PR, 45 minutes, two real bugs found |
61
+
62
+ → [Full guide index](guide/README.md)
63
+
64
+ ### Reference Manual
65
+
66
+ Parameter-level documentation for every tool, configuration option, language, framework adapter, and deployment option.
67
+
68
+ | | |
69
+ |-|-|
70
+ | [MCP Tools Reference](docs/06-tools-reference.md) | Every tool: inputs, outputs, examples |
71
+ | [Configuration](docs/04-configuration.md) | Full config.json schema |
72
+ | [Language Support](docs/07-language-support.md) | All 34 languages |
73
+ | [Framework Adapters](docs/08-framework-adapters.md) | Vue, React, Django, Spring, and 20+ more |
74
+ | [CLI Reference](docs/05-cli-reference.md) | Every command and flag |
75
+ | [Team Setup](docs/15-team-setup.md) | Admin API, workspaces, keys |
76
+ | [Docker Deployment](docs/16-docker.md) | Containers, volumes, reverse proxy |
77
+ | [Troubleshooting](docs/26-troubleshooting.md) | Common errors and fixes |
78
+
79
+ [Full reference index](docs/README.md)
80
+
81
+ ---
82
+
83
+ ## What it indexes
84
+
85
+ **34 languages** including TypeScript, JavaScript, Python, Go, Rust, Java, C#, PHP, Ruby, Kotlin, Swift, Dart, C, C++, Elixir, Haskell, Scala, R, Bash, Terraform, Protobuf, GraphQL, SQL, and more.
86
+
87
+ **Framework-aware extraction** for Vue, React, Nuxt, Next.js, Angular, NestJS, Express, Fastify, Django, FastAPI, Flask, Gin, Rails, Laravel, Spring Boot, and more. Routes, components, hooks, models, and middleware are extracted as first-class symbols.
88
+
89
+ ---
90
+
91
+ ## Installation
92
+
93
+ **Requirements:** Node.js 18, 20, or 22. Prebuilt binaries included for Windows, macOS, and Linux — no native compilation needed.
94
+
95
+ ### Claude Code
96
+
97
+ ```bash
98
+ claude mcp add purecontext-mcp -- npx purecontext-mcp
99
+ ```
100
+
101
+ ### Claude Desktop
102
+
103
+ Edit `~/.claude/claude_desktop_config.json`:
104
+
105
+ ```json
106
+ {
107
+ "mcpServers": {
108
+ "purecontext": {
109
+ "command": "npx",
110
+ "args": ["purecontext-mcp"]
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ ### Cursor
117
+
118
+ Create `.cursor/mcp.json` in your project (or `~/.cursor/mcp.json` for global):
119
+
120
+ ```json
121
+ {
122
+ "mcpServers": {
123
+ "purecontext": {
124
+ "command": "npx",
125
+ "args": ["purecontext-mcp"]
126
+ }
127
+ }
128
+ }
129
+ ```
130
+
131
+ ### Windsurf
132
+
133
+ Open Windsurf Settings MCP section, or edit the MCP config file directly:
134
+
135
+ ```json
136
+ {
137
+ "mcpServers": {
138
+ "purecontext": {
139
+ "command": "npx",
140
+ "args": ["purecontext-mcp"]
141
+ }
142
+ }
143
+ }
144
+ ```
145
+
146
+ ### VS Code
147
+
148
+ Create `.vscode/mcp.json` in your project:
149
+
150
+ ```json
151
+ {
152
+ "servers": {
153
+ "purecontext": {
154
+ "type": "stdio",
155
+ "command": "npx",
156
+ "args": ["purecontext-mcp"]
157
+ }
158
+ }
159
+ }
160
+ ```
161
+
162
+ ### Shared team server (HTTP)
163
+
164
+ If your team runs a shared PureContext server, connect with an HTTP transport instead:
165
+
166
+ ```json
167
+ {
168
+ "mcpServers": {
169
+ "purecontext": {
170
+ "transport": "http",
171
+ "url": "https://purecontext.yourcompany.com/mcp/sse",
172
+ "headers": {
173
+ "Authorization": "Bearer pctx_yourpersonalkey"
174
+ }
175
+ }
176
+ }
177
+ }
178
+ ```
179
+
180
+ → [Full installation guide](docs/02-installation.md)
181
+
182
+ ---
183
+
184
+ ## Teaching your AI agent to use PureContext well
185
+
186
+ Installing PureContext gives your agent the tools. Adding the agent instructions tells it *how* to use them which tool to pick for each task, in what order, and what to avoid.
187
+
188
+ Two instruction files are provided at the repository root:
189
+
190
+ **`AGENT_INSTRUCTIONS_SHORT.md`** — ~2 KB. The mandatory workflow, tool selection table, core rules, and common patterns. Use this for agents with limited system prompt space.
191
+
192
+ **`AGENT_INSTRUCTIONS.md`** — ~15 KB. Adds detailed parameter notes, every usage pattern, decision trees, and anti-patterns. Use this for complex multi-step workflows.
193
+
194
+ **Claude Code** — add to your project's `CLAUDE.md`:
195
+
196
+ ```bash
197
+ cat AGENT_INSTRUCTIONS_SHORT.md >> CLAUDE.md
198
+ ```
199
+
200
+ **Cursor** paste into `.cursorrules` or via Cursor Settings → Rules.
201
+
202
+ **Windsurf** — paste into your workspace memory or rules configuration.
203
+
204
+ **Any other agent** — paste into whatever system prompt or memory configuration it supports.
205
+
206
+ Without these instructions, an agent may default to reading entire files rather than using `search_symbols`, or may not know to call `list_repos` first to get the repository ID required by every tool.
@@ -23,4 +23,41 @@ export declare function cmdCheck(): boolean;
23
23
  * Print the effective configuration (defaults merged with config.json) as JSON.
24
24
  */
25
25
  export declare function cmdShow(): void;
26
+ /**
27
+ * `purecontext-mcp export --repo <path> --out <bundle.pcx>`
28
+ * Export a repo's index to a portable .pcx bundle.
29
+ */
30
+ export declare function cmdExport(cliArgs: string[]): Promise<void>;
31
+ /**
32
+ * `purecontext-mcp import --bundle <bundle.pcx> [--repo <path>]`
33
+ * Import a .pcx bundle into the local index store.
34
+ */
35
+ export declare function cmdImport(cliArgs: string[]): Promise<void>;
36
+ /**
37
+ * `purecontext-mcp fetch <owner/repo> [--version <tag>] [--force]`
38
+ * Download and import a pre-built index from the public registry.
39
+ */
40
+ export declare function cmdFetch(cliArgs: string[]): Promise<void>;
41
+ /**
42
+ * `purecontext-mcp index-folder --path <dir>`
43
+ * Index a local project folder (used by CI pipelines and the GitHub Actions action).
44
+ */
45
+ export declare function cmdIndexFolder(cliArgs: string[]): Promise<void>;
46
+ /**
47
+ * `purecontext-mcp analyze-diff --diff <patch> [--diff-file <path>] [--repo <path>]`
48
+ * Parse a unified git diff and print an impact analysis as JSON.
49
+ * Exits non-zero when reviewPriority is "critical".
50
+ */
51
+ export declare function cmdAnalyzeDiff(cliArgs: string[]): Promise<void>;
52
+ /**
53
+ * `purecontext-mcp detect-antipatterns [--repo <path>] [--fail-on-critical]`
54
+ * Scan an indexed repo for structural anti-patterns and print findings as JSON.
55
+ * With --fail-on-critical: exits non-zero if any error-severity findings exist.
56
+ */
57
+ export declare function cmdDetectAntipatterns(cliArgs: string[]): Promise<void>;
58
+ /**
59
+ * `purecontext-mcp list-public`
60
+ * List all pre-built indexes available in the public registry.
61
+ */
62
+ export declare function cmdListPublic(): Promise<void>;
26
63
  //# sourceMappingURL=cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/config/cli.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B7C;AA8BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA4C,GAAG,OAAO,CA8ExG;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAoElC;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAG9B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/config/cli.ts"],"names":[],"mappings":"AAmEA;;;;;GAKG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B7C;AA8BD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAA4C,GAAG,OAAO,CA8ExG;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,IAAI,OAAO,CAoElC;AAED;;;GAGG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAG9B;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ChE;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhE;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/D;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQrE;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsCrE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB5E;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA4BnD"}