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.
- package/.changeset/README.md +28 -0
- package/.changeset/config.json +11 -0
- package/.claude/settings.local.json +25 -0
- package/.github/workflows/ci.yml +83 -0
- package/.github/workflows/claude-code-review.yml +44 -0
- package/.github/workflows/claude.yml +85 -0
- package/.github/workflows/release.yml +113 -0
- package/.tldrignore +112 -0
- package/BACKLOG.md +338 -0
- package/CONTRIBUTING.md +186 -0
- package/NOTES/NOTES +44 -0
- package/README.md +434 -11
- package/biome.json +36 -0
- package/cspell.config.yaml +14 -0
- package/dist/chunk-23UPXDNL.js +3044 -0
- package/dist/chunk-2W7MO2DL.js +1366 -0
- package/dist/chunk-3NUAZGMA.js +1689 -0
- package/dist/chunk-7TOWB2XB.js +366 -0
- package/dist/chunk-7XOTOADQ.js +3065 -0
- package/dist/chunk-AH2PDM2K.js +3042 -0
- package/dist/chunk-BNXWSZ63.js +3742 -0
- package/dist/chunk-BTL5DJVU.js +3222 -0
- package/dist/chunk-HDHYG7E4.js +104 -0
- package/dist/chunk-HLR4KZBP.js +3234 -0
- package/dist/chunk-IP3FRFEB.js +1045 -0
- package/dist/chunk-KHU56VDO.js +3042 -0
- package/dist/chunk-KRYIFLQR.js +88 -0
- package/dist/chunk-LBSDNLEM.js +287 -0
- package/dist/chunk-MNTQ7HCP.js +2643 -0
- package/dist/chunk-MUJELQQ6.js +1387 -0
- package/dist/chunk-MXJGMSLV.js +2199 -0
- package/dist/chunk-N6QJGC3Z.js +2636 -0
- package/dist/chunk-OBELGBPM.js +1713 -0
- package/dist/chunk-OT7R5XTA.js +3192 -0
- package/dist/chunk-P7X4RA2T.js +106 -0
- package/dist/chunk-PIDUQNC2.js +3185 -0
- package/dist/chunk-POGCDIH4.js +3187 -0
- package/dist/chunk-PSIEOQGZ.js +3043 -0
- package/dist/chunk-PVRT3IHA.js +3238 -0
- package/dist/chunk-QNN4TT23.js +1430 -0
- package/dist/chunk-RE3R45RJ.js +3042 -0
- package/dist/chunk-S7E6TFX6.js +803 -0
- package/dist/chunk-SG6GLU4U.js +1378 -0
- package/dist/chunk-SJCDV2ST.js +274 -0
- package/dist/chunk-SYE5XLF3.js +104 -0
- package/dist/chunk-T5VLYBZD.js +103 -0
- package/dist/chunk-TOQB7VWU.js +3238 -0
- package/dist/chunk-VFNMZ4ZQ.js +3228 -0
- package/dist/chunk-VVTGZNBT.js +1629 -0
- package/dist/chunk-W7Q4RFEV.js +104 -0
- package/dist/chunk-XTYYVRLO.js +3190 -0
- package/dist/chunk-Y6MDYVJD.js +3063 -0
- package/dist/cli/main.d.ts +1 -0
- package/dist/cli/main.js +5458 -0
- package/dist/index.d.ts +653 -0
- package/dist/index.js +79 -0
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +472 -0
- package/dist/schema-BAWSG7KY.js +22 -0
- package/dist/schema-E3QUPL26.js +20 -0
- package/dist/schema-EHL7WUT6.js +20 -0
- package/docs/019-USAGE.md +625 -0
- package/docs/020-current-implementation.md +364 -0
- package/docs/021-DOGFOODING-FINDINGS.md +175 -0
- package/docs/BACKLOG.md +80 -0
- package/docs/CONFIG.md +1123 -0
- package/docs/DESIGN.md +439 -0
- package/docs/ERRORS.md +383 -0
- package/docs/PROJECT.md +88 -0
- package/docs/ROADMAP.md +407 -0
- package/docs/summarization.md +320 -0
- package/docs/test-links.md +9 -0
- package/justfile +40 -0
- package/package.json +74 -9
- package/pnpm-workspace.yaml +5 -0
- package/research/INDEX.md +315 -0
- package/research/code-review/README.md +90 -0
- package/research/code-review/cli-error-handling-review.md +979 -0
- package/research/code-review/code-review-validation-report.md +464 -0
- package/research/code-review/main-ts-review.md +1128 -0
- package/research/config-analysis/01-current-implementation.md +470 -0
- package/research/config-analysis/02-strategy-recommendation.md +428 -0
- package/research/config-analysis/03-task-candidates.md +715 -0
- package/research/config-analysis/033-research-configuration-management.md +828 -0
- package/research/config-analysis/034-research-effect-cli-config.md +1504 -0
- package/research/config-analysis/04-consolidated-task-candidates.md +277 -0
- package/research/config-docs/SUMMARY.md +357 -0
- package/research/config-docs/TEST-RESULTS.md +776 -0
- package/research/config-docs/TODO.md +542 -0
- package/research/config-docs/analysis.md +744 -0
- package/research/config-docs/fix-validation.md +502 -0
- package/research/config-docs/help-audit.md +264 -0
- package/research/config-docs/help-system-analysis.md +890 -0
- package/research/dogfood/consolidated-tool-evaluation.md +373 -0
- package/research/dogfood/strategy-a/a-synthesis.md +184 -0
- package/research/dogfood/strategy-a/a1-docs.md +226 -0
- package/research/dogfood/strategy-a/a2-amorphic.md +156 -0
- package/research/dogfood/strategy-a/a3-llm.md +164 -0
- package/research/dogfood/strategy-b/b-synthesis.md +228 -0
- package/research/dogfood/strategy-b/b1-architecture.md +207 -0
- package/research/dogfood/strategy-b/b2-gaps.md +258 -0
- package/research/dogfood/strategy-b/b3-workflows.md +250 -0
- package/research/dogfood/strategy-c/c-synthesis.md +451 -0
- package/research/dogfood/strategy-c/c1-explorer.md +192 -0
- package/research/dogfood/strategy-c/c2-diver-memory.md +145 -0
- package/research/dogfood/strategy-c/c3-diver-control.md +148 -0
- package/research/dogfood/strategy-c/c4-diver-failure.md +151 -0
- package/research/dogfood/strategy-c/c5-diver-execution.md +221 -0
- package/research/dogfood/strategy-c/c6-diver-org.md +221 -0
- package/research/effect-cli-error-handling.md +845 -0
- package/research/effect-errors-as-values.md +943 -0
- package/research/errors-task-analysis/00-consolidated-tasks.md +207 -0
- package/research/errors-task-analysis/cli-commands-analysis.md +909 -0
- package/research/errors-task-analysis/embeddings-analysis.md +709 -0
- package/research/errors-task-analysis/index-search-analysis.md +812 -0
- package/research/frontmatter/COMMENTS-ARE-SKIPPED.md +149 -0
- package/research/frontmatter/LLM-CODE-NAVIGATION.md +276 -0
- package/research/issue-review.md +603 -0
- package/research/llm-summarization/agent-cli-tools-2026.md +1082 -0
- package/research/llm-summarization/alternative-providers-2026.md +1428 -0
- package/research/llm-summarization/anthropic-2026.md +367 -0
- package/research/llm-summarization/claude-cli-integration.md +1706 -0
- package/research/llm-summarization/cli-integration-patterns.md +3155 -0
- package/research/llm-summarization/openai-2026.md +473 -0
- package/research/llm-summarization/openai-compatible-providers-2026.md +1022 -0
- package/research/llm-summarization/opencode-cli-integration.md +1552 -0
- package/research/llm-summarization/prompt-engineering-2026.md +1426 -0
- package/research/llm-summarization/prototype-results.md +56 -0
- package/research/llm-summarization/provider-switching-patterns-2026.md +2153 -0
- package/research/llm-summarization/typescript-llm-libraries-2026.md +2436 -0
- package/research/mdcontext-error-analysis.md +521 -0
- package/research/mdcontext-pudding/00-EXECUTIVE-SUMMARY.md +282 -0
- package/research/mdcontext-pudding/01-index-embed.md +956 -0
- package/research/mdcontext-pudding/02-search-COMMANDS.md +142 -0
- package/research/mdcontext-pudding/02-search-SUMMARY.md +146 -0
- package/research/mdcontext-pudding/02-search.md +970 -0
- package/research/mdcontext-pudding/03-context.md +779 -0
- package/research/mdcontext-pudding/04-navigation-and-analytics.md +803 -0
- package/research/mdcontext-pudding/04-tree.md +704 -0
- package/research/mdcontext-pudding/05-config.md +1038 -0
- package/research/mdcontext-pudding/06-links-summary.txt +87 -0
- package/research/mdcontext-pudding/06-links.md +679 -0
- package/research/mdcontext-pudding/07-stats.md +693 -0
- package/research/mdcontext-pudding/BUG-FIX-PLAN.md +388 -0
- package/research/mdcontext-pudding/P0-BUG-VALIDATION.md +167 -0
- package/research/mdcontext-pudding/README.md +168 -0
- package/research/mdcontext-pudding/TESTING-SUMMARY.md +128 -0
- package/research/npm_publish/011-npm-workflow-research-agent2.md +792 -0
- package/research/npm_publish/012-npm-workflow-research-agent1.md +530 -0
- package/research/npm_publish/013-npm-workflow-research-agent3.md +722 -0
- package/research/npm_publish/014-npm-workflow-synthesis.md +556 -0
- package/research/npm_publish/031-npm-workflow-task-analysis.md +134 -0
- package/research/research-quality-review.md +834 -0
- package/research/semantic-search/002-research-embedding-models.md +490 -0
- package/research/semantic-search/003-research-rag-alternatives.md +523 -0
- package/research/semantic-search/004-research-vector-search.md +841 -0
- package/research/semantic-search/032-research-semantic-search.md +427 -0
- package/research/semantic-search/embedding-text-analysis.md +156 -0
- package/research/semantic-search/multi-word-failure-reproduction.md +171 -0
- package/research/semantic-search/query-processing-analysis.md +207 -0
- package/research/semantic-search/root-cause-and-solution.md +114 -0
- package/research/semantic-search/threshold-validation-report.md +69 -0
- package/research/semantic-search/vector-search-analysis.md +63 -0
- package/research/task-management-2026/00-synthesis-recommendations.md +295 -0
- package/research/task-management-2026/01-ai-workflow-tools.md +416 -0
- package/research/task-management-2026/02-agent-framework-patterns.md +476 -0
- package/research/task-management-2026/03-lightweight-file-based.md +567 -0
- package/research/task-management-2026/04-established-tools-ai-features.md +541 -0
- package/research/task-management-2026/linear/01-core-features-workflow.md +771 -0
- package/research/task-management-2026/linear/02-api-integrations.md +930 -0
- package/research/task-management-2026/linear/03-ai-features.md +368 -0
- package/research/task-management-2026/linear/04-pricing-setup.md +205 -0
- package/research/task-management-2026/linear/05-usage-patterns-best-practices.md +605 -0
- package/research/test-path-issues.md +276 -0
- package/review/ALP-76/1-error-type-design.md +962 -0
- package/review/ALP-76/2-error-handling-patterns.md +906 -0
- package/review/ALP-76/3-error-presentation.md +624 -0
- package/review/ALP-76/4-test-coverage.md +625 -0
- package/review/ALP-76/5-migration-completeness.md +440 -0
- package/review/ALP-76/6-effect-best-practices.md +755 -0
- package/scripts/apply-branch-protection.sh +47 -0
- package/scripts/branch-protection-templates.json +79 -0
- package/scripts/prototype-summarization.ts +346 -0
- package/scripts/rebuild-hnswlib.js +58 -0
- package/scripts/setup-branch-protection.sh +64 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/active-provider.json +7 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.json +541 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/bm25.meta.json +5 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/config.json +8 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/documents.json +60 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/links.json +13 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/.mdcontext/indexes/sections.json +1197 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/configuration-management.md +99 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/distributed-systems.md +92 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/error-handling.md +78 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/failure-automation.md +55 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/job-context.md +69 -0
- package/src/__tests__/fixtures/semantic-search/multi-word-corpus/process-orchestration.md +99 -0
- package/src/cli/argv-preprocessor.test.ts +210 -0
- package/src/cli/argv-preprocessor.ts +202 -0
- package/src/cli/cli.test.ts +627 -0
- package/src/cli/commands/backlinks.ts +54 -0
- package/src/cli/commands/config-cmd.ts +642 -0
- package/src/cli/commands/context.ts +285 -0
- package/src/cli/commands/duplicates.ts +122 -0
- package/src/cli/commands/embeddings.ts +529 -0
- package/src/cli/commands/index-cmd.ts +480 -0
- package/src/cli/commands/index.ts +16 -0
- package/src/cli/commands/links.ts +52 -0
- package/src/cli/commands/search.ts +1281 -0
- package/src/cli/commands/stats.ts +149 -0
- package/src/cli/commands/tree.ts +128 -0
- package/src/cli/config-layer.ts +176 -0
- package/src/cli/error-handler.test.ts +235 -0
- package/src/cli/error-handler.ts +655 -0
- package/src/cli/flag-schemas.ts +341 -0
- package/src/cli/help.ts +588 -0
- package/src/cli/index.ts +9 -0
- package/src/cli/main.ts +435 -0
- package/src/cli/options.ts +41 -0
- package/src/cli/shared-error-handling.ts +199 -0
- package/src/cli/typo-suggester.test.ts +105 -0
- package/src/cli/typo-suggester.ts +130 -0
- package/src/cli/utils.ts +259 -0
- package/src/config/file-provider.test.ts +320 -0
- package/src/config/file-provider.ts +273 -0
- package/src/config/index.ts +72 -0
- package/src/config/integration.test.ts +667 -0
- package/src/config/precedence.test.ts +277 -0
- package/src/config/precedence.ts +451 -0
- package/src/config/schema.test.ts +414 -0
- package/src/config/schema.ts +603 -0
- package/src/config/service.test.ts +320 -0
- package/src/config/service.ts +243 -0
- package/src/config/testing.test.ts +264 -0
- package/src/config/testing.ts +110 -0
- package/src/core/index.ts +1 -0
- package/src/core/types.ts +113 -0
- package/src/duplicates/detector.test.ts +183 -0
- package/src/duplicates/detector.ts +414 -0
- package/src/duplicates/index.ts +18 -0
- package/src/embeddings/embedding-namespace.test.ts +300 -0
- package/src/embeddings/embedding-namespace.ts +947 -0
- package/src/embeddings/heading-boost.test.ts +222 -0
- package/src/embeddings/hnsw-build-options.test.ts +198 -0
- package/src/embeddings/hyde.test.ts +272 -0
- package/src/embeddings/hyde.ts +264 -0
- package/src/embeddings/index.ts +10 -0
- package/src/embeddings/openai-provider.ts +414 -0
- package/src/embeddings/pricing.json +22 -0
- package/src/embeddings/provider-constants.ts +204 -0
- package/src/embeddings/provider-errors.test.ts +967 -0
- package/src/embeddings/provider-errors.ts +565 -0
- package/src/embeddings/provider-factory.test.ts +240 -0
- package/src/embeddings/provider-factory.ts +225 -0
- package/src/embeddings/provider-integration.test.ts +788 -0
- package/src/embeddings/query-preprocessing.test.ts +187 -0
- package/src/embeddings/semantic-search-threshold.test.ts +508 -0
- package/src/embeddings/semantic-search.ts +1270 -0
- package/src/embeddings/types.ts +359 -0
- package/src/embeddings/vector-store.ts +708 -0
- package/src/embeddings/voyage-provider.ts +313 -0
- package/src/errors/errors.test.ts +845 -0
- package/src/errors/index.ts +533 -0
- package/src/index/ignore-patterns.test.ts +354 -0
- package/src/index/ignore-patterns.ts +305 -0
- package/src/index/index.ts +4 -0
- package/src/index/indexer.ts +684 -0
- package/src/index/storage.ts +260 -0
- package/src/index/types.ts +147 -0
- package/src/index/watcher.ts +189 -0
- package/src/index.ts +30 -0
- package/src/integration/search-keyword.test.ts +678 -0
- package/src/mcp/server.ts +612 -0
- package/src/parser/index.ts +1 -0
- package/src/parser/parser.test.ts +291 -0
- package/src/parser/parser.ts +394 -0
- package/src/parser/section-filter.test.ts +277 -0
- package/src/parser/section-filter.ts +392 -0
- package/src/search/__tests__/hybrid-search.test.ts +650 -0
- package/src/search/bm25-store.ts +366 -0
- package/src/search/cross-encoder.test.ts +253 -0
- package/src/search/cross-encoder.ts +406 -0
- package/src/search/fuzzy-search.test.ts +419 -0
- package/src/search/fuzzy-search.ts +273 -0
- package/src/search/hybrid-search.ts +448 -0
- package/src/search/path-matcher.test.ts +276 -0
- package/src/search/path-matcher.ts +33 -0
- package/src/search/query-parser.test.ts +260 -0
- package/src/search/query-parser.ts +319 -0
- package/src/search/searcher.test.ts +280 -0
- package/src/search/searcher.ts +724 -0
- package/src/search/wink-bm25.d.ts +30 -0
- package/src/summarization/cli-providers/claude.ts +202 -0
- package/src/summarization/cli-providers/detection.test.ts +273 -0
- package/src/summarization/cli-providers/detection.ts +118 -0
- package/src/summarization/cli-providers/index.ts +8 -0
- package/src/summarization/cost.test.ts +139 -0
- package/src/summarization/cost.ts +102 -0
- package/src/summarization/error-handler.test.ts +127 -0
- package/src/summarization/error-handler.ts +111 -0
- package/src/summarization/index.ts +102 -0
- package/src/summarization/pipeline.test.ts +498 -0
- package/src/summarization/pipeline.ts +231 -0
- package/src/summarization/prompts.test.ts +269 -0
- package/src/summarization/prompts.ts +133 -0
- package/src/summarization/provider-factory.test.ts +396 -0
- package/src/summarization/provider-factory.ts +178 -0
- package/src/summarization/types.ts +184 -0
- package/src/summarize/budget-bugs.test.ts +620 -0
- package/src/summarize/formatters.ts +419 -0
- package/src/summarize/index.ts +20 -0
- package/src/summarize/summarizer.test.ts +275 -0
- package/src/summarize/summarizer.ts +597 -0
- package/src/summarize/verify-bugs.test.ts +238 -0
- package/src/types/huggingface-transformers.d.ts +66 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/tokens.test.ts +142 -0
- package/src/utils/tokens.ts +186 -0
- package/tests/fixtures/cli/.mdcontext/active-provider.json +7 -0
- package/tests/fixtures/cli/.mdcontext/config.json +8 -0
- package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.bin +0 -0
- package/tests/fixtures/cli/.mdcontext/embeddings/openai_text-embedding-3-small_512/vectors.meta.bin +0 -0
- package/tests/fixtures/cli/.mdcontext/indexes/documents.json +33 -0
- package/tests/fixtures/cli/.mdcontext/indexes/links.json +12 -0
- package/tests/fixtures/cli/.mdcontext/indexes/sections.json +247 -0
- package/tests/fixtures/cli/README.md +9 -0
- package/tests/fixtures/cli/api-reference.md +11 -0
- package/tests/fixtures/cli/getting-started.md +11 -0
- package/tests/integration/embed-index.test.ts +712 -0
- package/tests/integration/search-context.test.ts +469 -0
- package/tests/integration/search-semantic.test.ts +522 -0
- package/tsconfig.json +26 -0
- package/vitest.config.ts +16 -0
- 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`
|