codesift-mcp 0.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 (177) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +241 -0
  3. package/dist/cli/args.d.ts +13 -0
  4. package/dist/cli/args.d.ts.map +1 -0
  5. package/dist/cli/args.js +79 -0
  6. package/dist/cli/args.js.map +1 -0
  7. package/dist/cli/commands.d.ts +4 -0
  8. package/dist/cli/commands.d.ts.map +1 -0
  9. package/dist/cli/commands.js +336 -0
  10. package/dist/cli/commands.js.map +1 -0
  11. package/dist/cli/help.d.ts +3 -0
  12. package/dist/cli/help.d.ts.map +1 -0
  13. package/dist/cli/help.js +271 -0
  14. package/dist/cli/help.js.map +1 -0
  15. package/dist/cli.d.ts +3 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +80 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/config.d.ts +23 -0
  20. package/dist/config.d.ts.map +1 -0
  21. package/dist/config.js +49 -0
  22. package/dist/config.js.map +1 -0
  23. package/dist/parser/extractors/go.d.ts +4 -0
  24. package/dist/parser/extractors/go.d.ts.map +1 -0
  25. package/dist/parser/extractors/go.js +185 -0
  26. package/dist/parser/extractors/go.js.map +1 -0
  27. package/dist/parser/extractors/javascript.d.ts +9 -0
  28. package/dist/parser/extractors/javascript.d.ts.map +1 -0
  29. package/dist/parser/extractors/javascript.js +10 -0
  30. package/dist/parser/extractors/javascript.js.map +1 -0
  31. package/dist/parser/extractors/markdown.d.ts +15 -0
  32. package/dist/parser/extractors/markdown.d.ts.map +1 -0
  33. package/dist/parser/extractors/markdown.js +217 -0
  34. package/dist/parser/extractors/markdown.js.map +1 -0
  35. package/dist/parser/extractors/prisma.d.ts +17 -0
  36. package/dist/parser/extractors/prisma.d.ts.map +1 -0
  37. package/dist/parser/extractors/prisma.js +121 -0
  38. package/dist/parser/extractors/prisma.js.map +1 -0
  39. package/dist/parser/extractors/python.d.ts +4 -0
  40. package/dist/parser/extractors/python.d.ts.map +1 -0
  41. package/dist/parser/extractors/python.js +203 -0
  42. package/dist/parser/extractors/python.js.map +1 -0
  43. package/dist/parser/extractors/rust.d.ts +4 -0
  44. package/dist/parser/extractors/rust.d.ts.map +1 -0
  45. package/dist/parser/extractors/rust.js +178 -0
  46. package/dist/parser/extractors/rust.js.map +1 -0
  47. package/dist/parser/extractors/typescript.d.ts +4 -0
  48. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  49. package/dist/parser/extractors/typescript.js +296 -0
  50. package/dist/parser/extractors/typescript.js.map +1 -0
  51. package/dist/parser/languages/tree-sitter-css.wasm +0 -0
  52. package/dist/parser/languages/tree-sitter-go.wasm +0 -0
  53. package/dist/parser/languages/tree-sitter-java.wasm +0 -0
  54. package/dist/parser/languages/tree-sitter-javascript.wasm +0 -0
  55. package/dist/parser/languages/tree-sitter-json.wasm +0 -0
  56. package/dist/parser/languages/tree-sitter-php.wasm +0 -0
  57. package/dist/parser/languages/tree-sitter-python.wasm +0 -0
  58. package/dist/parser/languages/tree-sitter-ruby.wasm +0 -0
  59. package/dist/parser/languages/tree-sitter-rust.wasm +0 -0
  60. package/dist/parser/languages/tree-sitter-tsx.wasm +0 -0
  61. package/dist/parser/languages/tree-sitter-typescript.wasm +0 -0
  62. package/dist/parser/parser-manager.d.ts +6 -0
  63. package/dist/parser/parser-manager.d.ts.map +1 -0
  64. package/dist/parser/parser-manager.js +60 -0
  65. package/dist/parser/parser-manager.js.map +1 -0
  66. package/dist/parser/symbol-extractor.d.ts +22 -0
  67. package/dist/parser/symbol-extractor.d.ts.map +1 -0
  68. package/dist/parser/symbol-extractor.js +115 -0
  69. package/dist/parser/symbol-extractor.js.map +1 -0
  70. package/dist/retrieval/codebase-retrieval.d.ts +27 -0
  71. package/dist/retrieval/codebase-retrieval.d.ts.map +1 -0
  72. package/dist/retrieval/codebase-retrieval.js +472 -0
  73. package/dist/retrieval/codebase-retrieval.js.map +1 -0
  74. package/dist/search/bm25.d.ts +22 -0
  75. package/dist/search/bm25.d.ts.map +1 -0
  76. package/dist/search/bm25.js +179 -0
  77. package/dist/search/bm25.js.map +1 -0
  78. package/dist/search/chunker.d.ts +9 -0
  79. package/dist/search/chunker.d.ts.map +1 -0
  80. package/dist/search/chunker.js +91 -0
  81. package/dist/search/chunker.js.map +1 -0
  82. package/dist/search/hybrid.d.ts +16 -0
  83. package/dist/search/hybrid.d.ts.map +1 -0
  84. package/dist/search/hybrid.js +51 -0
  85. package/dist/search/hybrid.js.map +1 -0
  86. package/dist/search/semantic.d.ts +44 -0
  87. package/dist/search/semantic.d.ts.map +1 -0
  88. package/dist/search/semantic.js +194 -0
  89. package/dist/search/semantic.js.map +1 -0
  90. package/dist/server.d.ts +2 -0
  91. package/dist/server.d.ts.map +1 -0
  92. package/dist/server.js +285 -0
  93. package/dist/server.js.map +1 -0
  94. package/dist/storage/chunk-store.d.ts +32 -0
  95. package/dist/storage/chunk-store.d.ts.map +1 -0
  96. package/dist/storage/chunk-store.js +144 -0
  97. package/dist/storage/chunk-store.js.map +1 -0
  98. package/dist/storage/embedding-store.d.ts +41 -0
  99. package/dist/storage/embedding-store.d.ts.map +1 -0
  100. package/dist/storage/embedding-store.js +149 -0
  101. package/dist/storage/embedding-store.js.map +1 -0
  102. package/dist/storage/index-store.d.ts +23 -0
  103. package/dist/storage/index-store.d.ts.map +1 -0
  104. package/dist/storage/index-store.js +95 -0
  105. package/dist/storage/index-store.js.map +1 -0
  106. package/dist/storage/registry.d.ts +35 -0
  107. package/dist/storage/registry.d.ts.map +1 -0
  108. package/dist/storage/registry.js +99 -0
  109. package/dist/storage/registry.js.map +1 -0
  110. package/dist/storage/usage-stats.d.ts +32 -0
  111. package/dist/storage/usage-stats.d.ts.map +1 -0
  112. package/dist/storage/usage-stats.js +180 -0
  113. package/dist/storage/usage-stats.js.map +1 -0
  114. package/dist/storage/usage-tracker.d.ts +35 -0
  115. package/dist/storage/usage-tracker.d.ts.map +1 -0
  116. package/dist/storage/usage-tracker.js +245 -0
  117. package/dist/storage/usage-tracker.js.map +1 -0
  118. package/dist/storage/watcher.d.ts +12 -0
  119. package/dist/storage/watcher.d.ts.map +1 -0
  120. package/dist/storage/watcher.js +66 -0
  121. package/dist/storage/watcher.js.map +1 -0
  122. package/dist/tools/context-tools.d.ts +31 -0
  123. package/dist/tools/context-tools.d.ts.map +1 -0
  124. package/dist/tools/context-tools.js +219 -0
  125. package/dist/tools/context-tools.js.map +1 -0
  126. package/dist/tools/diff-tools.d.ts +22 -0
  127. package/dist/tools/diff-tools.d.ts.map +1 -0
  128. package/dist/tools/diff-tools.js +165 -0
  129. package/dist/tools/diff-tools.js.map +1 -0
  130. package/dist/tools/generate-tools.d.ts +11 -0
  131. package/dist/tools/generate-tools.d.ts.map +1 -0
  132. package/dist/tools/generate-tools.js +135 -0
  133. package/dist/tools/generate-tools.js.map +1 -0
  134. package/dist/tools/graph-tools.d.ts +60 -0
  135. package/dist/tools/graph-tools.d.ts.map +1 -0
  136. package/dist/tools/graph-tools.js +313 -0
  137. package/dist/tools/graph-tools.js.map +1 -0
  138. package/dist/tools/index-tools.d.ts +39 -0
  139. package/dist/tools/index-tools.d.ts.map +1 -0
  140. package/dist/tools/index-tools.js +451 -0
  141. package/dist/tools/index-tools.js.map +1 -0
  142. package/dist/tools/outline-tools.d.ts +59 -0
  143. package/dist/tools/outline-tools.d.ts.map +1 -0
  144. package/dist/tools/outline-tools.js +342 -0
  145. package/dist/tools/outline-tools.js.map +1 -0
  146. package/dist/tools/search-tools.d.ts +29 -0
  147. package/dist/tools/search-tools.d.ts.map +1 -0
  148. package/dist/tools/search-tools.js +309 -0
  149. package/dist/tools/search-tools.js.map +1 -0
  150. package/dist/tools/symbol-tools.d.ts +24 -0
  151. package/dist/tools/symbol-tools.d.ts.map +1 -0
  152. package/dist/tools/symbol-tools.js +172 -0
  153. package/dist/tools/symbol-tools.js.map +1 -0
  154. package/dist/types.d.ts +91 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/utils/git-validation.d.ts +11 -0
  159. package/dist/utils/git-validation.d.ts.map +1 -0
  160. package/dist/utils/git-validation.js +19 -0
  161. package/dist/utils/git-validation.js.map +1 -0
  162. package/dist/utils/test-file.d.ts +11 -0
  163. package/dist/utils/test-file.d.ts.map +1 -0
  164. package/dist/utils/test-file.js +27 -0
  165. package/dist/utils/test-file.js.map +1 -0
  166. package/package.json +62 -0
  167. package/src/parser/languages/tree-sitter-css.wasm +0 -0
  168. package/src/parser/languages/tree-sitter-go.wasm +0 -0
  169. package/src/parser/languages/tree-sitter-java.wasm +0 -0
  170. package/src/parser/languages/tree-sitter-javascript.wasm +0 -0
  171. package/src/parser/languages/tree-sitter-json.wasm +0 -0
  172. package/src/parser/languages/tree-sitter-php.wasm +0 -0
  173. package/src/parser/languages/tree-sitter-python.wasm +0 -0
  174. package/src/parser/languages/tree-sitter-ruby.wasm +0 -0
  175. package/src/parser/languages/tree-sitter-rust.wasm +0 -0
  176. package/src/parser/languages/tree-sitter-tsx.wasm +0 -0
  177. package/src/parser/languages/tree-sitter-typescript.wasm +0 -0
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Git ref/URL validation utilities — shared across tools that invoke git.
3
+ * Prevents command injection when refs/URLs are passed to execFileSync.
4
+ */
5
+ /** Allows alphanumeric, `/`, `.`, `-`, `_`, `~`, `^`, `@`, `{`, `}`. */
6
+ export const GIT_REF_PATTERN = /^[a-zA-Z0-9_./\-~^@{}]+$/;
7
+ export function validateGitRef(ref) {
8
+ if (!ref || !GIT_REF_PATTERN.test(ref)) {
9
+ throw new Error(`Invalid git ref: "${ref}"`);
10
+ }
11
+ }
12
+ /** Allows HTTPS, SSH, git://, and file:// protocols. */
13
+ export const GIT_URL_PATTERN = /^(https?:\/\/|git@|git:\/\/|ssh:\/\/|file:\/\/)[^\s]+$/;
14
+ export function validateGitUrl(url) {
15
+ if (!url || !GIT_URL_PATTERN.test(url)) {
16
+ throw new Error(`Invalid git URL: ${url}`);
17
+ }
18
+ }
19
+ //# sourceMappingURL=git-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-validation.js","sourceRoot":"","sources":["../../src/utils/git-validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAE1D,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,wDAAwD,CAAC;AAExF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Check if a file path looks like a test file using substring matching.
3
+ * Used by BM25 scoring to demote test files.
4
+ */
5
+ export declare function isTestFile(filePath: string): boolean;
6
+ /**
7
+ * Check if a file path looks like a test file using regex patterns.
8
+ * Stricter than isTestFile — used by call graph to exclude test files.
9
+ */
10
+ export declare function isTestFileStrict(filePath: string): boolean;
11
+ //# sourceMappingURL=test-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-file.d.ts","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"AAcA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1D"}
@@ -0,0 +1,27 @@
1
+ /** Test file patterns — shared between BM25 scoring and call graph filtering */
2
+ const TEST_FILE_PATTERNS = [
3
+ ".test.", ".spec.", "__tests__/", "test/mocks", "test-utils", "test-helpers",
4
+ ];
5
+ /** Regex-based test file patterns for stricter matching (e.g., call graph filtering) */
6
+ const TEST_FILE_REGEX_PATTERNS = [
7
+ /\.test\.[jt]sx?$/,
8
+ /\.spec\.[jt]sx?$/,
9
+ /\/__tests__\//,
10
+ /\/test\//,
11
+ /\/tests\//,
12
+ ];
13
+ /**
14
+ * Check if a file path looks like a test file using substring matching.
15
+ * Used by BM25 scoring to demote test files.
16
+ */
17
+ export function isTestFile(filePath) {
18
+ return TEST_FILE_PATTERNS.some((pattern) => filePath.includes(pattern));
19
+ }
20
+ /**
21
+ * Check if a file path looks like a test file using regex patterns.
22
+ * Stricter than isTestFile — used by call graph to exclude test files.
23
+ */
24
+ export function isTestFileStrict(filePath) {
25
+ return TEST_FILE_REGEX_PATTERNS.some((p) => p.test(filePath));
26
+ }
27
+ //# sourceMappingURL=test-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-file.js","sourceRoot":"","sources":["../../src/utils/test-file.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,MAAM,kBAAkB,GAAG;IACzB,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc;CAC7E,CAAC;AAEF,wFAAwF;AACxF,MAAM,wBAAwB,GAAG;IAC/B,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,UAAU;IACV,WAAW;CACZ,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AAChE,CAAC"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "codesift-mcp",
3
+ "version": "0.1.0",
4
+ "description": "MCP server for code intelligence — 21 tools for symbol search, call graph analysis, and semantic code retrieval",
5
+ "license": "MIT",
6
+ "author": "Greg Laskowski",
7
+ "type": "module",
8
+ "bin": {
9
+ "codesift-mcp": "./dist/server.js",
10
+ "codesift": "./dist/cli.js"
11
+ },
12
+ "main": "./dist/server.js",
13
+ "files": [
14
+ "dist",
15
+ "src/parser/languages",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc && cp -r src/parser/languages dist/parser/",
21
+ "dev": "tsx src/server.ts",
22
+ "start": "node dist/server.js",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "test:coverage": "vitest run --coverage",
26
+ "lint": "tsc --noEmit",
27
+ "download-wasm": "tsx scripts/download-wasm.ts",
28
+ "prepublishOnly": "npm run build && npm test"
29
+ },
30
+ "dependencies": {
31
+ "@modelcontextprotocol/sdk": "^1.0.0",
32
+ "chokidar": "^4.0.0",
33
+ "ignore": "^6.0.0",
34
+ "web-tree-sitter": "^0.24.0"
35
+ },
36
+ "optionalDependencies": {
37
+ "openai": "^4.0.0",
38
+ "voyageai": "^0.1.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^22.0.0",
42
+ "@vitest/coverage-v8": "^3.0.0",
43
+ "tsx": "^4.0.0",
44
+ "typescript": "^5.7.0",
45
+ "vitest": "^3.0.0"
46
+ },
47
+ "engines": {
48
+ "node": ">=20.0.0"
49
+ },
50
+ "keywords": [
51
+ "mcp",
52
+ "code-search",
53
+ "tree-sitter",
54
+ "semantic-search",
55
+ "claude",
56
+ "anthropic"
57
+ ],
58
+ "repository": {
59
+ "type": "git",
60
+ "url": "https://github.com/greglas/codesift-mcp"
61
+ }
62
+ }