mdcontext 0.0.1 → 0.2.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 (337) hide show
  1. package/.changeset/README.md +28 -0
  2. package/.changeset/config.json +11 -0
  3. package/.claude/settings.local.json +25 -0
  4. package/.github/workflows/ci.yml +83 -0
  5. package/.github/workflows/claude-code-review.yml +44 -0
  6. package/.github/workflows/claude.yml +85 -0
  7. package/.github/workflows/release.yml +113 -0
  8. package/.tldrignore +112 -0
  9. package/BACKLOG.md +338 -0
  10. package/CONTRIBUTING.md +186 -0
  11. package/NOTES/NOTES +44 -0
  12. package/README.md +434 -11
  13. package/biome.json +36 -0
  14. package/cspell.config.yaml +14 -0
  15. package/dist/chunk-23UPXDNL.js +3044 -0
  16. package/dist/chunk-2W7MO2DL.js +1366 -0
  17. package/dist/chunk-3NUAZGMA.js +1689 -0
  18. package/dist/chunk-7TOWB2XB.js +366 -0
  19. package/dist/chunk-7XOTOADQ.js +3065 -0
  20. package/dist/chunk-AH2PDM2K.js +3042 -0
  21. package/dist/chunk-BNXWSZ63.js +3742 -0
  22. package/dist/chunk-BTL5DJVU.js +3222 -0
  23. package/dist/chunk-HDHYG7E4.js +104 -0
  24. package/dist/chunk-HLR4KZBP.js +3234 -0
  25. package/dist/chunk-IP3FRFEB.js +1045 -0
  26. package/dist/chunk-KHU56VDO.js +3042 -0
  27. package/dist/chunk-KRYIFLQR.js +88 -0
  28. package/dist/chunk-LBSDNLEM.js +287 -0
  29. package/dist/chunk-MNTQ7HCP.js +2643 -0
  30. package/dist/chunk-MUJELQQ6.js +1387 -0
  31. package/dist/chunk-MXJGMSLV.js +2199 -0
  32. package/dist/chunk-N6QJGC3Z.js +2636 -0
  33. package/dist/chunk-OBELGBPM.js +1713 -0
  34. package/dist/chunk-OT7R5XTA.js +3192 -0
  35. package/dist/chunk-P7X4RA2T.js +106 -0
  36. package/dist/chunk-PIDUQNC2.js +3185 -0
  37. package/dist/chunk-POGCDIH4.js +3187 -0
  38. package/dist/chunk-PSIEOQGZ.js +3043 -0
  39. package/dist/chunk-PVRT3IHA.js +3238 -0
  40. package/dist/chunk-QNN4TT23.js +1430 -0
  41. package/dist/chunk-RE3R45RJ.js +3042 -0
  42. package/dist/chunk-S7E6TFX6.js +803 -0
  43. package/dist/chunk-SG6GLU4U.js +1378 -0
  44. package/dist/chunk-SJCDV2ST.js +274 -0
  45. package/dist/chunk-SYE5XLF3.js +104 -0
  46. package/dist/chunk-T5VLYBZD.js +103 -0
  47. package/dist/chunk-TOQB7VWU.js +3238 -0
  48. package/dist/chunk-VFNMZ4ZQ.js +3228 -0
  49. package/dist/chunk-VVTGZNBT.js +1629 -0
  50. package/dist/chunk-W7Q4RFEV.js +104 -0
  51. package/dist/chunk-XTYYVRLO.js +3190 -0
  52. package/dist/chunk-Y6MDYVJD.js +3063 -0
  53. package/dist/cli/main.d.ts +1 -0
  54. package/dist/cli/main.js +5458 -0
  55. package/dist/index.d.ts +653 -0
  56. package/dist/index.js +79 -0
  57. package/dist/mcp/server.d.ts +1 -0
  58. package/dist/mcp/server.js +472 -0
  59. package/dist/schema-BAWSG7KY.js +22 -0
  60. package/dist/schema-E3QUPL26.js +20 -0
  61. package/dist/schema-EHL7WUT6.js +20 -0
  62. package/docs/019-USAGE.md +625 -0
  63. package/docs/020-current-implementation.md +364 -0
  64. package/docs/021-DOGFOODING-FINDINGS.md +175 -0
  65. package/docs/BACKLOG.md +80 -0
  66. package/docs/CONFIG.md +1123 -0
  67. package/docs/DESIGN.md +439 -0
  68. package/docs/ERRORS.md +383 -0
  69. package/docs/PROJECT.md +88 -0
  70. package/docs/ROADMAP.md +407 -0
  71. package/docs/summarization.md +320 -0
  72. package/docs/test-links.md +9 -0
  73. package/justfile +40 -0
  74. package/package.json +74 -9
  75. package/pnpm-workspace.yaml +5 -0
  76. package/research/INDEX.md +315 -0
  77. package/research/code-review/README.md +90 -0
  78. package/research/code-review/cli-error-handling-review.md +979 -0
  79. package/research/code-review/code-review-validation-report.md +464 -0
  80. package/research/code-review/main-ts-review.md +1128 -0
  81. package/research/config-analysis/01-current-implementation.md +470 -0
  82. package/research/config-analysis/02-strategy-recommendation.md +428 -0
  83. package/research/config-analysis/03-task-candidates.md +715 -0
  84. package/research/config-analysis/033-research-configuration-management.md +828 -0
  85. package/research/config-analysis/034-research-effect-cli-config.md +1504 -0
  86. package/research/config-analysis/04-consolidated-task-candidates.md +277 -0
  87. package/research/config-docs/SUMMARY.md +357 -0
  88. package/research/config-docs/TEST-RESULTS.md +776 -0
  89. package/research/config-docs/TODO.md +542 -0
  90. package/research/config-docs/analysis.md +744 -0
  91. package/research/config-docs/fix-validation.md +502 -0
  92. package/research/config-docs/help-audit.md +264 -0
  93. package/research/config-docs/help-system-analysis.md +890 -0
  94. package/research/dogfood/consolidated-tool-evaluation.md +373 -0
  95. package/research/dogfood/strategy-a/a-synthesis.md +184 -0
  96. package/research/dogfood/strategy-a/a1-docs.md +226 -0
  97. package/research/dogfood/strategy-a/a2-amorphic.md +156 -0
  98. package/research/dogfood/strategy-a/a3-llm.md +164 -0
  99. package/research/dogfood/strategy-b/b-synthesis.md +228 -0
  100. package/research/dogfood/strategy-b/b1-architecture.md +207 -0
  101. package/research/dogfood/strategy-b/b2-gaps.md +258 -0
  102. package/research/dogfood/strategy-b/b3-workflows.md +250 -0
  103. package/research/dogfood/strategy-c/c-synthesis.md +451 -0
  104. package/research/dogfood/strategy-c/c1-explorer.md +192 -0
  105. package/research/dogfood/strategy-c/c2-diver-memory.md +145 -0
  106. package/research/dogfood/strategy-c/c3-diver-control.md +148 -0
  107. package/research/dogfood/strategy-c/c4-diver-failure.md +151 -0
  108. package/research/dogfood/strategy-c/c5-diver-execution.md +221 -0
  109. package/research/dogfood/strategy-c/c6-diver-org.md +221 -0
  110. package/research/effect-cli-error-handling.md +845 -0
  111. package/research/effect-errors-as-values.md +943 -0
  112. package/research/errors-task-analysis/00-consolidated-tasks.md +207 -0
  113. package/research/errors-task-analysis/cli-commands-analysis.md +909 -0
  114. package/research/errors-task-analysis/embeddings-analysis.md +709 -0
  115. package/research/errors-task-analysis/index-search-analysis.md +812 -0
  116. package/research/frontmatter/COMMENTS-ARE-SKIPPED.md +149 -0
  117. package/research/frontmatter/LLM-CODE-NAVIGATION.md +276 -0
  118. package/research/issue-review.md +603 -0
  119. package/research/llm-summarization/agent-cli-tools-2026.md +1082 -0
  120. package/research/llm-summarization/alternative-providers-2026.md +1428 -0
  121. package/research/llm-summarization/anthropic-2026.md +367 -0
  122. package/research/llm-summarization/claude-cli-integration.md +1706 -0
  123. package/research/llm-summarization/cli-integration-patterns.md +3155 -0
  124. package/research/llm-summarization/openai-2026.md +473 -0
  125. package/research/llm-summarization/openai-compatible-providers-2026.md +1022 -0
  126. package/research/llm-summarization/opencode-cli-integration.md +1552 -0
  127. package/research/llm-summarization/prompt-engineering-2026.md +1426 -0
  128. package/research/llm-summarization/prototype-results.md +56 -0
  129. package/research/llm-summarization/provider-switching-patterns-2026.md +2153 -0
  130. package/research/llm-summarization/typescript-llm-libraries-2026.md +2436 -0
  131. package/research/mdcontext-error-analysis.md +521 -0
  132. package/research/mdcontext-pudding/00-EXECUTIVE-SUMMARY.md +282 -0
  133. package/research/mdcontext-pudding/01-index-embed.md +956 -0
  134. package/research/mdcontext-pudding/02-search-COMMANDS.md +142 -0
  135. package/research/mdcontext-pudding/02-search-SUMMARY.md +146 -0
  136. package/research/mdcontext-pudding/02-search.md +970 -0
  137. package/research/mdcontext-pudding/03-context.md +779 -0
  138. package/research/mdcontext-pudding/04-navigation-and-analytics.md +803 -0
  139. package/research/mdcontext-pudding/04-tree.md +704 -0
  140. package/research/mdcontext-pudding/05-config.md +1038 -0
  141. package/research/mdcontext-pudding/06-links-summary.txt +87 -0
  142. package/research/mdcontext-pudding/06-links.md +679 -0
  143. package/research/mdcontext-pudding/07-stats.md +693 -0
  144. package/research/mdcontext-pudding/BUG-FIX-PLAN.md +388 -0
  145. package/research/mdcontext-pudding/P0-BUG-VALIDATION.md +167 -0
  146. package/research/mdcontext-pudding/README.md +168 -0
  147. package/research/mdcontext-pudding/TESTING-SUMMARY.md +128 -0
  148. package/research/npm_publish/011-npm-workflow-research-agent2.md +792 -0
  149. package/research/npm_publish/012-npm-workflow-research-agent1.md +530 -0
  150. package/research/npm_publish/013-npm-workflow-research-agent3.md +722 -0
  151. package/research/npm_publish/014-npm-workflow-synthesis.md +556 -0
  152. package/research/npm_publish/031-npm-workflow-task-analysis.md +134 -0
  153. package/research/research-quality-review.md +834 -0
  154. package/research/semantic-search/002-research-embedding-models.md +490 -0
  155. package/research/semantic-search/003-research-rag-alternatives.md +523 -0
  156. package/research/semantic-search/004-research-vector-search.md +841 -0
  157. package/research/semantic-search/032-research-semantic-search.md +427 -0
  158. package/research/semantic-search/embedding-text-analysis.md +156 -0
  159. package/research/semantic-search/multi-word-failure-reproduction.md +171 -0
  160. package/research/semantic-search/query-processing-analysis.md +207 -0
  161. package/research/semantic-search/root-cause-and-solution.md +114 -0
  162. package/research/semantic-search/threshold-validation-report.md +69 -0
  163. package/research/semantic-search/vector-search-analysis.md +63 -0
  164. package/research/task-management-2026/00-synthesis-recommendations.md +295 -0
  165. package/research/task-management-2026/01-ai-workflow-tools.md +416 -0
  166. package/research/task-management-2026/02-agent-framework-patterns.md +476 -0
  167. package/research/task-management-2026/03-lightweight-file-based.md +567 -0
  168. package/research/task-management-2026/04-established-tools-ai-features.md +541 -0
  169. package/research/task-management-2026/linear/01-core-features-workflow.md +771 -0
  170. package/research/task-management-2026/linear/02-api-integrations.md +930 -0
  171. package/research/task-management-2026/linear/03-ai-features.md +368 -0
  172. package/research/task-management-2026/linear/04-pricing-setup.md +205 -0
  173. package/research/task-management-2026/linear/05-usage-patterns-best-practices.md +605 -0
  174. package/research/test-path-issues.md +276 -0
  175. package/review/ALP-76/1-error-type-design.md +962 -0
  176. package/review/ALP-76/2-error-handling-patterns.md +906 -0
  177. package/review/ALP-76/3-error-presentation.md +624 -0
  178. package/review/ALP-76/4-test-coverage.md +625 -0
  179. package/review/ALP-76/5-migration-completeness.md +440 -0
  180. package/review/ALP-76/6-effect-best-practices.md +755 -0
  181. package/scripts/apply-branch-protection.sh +47 -0
  182. package/scripts/branch-protection-templates.json +79 -0
  183. package/scripts/prototype-summarization.ts +346 -0
  184. package/scripts/rebuild-hnswlib.js +58 -0
  185. package/scripts/setup-branch-protection.sh +64 -0
  186. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/active-provider.json +7 -0
  187. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.json +541 -0
  188. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.meta.json +5 -0
  189. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/config.json +8 -0
  190. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  191. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  192. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/documents.json +60 -0
  193. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/links.json +13 -0
  194. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/sections.json +1197 -0
  195. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/configuration-management.md +99 -0
  196. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/distributed-systems.md +92 -0
  197. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/error-handling.md +78 -0
  198. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/failure-automation.md +55 -0
  199. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/job-context.md +69 -0
  200. package/src/__tests__/fixtures/semantic-search/multi-word-corpus/process-orchestration.md +99 -0
  201. package/src/cli/argv-preprocessor.test.ts +210 -0
  202. package/src/cli/argv-preprocessor.ts +202 -0
  203. package/src/cli/cli.test.ts +627 -0
  204. package/src/cli/commands/backlinks.ts +54 -0
  205. package/src/cli/commands/config-cmd.ts +642 -0
  206. package/src/cli/commands/context.ts +285 -0
  207. package/src/cli/commands/duplicates.ts +122 -0
  208. package/src/cli/commands/embeddings.ts +529 -0
  209. package/src/cli/commands/index-cmd.ts +480 -0
  210. package/src/cli/commands/index.ts +16 -0
  211. package/src/cli/commands/links.ts +52 -0
  212. package/src/cli/commands/search.ts +1281 -0
  213. package/src/cli/commands/stats.ts +149 -0
  214. package/src/cli/commands/tree.ts +128 -0
  215. package/src/cli/config-layer.ts +176 -0
  216. package/src/cli/error-handler.test.ts +235 -0
  217. package/src/cli/error-handler.ts +655 -0
  218. package/src/cli/flag-schemas.ts +341 -0
  219. package/src/cli/help.ts +588 -0
  220. package/src/cli/index.ts +9 -0
  221. package/src/cli/main.ts +435 -0
  222. package/src/cli/options.ts +41 -0
  223. package/src/cli/shared-error-handling.ts +199 -0
  224. package/src/cli/typo-suggester.test.ts +105 -0
  225. package/src/cli/typo-suggester.ts +130 -0
  226. package/src/cli/utils.ts +259 -0
  227. package/src/config/file-provider.test.ts +320 -0
  228. package/src/config/file-provider.ts +273 -0
  229. package/src/config/index.ts +72 -0
  230. package/src/config/integration.test.ts +667 -0
  231. package/src/config/precedence.test.ts +277 -0
  232. package/src/config/precedence.ts +451 -0
  233. package/src/config/schema.test.ts +414 -0
  234. package/src/config/schema.ts +603 -0
  235. package/src/config/service.test.ts +320 -0
  236. package/src/config/service.ts +243 -0
  237. package/src/config/testing.test.ts +264 -0
  238. package/src/config/testing.ts +110 -0
  239. package/src/core/index.ts +1 -0
  240. package/src/core/types.ts +113 -0
  241. package/src/duplicates/detector.test.ts +183 -0
  242. package/src/duplicates/detector.ts +414 -0
  243. package/src/duplicates/index.ts +18 -0
  244. package/src/embeddings/embedding-namespace.test.ts +300 -0
  245. package/src/embeddings/embedding-namespace.ts +947 -0
  246. package/src/embeddings/heading-boost.test.ts +222 -0
  247. package/src/embeddings/hnsw-build-options.test.ts +198 -0
  248. package/src/embeddings/hyde.test.ts +272 -0
  249. package/src/embeddings/hyde.ts +264 -0
  250. package/src/embeddings/index.ts +10 -0
  251. package/src/embeddings/openai-provider.ts +414 -0
  252. package/src/embeddings/pricing.json +22 -0
  253. package/src/embeddings/provider-constants.ts +204 -0
  254. package/src/embeddings/provider-errors.test.ts +967 -0
  255. package/src/embeddings/provider-errors.ts +565 -0
  256. package/src/embeddings/provider-factory.test.ts +240 -0
  257. package/src/embeddings/provider-factory.ts +225 -0
  258. package/src/embeddings/provider-integration.test.ts +788 -0
  259. package/src/embeddings/query-preprocessing.test.ts +187 -0
  260. package/src/embeddings/semantic-search-threshold.test.ts +508 -0
  261. package/src/embeddings/semantic-search.ts +1270 -0
  262. package/src/embeddings/types.ts +359 -0
  263. package/src/embeddings/vector-store.ts +708 -0
  264. package/src/embeddings/voyage-provider.ts +313 -0
  265. package/src/errors/errors.test.ts +845 -0
  266. package/src/errors/index.ts +533 -0
  267. package/src/index/ignore-patterns.test.ts +354 -0
  268. package/src/index/ignore-patterns.ts +305 -0
  269. package/src/index/index.ts +4 -0
  270. package/src/index/indexer.ts +684 -0
  271. package/src/index/storage.ts +260 -0
  272. package/src/index/types.ts +147 -0
  273. package/src/index/watcher.ts +189 -0
  274. package/src/index.ts +30 -0
  275. package/src/integration/search-keyword.test.ts +678 -0
  276. package/src/mcp/server.ts +612 -0
  277. package/src/parser/index.ts +1 -0
  278. package/src/parser/parser.test.ts +291 -0
  279. package/src/parser/parser.ts +394 -0
  280. package/src/parser/section-filter.test.ts +277 -0
  281. package/src/parser/section-filter.ts +392 -0
  282. package/src/search/__tests__/hybrid-search.test.ts +650 -0
  283. package/src/search/bm25-store.ts +366 -0
  284. package/src/search/cross-encoder.test.ts +253 -0
  285. package/src/search/cross-encoder.ts +406 -0
  286. package/src/search/fuzzy-search.test.ts +419 -0
  287. package/src/search/fuzzy-search.ts +273 -0
  288. package/src/search/hybrid-search.ts +448 -0
  289. package/src/search/path-matcher.test.ts +276 -0
  290. package/src/search/path-matcher.ts +33 -0
  291. package/src/search/query-parser.test.ts +260 -0
  292. package/src/search/query-parser.ts +319 -0
  293. package/src/search/searcher.test.ts +280 -0
  294. package/src/search/searcher.ts +724 -0
  295. package/src/search/wink-bm25.d.ts +30 -0
  296. package/src/summarization/cli-providers/claude.ts +202 -0
  297. package/src/summarization/cli-providers/detection.test.ts +273 -0
  298. package/src/summarization/cli-providers/detection.ts +118 -0
  299. package/src/summarization/cli-providers/index.ts +8 -0
  300. package/src/summarization/cost.test.ts +139 -0
  301. package/src/summarization/cost.ts +102 -0
  302. package/src/summarization/error-handler.test.ts +127 -0
  303. package/src/summarization/error-handler.ts +111 -0
  304. package/src/summarization/index.ts +102 -0
  305. package/src/summarization/pipeline.test.ts +498 -0
  306. package/src/summarization/pipeline.ts +231 -0
  307. package/src/summarization/prompts.test.ts +269 -0
  308. package/src/summarization/prompts.ts +133 -0
  309. package/src/summarization/provider-factory.test.ts +396 -0
  310. package/src/summarization/provider-factory.ts +178 -0
  311. package/src/summarization/types.ts +184 -0
  312. package/src/summarize/budget-bugs.test.ts +620 -0
  313. package/src/summarize/formatters.ts +419 -0
  314. package/src/summarize/index.ts +20 -0
  315. package/src/summarize/summarizer.test.ts +275 -0
  316. package/src/summarize/summarizer.ts +597 -0
  317. package/src/summarize/verify-bugs.test.ts +238 -0
  318. package/src/types/huggingface-transformers.d.ts +66 -0
  319. package/src/utils/index.ts +1 -0
  320. package/src/utils/tokens.test.ts +142 -0
  321. package/src/utils/tokens.ts +186 -0
  322. package/tests/fixtures/cli/.mdcontext/active-provider.json +7 -0
  323. package/tests/fixtures/cli/.mdcontext/config.json +8 -0
  324. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
  325. package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
  326. package/tests/fixtures/cli/.mdcontext/indexes/documents.json +33 -0
  327. package/tests/fixtures/cli/.mdcontext/indexes/links.json +12 -0
  328. package/tests/fixtures/cli/.mdcontext/indexes/sections.json +247 -0
  329. package/tests/fixtures/cli/README.md +9 -0
  330. package/tests/fixtures/cli/api-reference.md +11 -0
  331. package/tests/fixtures/cli/getting-started.md +11 -0
  332. package/tests/integration/embed-index.test.ts +712 -0
  333. package/tests/integration/search-context.test.ts +469 -0
  334. package/tests/integration/search-semantic.test.ts +522 -0
  335. package/tsconfig.json +26 -0
  336. package/vitest.config.ts +16 -0
  337. package/vitest.setup.ts +12 -0
