codesift-mcp 0.2.2 → 0.2.3

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CodeSift -- Token-efficient code intelligence for AI agents
2
2
 
3
- CodeSift indexes your codebase with tree-sitter AST parsing and gives AI agents 63 search, retrieval, and analysis tools via CLI or MCP server. It uses 61-95% fewer tokens than raw grep/Read workflows on typical code navigation tasks.
3
+ CodeSift indexes your codebase with tree-sitter AST parsing and gives AI agents 64 search, retrieval, and analysis tools via CLI or MCP server. It uses 61-95% fewer tokens than raw grep/Read workflows on typical code navigation tasks.
4
4
 
5
5
  **Works with:** Claude Code, Cursor, Codex, Gemini CLI, Zed, Aider, Continue — any MCP client.
6
6
 
@@ -185,7 +185,7 @@ codesift retrieve local/my-project \
185
185
  | `codesift generate-claude-md <repo>` | Generate CLAUDE.md project summary |
186
186
  | `codesift list-patterns` | List all built-in anti-pattern names |
187
187
 
188
- ## MCP tools (63 total — 13 core + 50 discoverable)
188
+ ## MCP tools (63 total — 13 core + 51 discoverable)
189
189
 
190
190
  When running as an MCP server, CodeSift exposes 13 core tools directly. The remaining 50 tools are discoverable via `discover_tools` and `describe_tools` to minimize system prompt token overhead.
191
191
 
@@ -290,6 +290,8 @@ scan_secrets(repo="local/my-project", file_pattern="src/config/**")
290
290
  | Get type info | `get_type_info` | Return types + docs via LSP hover — no file reading |
291
291
  | Rename across files | `rename_symbol` | LSP type-safe rename in all files at once |
292
292
  | Detect hardcoded secrets | `scan_secrets` | ~1,100 rules, AST-aware, masked output, auto-cached |
293
+ | Ranked text search | `search_text(ranked=true)` | Classifies hits by function, saves follow-up get_symbol calls |
294
+ | Find hidden tools | `discover_tools` + `describe_tools` | 51 tools hidden by default — search by keyword, get full schema |
293
295
  | Find ALL occurrences | `grep -rn` | Exhaustive, no top_k cap |
294
296
  | Count matches | `grep -c` | Simple exact count |
295
297
 
