Every time Claude Code or Cursor needs to understand your codebase, it does this:

1. Reads entire files (500+ lines)
2. Greps for patterns (gets false matches)
3. Reads more files
4. Burns half the context window before it even starts working

I built codetree — an MCP server that gives agents structured answers using tree-sitter parsing.

Instead of reading a 500-line file, the agent asks:

get_file_skeleton("server.py")
→ class Router → line 12
      def handle_request(self, req) → line 15
      def middleware(self, fn) → line 45
    def create_app() → line 80

  Then it grabs only what it needs:

  get_symbol("server.py", "handle_request")
  → full source code, just that function

  16 tools total:

  ┌──────────────────────────────────────┬─────────────────────────────────┐
  │         What agents can ask          │              Tool               │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ What's in this file?                 │ get_file_skeleton               │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ Show me this function's source       │ get_symbol                      │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ Where is X used across the repo?     │ find_references                 │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ What does X call? What calls X?      │ get_call_graph                  │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ If I change X, what breaks?          │ get_blast_radius                │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ What's dead code?                    │ find_dead_code                  │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ Find duplicate functions             │ detect_clones                   │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ How complex is this function?        │ get_complexity                  │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ What are the most important symbols? │ rank_symbols (PageRank)         │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ Find tests for this function         │ find_tests                      │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ What variables does X declare?       │ get_variables                   │
  ├──────────────────────────────────────┼─────────────────────────────────┤
  │ ...and 5 more                        │ batch ops, search, AST, imports │
  └──────────────────────────────────────┴─────────────────────────────────┘

  10 languages: Python, JavaScript/JSX, TypeScript/TSX, Go, Rust, Java, C, C++, Ruby

  Works with any MCP client — not just Claude Code. Cursor, Windsurf, VS Code Copilot, Zed, Claude
  Desktop all work.

  Quick start:

  pip install mcp-server-codetree

  Add to Claude Code:
  claude mcp add codetree -- uvx --from mcp-server-codetree codetree --root .

  Or add to any MCP client's config:
  {
    "mcpServers": {
      "codetree": {
        "command": "uvx",
        "args": ["--from", "mcp-server-codetree", "codetree", "--root", "/path/to/repo"]
      }
    }
  }
  921 tests. ~1 second startup. No external services needed.
  GitHub: https://github.com/ThinkyMiner/codeTree
  Website: https://code-tree-website.vercel.app/
  Would love feedback — what tools would make your agent workflow better?
  I am right now working on making this a proper tool which can be used by developers so any ideas from you side would mean a lot