@@ -0,0 +1,625 @@
1
+ # mdcontext Usage Guide
2
+
3
+ Complete command reference and workflows for mdcontext.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Quick Start](#quick-start)
9
+ - [Commands](#commands)
10
+ - [index](#index)
11
+ - [search](#search)
12
+ - [context](#context)
13
+ - [tree](#tree)
14
+ - [links](#links)
15
+ - [backlinks](#backlinks)
16
+ - [stats](#stats)
17
+ - [MCP Server](#mcp-server)
18
+ - [Workflows](#workflows)
19
+ - [Configuration](#configuration)
20
+
21
+ ---
22
+
23
+ ## Installation
24
+
25
+ ```bash
26
+ # Global install
27
+ npm install -g mdcontext
28
+
29
+ # Or use npx
30
+ npx mdcontext --help
31
+ ```
32
+
33
+ **Requirements:**
34
+
35
+ - Node.js 18+
36
+ - Embedding provider for semantic search (see [CONFIG.md](./CONFIG.md) for options):
37
+ - OpenAI or OpenRouter (cloud, requires API key)
38
+ - Ollama or LM Studio (free, local, no API key needed)
39
+
40
+ ---
41
+
42
+ ## Quick Start
43
+
44
+ ```bash
45
+ # 1. Index your markdown files
46
+ mdcontext index ./docs
47
+
48
+ # 2. View structure
49
+ mdcontext tree ./docs # File list
50
+ mdcontext tree ./docs/README.md # Document outline
51
+
52
+ # 3. Get LLM-ready context
53
+ mdcontext context ./docs/README.md
54
+
55
+ # 4. Enable semantic search (optional)
56
+ # Choose ONE provider:
57
+
58
+ # Option A: OpenAI (cloud, requires API key)
59
+ export OPENAI_API_KEY=sk-...
60
+ mdcontext index --embed
61
+
62
+ # Option B: Ollama (free, local, no API key needed)
63
+ ollama serve && ollama pull nomic-embed-text
64
+ mdcontext index --embed --provider ollama --provider-model nomic-embed-text
65
+
66
+ # Option C: LM Studio (free, local, no API key needed)
67
+ # Start LM Studio, load an embedding model, then:
68
+ mdcontext index --embed --provider lm-studio
69
+
70
+ # Then search by meaning:
71
+ mdcontext search "how to authenticate"
72
+ ```
73
+
74
+ ---
75
+
76
+ ## Commands
77
+
78
+ ### index
79
+
80
+ Build or update the document index. Run this first before using other commands.
81
+
82
+ ```bash
83
+ mdcontext index [path] [options]
84
+ ```
85
+
86
+ **Arguments:**
87
+
88
+ | Argument | Description |
89
+ | -------- | ----------------------------------------------- |
90
+ | `path` | Directory to index (default: current directory) |
91
+
92
+ **Options:**
93
+
94
+ | Option | Description |
95
+ | ------------- | --------------------------------- |
96
+ | `-e, --embed` | Also build semantic embeddings |
97
+ | `-w, --watch` | Watch for file changes |
98
+ | `--force` | Force full rebuild (ignore cache) |
99
+ | `--json` | Output as JSON |
100
+ | `--pretty` | Pretty-print JSON |
101
+
102
+ **Examples:**
103
+
104
+ ```bash
105
+ # Index current directory
106
+ mdcontext index
107
+
108
+ # Index specific directory
109
+ mdcontext index ./docs
110
+
111
+ # Index with embeddings for semantic search
112
+ mdcontext index --embed
113
+
114
+ # Watch mode for development
115
+ mdcontext index --watch
116
+
117
+ # Force rebuild
118
+ mdcontext index --force
119
+ ```
120
+
121
+ **Index location:** `.mdcontext/indexes/`
122
+
123
+ ---
124
+
125
+ ### search
126
+
127
+ Search by meaning (semantic) or by structure (heading patterns).
128
+
129
+ ```bash
130
+ mdcontext search [options] <query> [path]
131
+ ```
132
+
133
+ **Arguments:**
134
+
135
+ | Argument | Description |
136
+ | -------- | --------------------------------------------------- |
137
+ | `query` | Search query (natural language or regex pattern) |
138
+ | `path` | Directory to search in (default: current directory) |
139
+
140
+ **Options:**
141
+
142
+ | Option | Description |
143
+ | --------------- | ---------------------------------------------- |
144
+ | `-k, --keyword` | Force keyword search (exact text match) |
145
+ | `-n, --limit` | Maximum results (default: 10) |
146
+ | `--threshold` | Similarity threshold for semantic search (0-1) |
147
+ | `--json` | Output as JSON |
148
+ | `--pretty` | Pretty-print JSON |
149
+
150
+ **Auto-detection:**
151
+
152
+ - If embeddings exist AND query looks like natural language: semantic search
153
+ - If query has regex characters OR `-k` flag: keyword search
154
+
155
+ **Examples:**
156
+
157
+ ```bash
158
+ # Semantic search (if embeddings exist)
159
+ mdcontext search "how to authenticate"
160
+
161
+ # Keyword search (exact text match)
162
+ mdcontext search -k "Setup|Install"
163
+
164
+ # Limit results
165
+ mdcontext search -n 5 "api"
166
+
167
+ # Higher similarity threshold
168
+ mdcontext search --threshold 0.8 "deploy"
169
+
170
+ # Search in specific directory
171
+ mdcontext search "config" ./docs
172
+ ```
173
+
174
+ ---
175
+
176
+ ### context
177
+
178
+ Get LLM-ready context from one or more files.
179
+
180
+ ```bash
181
+ mdcontext context [options] <files...>
182
+ ```
183
+
184
+ **Arguments:**
185
+
186
+ | Argument | Description |
187
+ | ---------- | ---------------------------------------------------- |
188
+ | `files...` | One or more markdown files (glob patterns supported) |
189
+
190
+ **Options:**
191
+
192
+ | Option | Description |
193
+ | -------------- | ---------------------------- |
194
+ | `-t, --tokens` | Token budget |
195
+ | `--brief` | Minimal output (~100 tokens) |
196
+ | `--full` | Include full content |
197
+ | `--json` | Output as JSON |
198
+ | `--pretty` | Pretty-print JSON |
199
+
200
+ **Examples:**
201
+
202
+ ```bash
203
+ # Single file
204
+ mdcontext context README.md
205
+
206
+ # Multiple files
207
+ mdcontext context README.md docs/api.md docs/setup.md
208
+
209
+ # Glob patterns
210
+ mdcontext context docs/*.md
211
+
212
+ # With token budget
213
+ mdcontext context -t 500 README.md
214
+
215
+ # Brief summary
216
+ mdcontext context --brief README.md
217
+
218
+ # Full content
219
+ mdcontext context --full README.md
220
+ ```
221
+
222
+ **Output includes:**
223
+
224
+ - Document title and path
225
+ - Section summaries (respecting token budget)
226
+ - Token count
227
+ - Metadata markers for code, tables, etc.
228
+
229
+ ---
230
+
231
+ ### tree
232
+
233
+ Display file structure or document outline.
234
+
235
+ ```bash
236
+ mdcontext tree [path] [options]
237
+ ```
238
+
239
+ **Arguments:**
240
+
241
+ | Argument | Description |
242
+ | -------- | ---------------------------------------------- |
243
+ | `path` | Directory or file (default: current directory) |
244
+
245
+ **Options:**
246
+
247
+ | Option | Description |
248
+ | ---------- | ----------------- |
249
+ | `--json` | Output as JSON |
250
+ | `--pretty` | Pretty-print JSON |
251
+
252
+ **Auto-detection:**
253
+
254
+ - If path is a directory: shows file list
255
+ - If path is a file: shows document outline (heading hierarchy)
256
+
257
+ **Examples:**
258
+
259
+ ```bash
260
+ # File list in current directory
261
+ mdcontext tree
262
+
263
+ # File list in specific directory
264
+ mdcontext tree ./docs
265
+
266
+ # Document outline
267
+ mdcontext tree README.md
268
+ ```
269
+
270
+ **Directory output:**
271
+
272
+ ```
273
+ docs/
274
+ ├── README.md (2,450 tokens)
275
+ ├── api/
276
+ │ ├── endpoints.md (1,200 tokens)
277
+ │ └── authentication.md (890 tokens)
278
+ └── guides/
279
+ └── getting-started.md (1,560 tokens)
280
+ ```
281
+
282
+ **File output:**
283
+
284
+ ```
285
+ # API Reference (450 tokens)
286
+ ## Authentication (120 tokens)
287
+ ### OAuth Flow (45 tokens)
288
+ ### API Keys (35 tokens)
289
+ ## Endpoints (280 tokens)
290
+ ### Users (95 tokens)
291
+ ### Products (105 tokens)
292
+ ```
293
+
294
+ ---
295
+
296
+ ### links
297
+
298
+ Show outgoing links from a file.
299
+
300
+ ```bash
301
+ mdcontext links <file> [options]
302
+ ```
303
+
304
+ **Arguments:**
305
+
306
+ | Argument | Description |
307
+ | -------- | ------------------------ |
308
+ | `file` | Markdown file to analyze |
309
+
310
+ **Options:**
311
+
312
+ | Option | Description |
313
+ | ------------ | ------------------------------------------- |
314
+ | `-r, --root` | Root directory for index (default: current) |
315
+ | `--json` | Output as JSON |
316
+ | `--pretty` | Pretty-print JSON |
317
+
318
+ **Example:**
319
+
320
+ ```bash
321
+ mdcontext links docs/README.md
322
+ ```
323
+
324
+ **Output:**
325
+
326
+ ```
327
+ Internal Links:
328
+ → ./getting-started.md (Getting Started)
329
+ → ./api/endpoints.md (API Reference)
330
+ → #installation (Installation)
331
+
332
+ External Links:
333
+ → https://github.com/example (GitHub)
334
+ ```
335
+
336
+ ---
337
+
338
+ ### backlinks
339
+
340
+ Show files that link to a specific file.
341
+
342
+ ```bash
343
+ mdcontext backlinks <file> [options]
344
+ ```
345
+
346
+ **Arguments:**
347
+
348
+ | Argument | Description |
349
+ | -------- | ------------------------------ |
350
+ | `file` | Markdown file to find links to |
351
+
352
+ **Options:**
353
+
354
+ | Option | Description |
355
+ | ------------ | ------------------------------------------- |
356
+ | `-r, --root` | Root directory for index (default: current) |
357
+ | `--json` | Output as JSON |
358
+ | `--pretty` | Pretty-print JSON |
359
+
360
+ **Example:**
361
+
362
+ ```bash
363
+ mdcontext backlinks docs/api/authentication.md
364
+ ```
365
+
366
+ **Output:**
367
+
368
+ ```
369
+ Files linking to docs/api/authentication.md:
370
+ ← docs/README.md (in section "Quick Start")
371
+ ← docs/guides/getting-started.md (in section "Authentication")
372
+ ```
373
+
374
+ ---
375
+
376
+ ### stats
377
+
378
+ Show index statistics.
379
+
380
+ ```bash
381
+ mdcontext stats [path] [options]
382
+ ```
383
+
384
+ **Arguments:**
385
+
386
+ | Argument | Description |
387
+ | -------- | ---------------------------------------------- |
388
+ | `path` | Directory to show stats for (default: current) |
389
+
390
+ **Options:**
391
+
392
+ | Option | Description |
393
+ | ---------- | ----------------- |
394
+ | `--json` | Output as JSON |
395
+ | `--pretty` | Pretty-print JSON |
396
+
397
+ **Example:**
398
+
399
+ ```bash
400
+ mdcontext stats
401
+ ```
402
+
403
+ **Output:**
404
+
405
+ ```
406
+ Index Statistics:
407
+ Documents: 23
408
+ Sections: 156
409
+ Total tokens: 45,230
410
+ Links: 89 (67 internal, 22 external)
411
+ Code blocks: 34
412
+ Embeddings: 156 (100%)
413
+ Last updated: 2024-01-15 10:30:00
414
+ ```
415
+
416
+ ---
417
+
418
+ ## MCP Server
419
+
420
+ mdcontext includes an MCP server for integration with AI assistants.
421
+
422
+ ### Starting the Server
423
+
424
+ ```bash
425
+ mdcontext-mcp
426
+ ```
427
+
428
+ ### Available Tools
429
+
430
+ | Tool | Description |
431
+ | -------------- | ---------------------------------------- |
432
+ | `md_search` | Semantic search across indexed documents |
433
+ | `md_context` | Get LLM-ready context for a file |
434
+ | `md_structure` | Get document structure/outline |
435
+
436
+ ### Claude Desktop Configuration
437
+
438
+ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
439
+
440
+ ```json
441
+ {
442
+ "mcpServers": {
443
+ "mdcontext": {
444
+ "command": "mdcontext-mcp",
445
+ "args": []
446
+ }
447
+ }
448
+ }
449
+ ```
450
+
451
+ ### Claude Code Configuration
452
+
453
+ Add to `.claude/settings.json`:
454
+
455
+ ```json
456
+ {
457
+ "mcpServers": {
458
+ "mdcontext": {
459
+ "command": "mdcontext-mcp",
460
+ "args": []
461
+ }
462
+ }
463
+ }
464
+ ```
465
+
466
+ ---
467
+
468
+ ## Workflows
469
+
470
+ ### Adding Documentation to LLM Context
471
+
472
+ ```bash
473
+ # 1. See what's available
474
+ mdcontext tree ./docs
475
+
476
+ # 2. Check document structure
477
+ mdcontext tree docs/api.md
478
+
479
+ # 3. Get context for specific file
480
+ mdcontext context -t 500 docs/api.md
481
+
482
+ # 4. Or combine multiple files
483
+ mdcontext context -t 2000 README.md docs/setup.md docs/api.md
484
+ ```
485
+
486
+ ### Finding Related Documentation
487
+
488
+ ```bash
489
+ # 1. See what a file links to
490
+ mdcontext links docs/README.md
491
+
492
+ # 2. See what links to a file
493
+ mdcontext backlinks docs/api/authentication.md
494
+
495
+ # 3. Use semantic search to find related content
496
+ mdcontext search "user authentication and session management"
497
+ ```
498
+
499
+ ### Keeping Index Updated
500
+
501
+ ```bash
502
+ # One-time index
503
+ mdcontext index
504
+
505
+ # Watch mode during development
506
+ mdcontext index --watch
507
+
508
+ # Force full rebuild after major changes
509
+ mdcontext index --force
510
+ ```
511
+
512
+ ### Setting Up Semantic Search
513
+
514
+ ```bash
515
+ # 1. Set API key
516
+ export OPENAI_API_KEY=sk-...
517
+
518
+ # 2. Build embeddings
519
+ mdcontext index --embed
520
+
521
+ # 3. Search by meaning
522
+ mdcontext search "how to handle authentication errors"
523
+ ```
524
+
525
+ ### Optimizing for Token Budget
526
+
527
+ ```bash
528
+ # Check document size
529
+ mdcontext tree docs/large-doc.md
530
+
531
+ # Get brief summary
532
+ mdcontext context docs/large-doc.md --brief
533
+
534
+ # Or set explicit budget
535
+ mdcontext context -t 200 docs/large-doc.md
536
+
537
+ # Combine multiple files with shared budget
538
+ mdcontext context -t 1000 a.md b.md c.md
539
+ ```
540
+
541
+ ---
542
+
543
+ ## Configuration
544
+
545
+ mdcontext supports a layered configuration system with files, environment variables, and CLI flags.
546
+
547
+ **Quick start:**
548
+
549
+ ```bash
550
+ # Create a config file
551
+ mdcontext config init
552
+
553
+ # Check current configuration
554
+ mdcontext config check
555
+ ```
556
+
557
+ **For full configuration documentation, see [CONFIG.md](./CONFIG.md).**
558
+
559
+ ### Index Directory
560
+
561
+ By default, indexes are stored in `.mdcontext/` in your project root:
562
+
563
+ ```
564
+ .mdcontext/
565
+ ├── indexes/
566
+ │ ├── documents.json # Document metadata
567
+ │ ├── sections.json # Section index
568
+ │ ├── links.json # Link graph
569
+ │ └── vectors.bin # Embeddings
570
+ └── cache/
571
+ └── parsed/ # Cached parsed documents
572
+ ```
573
+
574
+ ### Environment Variables
575
+
576
+ | Variable | Required | Description |
577
+ | -------------------- | --------------------------- | ------------------------------------ |
578
+ | `OPENAI_API_KEY` | For OpenAI provider | OpenAI API key (cloud provider) |
579
+ | `OPENROUTER_API_KEY` | For OpenRouter provider | OpenRouter API key (cloud provider) |
580
+ | N/A | Ollama / LM Studio | Local providers - no API key needed |
581
+
582
+ All configuration options can also be set via `MDCONTEXT_*` environment variables. See [CONFIG.md](./CONFIG.md#environment-variables) for the complete reference.
583
+
584
+ ### Supported File Types
585
+
586
+ - `.md` - Markdown
587
+ - `.mdx` - MDX (treated as markdown)
588
+
589
+ ### GFM Features Supported
590
+
591
+ - Tables
592
+ - Task lists (`- [ ]`, `- [x]`)
593
+ - Strikethrough
594
+ - Autolinks
595
+ - YAML frontmatter
596
+
597
+ ---
598
+
599
+ ## Troubleshooting
600
+
601
+ ### "No index found"
602
+
603
+ Run `mdcontext index` to build the index first.
604
+
605
+ ### "Semantic search not available"
606
+
607
+ 1. Set up an embedding provider:
608
+ - **OpenAI (cloud):** Set `OPENAI_API_KEY` environment variable
609
+ - **OpenRouter (cloud):** Set `OPENROUTER_API_KEY` environment variable
610
+ - **Ollama (free, local):** Run `ollama serve` (no API key needed)
611
+ - **LM Studio (free, local):** Start the server GUI (no API key needed)
612
+ 2. Run `mdcontext index --embed` to build embedding index
613
+ - For local providers: `mdcontext index --embed --provider ollama`
614
+ 3. See [CONFIG.md](./CONFIG.md) for detailed provider setup
615
+
616
+ ### "File not found in index"
617
+
618
+ 1. Check file is in indexed directory
619
+ 2. Run `mdcontext index --force` to rebuild
620
+
621
+ ### High token counts
622
+
623
+ - Use `--brief` for compressed output
624
+ - Use `-t <tokens>` to set explicit budget
625
+ - Use multiple files with shared budget via `context`