Parses Python codebases with LibCST and exposes symbol-level tools for agents that need to navigate unfamiliar repositories without hallucinating. You get definition lookup, function signatures, same-file reference tracking, direct call chains, and basic class hierarchy queries. Built as the middle layer in a three-server onboarding stack alongside repo-mapper for structure and test-runner for verification. No LLM inference, so missing symbols return structured not-found responses instead of invented answers. Stays strictly within single-file scope in v1: no cross-file imports, no alias resolution, no dynamic lookups. Reach for this when you're building codebase exploration agents that need deterministic symbol grounding and can't afford to make up functions that don't exist.
MCP server for deterministic Python codebase symbol exploration.
mcp-ast-explorer indexes Python source files with LibCST and exposes focused MCP tools for codebase onboarding: definition lookup, function signatures, local references, direct call chains, and simple class hierarchy queries.
mcp-ast-explorer is the semantic symbol layer in a three-server MCP tool stack for Project 6 wayfinder, a codebase onboarding agent.
mcp-repo-mapper maps repository structure, languages, entry points, framework evidence, and Python dependency edges.mcp-ast-explorer provides symbol-grounded Python definition, signature, reference, call-chain, and class-hierarchy lookups.mcp-test-runner runs local pytest/Jest checks and coverage summaries so agent claims can be verified against execution.In wayfinder, this server feeds entry-point and symbol explanation while refusing to invent missing symbols.
This is a Python-only v1. TypeScript is registered as an unsupported backend placeholder so the server has an explicit extension point, but TypeScript analysis is not implemented yet.
The server does not use an LLM for symbol lookup. If a requested symbol or class is not present in the parsed index, tools return a structured not-found result instead of inventing an answer.
| Tool | Purpose |
|---|---|
health() | Returns ok for smoke checks. |
find_definition(path, symbol, language="python") | Finds a module, class, function, or method definition. |
function_signature(path, symbol, language="python") | Returns the signature for a function or method symbol. |
find_references(path, symbol, language="python") | Returns same-module CST name references for an existing symbol. |
call_chain(path, from_symbol, depth=2, language="python") | Returns direct callers detected from local references. |
class_hierarchy(path, class_name, language="python") | Returns direct subclasses detected from simple base-class names. |
class Child(Base): inheritance.call_chain currently returns direct callers only; recursive multi-hop expansion is not implemented.class_hierarchy currently returns direct subclasses only and handles simple base names.Install dependencies:
uv sync --extra dev
Run the MCP server:
uv run mcp-ast-explorer
Run verification:
uv run ruff check .
uv run mypy
uv run pytest
MIT