@@ -313,7 +315,7 @@ Custom regex is also supported: `codesift patterns local/project "Promise<.*any>
313
315
 
314
316
  ## MCP server setup
315
317
 
316
- CodeSift runs as an [MCP](https://modelcontextprotocol.io) server, exposing 63 tools to AI agents (13 core visible + 50 discoverable). The fastest setup method is `codesift setup <platform>` which handles everything automatically. Manual configuration is also supported:
318
+ CodeSift runs as an [MCP](https://modelcontextprotocol.io) server, exposing 64 tools to AI agents (13 core visible + 50 discoverable). The fastest setup method is `codesift setup <platform>` which handles everything automatically. Manual configuration is also supported:
317
319
 
318
320
  ### OpenAI Codex
319
321
 
@@ -472,9 +474,11 @@ All configuration is via environment variables.
472
474
 
473
475
  5. **File watcher** -- chokidar watches indexed folders for changes. Modified files are re-parsed and the index is updated incrementally.
474
476
 
475
- 6. **Response guards** -- Multiple layers prevent token waste: auto-grouping at 80K chars, 30K token hard cap, response dedup cache (30s), in-flight request coalescing, sequential call hints, and source truncation.
477
+ 6. **Response guards** -- Multiple layers prevent token waste: progressive cascade (>15K tok → compact, >25K → counts, >30K truncate), response dedup cache (30s), in-flight request coalescing, H1-H9 sequential hints, and source truncation.
476
478
 
477
- 7. **LSP bridge** (optional) -- When a language server is installed (typescript-language-server, pylsp, gopls, rust-analyzer, solargraph, intelephense), CodeSift uses it for type-safe `find_references`, precise `go_to_definition`, `get_type_info` via hover, and cross-file `rename_symbol`. Falls back to tree-sitter/grep when LSP is unavailable. Lazy start + 5 min idle kill — zero overhead when not used.
479
+ 7. **Agent onboarding** -- MCP `instructions` field sends ~800 tokens of guidance (tool discovery, hints, ALWAYS/NEVER rules) to every client automatically. `codesift setup` installs full rules files per platform + Claude Code hooks for enforcement.
480
+
481
+ 8. **LSP bridge** (optional) -- When a language server is installed (typescript-language-server, pylsp, gopls, rust-analyzer, solargraph, intelephense), CodeSift uses it for type-safe `find_references`, precise `go_to_definition`, `get_type_info` via hover, and cross-file `rename_symbol`. Falls back to tree-sitter/grep when LSP is unavailable. Lazy start + 5 min idle kill — zero overhead when not used.
478
482
 
479
483
  ## Glob pattern support
480
484
 
@@ -566,7 +570,7 @@ BSL-1.1
566
570
  <!-- Evidence Map
567
571
  | Section | Source file(s) |
568
572
  |---------|---------------|
569
- | Tool count (63) | src/register-tools.ts (TOOL_DEFINITIONS + discover_tools + describe_tools) |
573
+ | Tool count (64) | src/register-tools.ts (62 in TOOL_DEFINITIONS + discover_tools + describe_tools) |
570
574
  | Quick install | package.json:bin (line 8-11) |
571
575
  | Quick start | src/cli/commands.ts |
572
576
  | Benchmark | benchmarks/ directory, previously measured |
package/dist/server.d.ts CHANGED
@@ -1,2 +1,3 @@
1
+ #!/usr/bin/env node
1
2
  export { buildResponseHint, resetSessionState } from "./server-helpers.js";
2
3
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AASA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/server.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
3
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
4
  import { loadConfig } from "./config.js";
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,mCAAmC;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,UAAU,EAAE,CAAC;AAEb,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1C,EAAE,YAAY,EAAE,qBAAqB,EAAE,CACxC,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,6EAA6E;IAC7E,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,mCAAmC;AACnC,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,UAAU,EAAE,CAAC;AAEb,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,EAC1C,EAAE,YAAY,EAAE,qBAAqB,EAAE,CACxC,CAAC;AAEF,aAAa,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAE7C,6EAA6E;IAC7E,yBAAyB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC9D,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,GAAG,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codesift-mcp",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "MCP server for code intelligence — 63 tools for symbol search, call graph, semantic search, route tracing, community detection, LSP bridge, secret detection, and conversation search",
5
5
  "license": "BSL-1.1",
6
6
  "author": "Greg Laskowski",
package/rules/codesift.md CHANGED
@@ -37,6 +37,7 @@ Use this table to pick the right tool for each task:
37
37
  | find usages | `find_references` |
38
38
  | symbol + refs in 1 call | `find_and_show(include_refs=true)` |
39
39
  | call chain | `trace_call_chain` |
40
+ | callers/callees of function | `get_call_hierarchy(direction="incoming")` |
40
41
  | blast radius | `impact_analysis(since="HEAD~3")` |
41
42
  | concept question | `semantic_search` or `codebase_retrieval(queries=[{type:"semantic",...}])` |
42
43
  | multi-search 3+ | `codebase_retrieval(queries=[...])` |
@@ -42,6 +42,7 @@ Use this table to pick the right tool for each task:
42
42
  | find usages | `find_references` |
43
43
  | symbol + refs in 1 call | `find_and_show(include_refs=true)` |
44
44
  | call chain | `trace_call_chain` |
45
+ | callers/callees of function | `get_call_hierarchy(direction="incoming")` |
45
46
  | blast radius | `impact_analysis(since="HEAD~3")` |
46
47
  | concept question | `semantic_search` or `codebase_retrieval(queries=[{type:"semantic",...}])` |
47
48
  | multi-search 3+ | `codebase_retrieval(queries=[...])` |
package/rules/codex.md CHANGED
@@ -37,6 +37,7 @@ Use this table to pick the right tool for each task:
37
37
  | find usages | `find_references` |
38
38
  | symbol + refs in 1 call | `find_and_show(include_refs=true)` |
39
39
  | call chain | `trace_call_chain` |
40
+ | callers/callees of function | `get_call_hierarchy(direction="incoming")` |
40
41
  | blast radius | `impact_analysis(since="HEAD~3")` |
41
42
  | concept question | `semantic_search` or `codebase_retrieval(queries=[{type:"semantic",...}])` |
42
43
  | multi-search 3+ | `codebase_retrieval(queries=[...])` |
package/rules/gemini.md CHANGED
@@ -37,6 +37,7 @@ Use this table to pick the right tool for each task:
37
37
  | find usages | `find_references` |
38
38
  | symbol + refs in 1 call | `find_and_show(include_refs=true)` |
39
39
  | call chain | `trace_call_chain` |
40
+ | callers/callees of function | `get_call_hierarchy(direction="incoming")` |
40
41
  | blast radius | `impact_analysis(since="HEAD~3")` |
41
42
  | concept question | `semantic_search` or `codebase_retrieval(queries=[{type:"semantic",...}])` |
42
43
  | multi-search 3+ | `codebase_retrieval(queries=[...])` |