Enables structural code search and analysis of codebases using Abstract Syntax Tree (AST) pattern matching to find code patterns, functions, classes, and programming constructs across multiple languages including JavaScript, TypeScript, Python, Rust, Go, Java, C/C++, and C#.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ast-grep MCP Serverfind all async functions in the current directory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ast-grep MCP Server
An experimental Model Context Protocol (MCP) server that provides AI assistants with powerful structural code search capabilities using ast-grep.
Overview
This MCP server enables AI assistants (like Cursor, Claude Desktop, etc.) to search and analyze codebases using Abstract Syntax Tree (AST) pattern matching rather than simple text-based search. By leveraging ast-grep's structural search capabilities, AI can:
Find code patterns based on syntax structure, not just text matching
Search for specific programming constructs (functions, classes, imports, etc.)
Write and test complex search rules using YAML configuration
Debug and visualize AST structures for better pattern development
Prerequisites
Install ast-grep: Follow ast-grep installation guide
# macOS brew install ast-grep nix-shell -p ast-grep cargo install ast-grep --lockedInstall uv: Python package manager
curl -LsSf https://astral.sh/uv/install.sh | shMCP-compatible client: Such as Cursor, Claude Desktop, or other MCP clients
Installation
Clone this repository:
git clone https://github.com/ast-grep/ast-grep-mcp.git cd ast-grep-mcpInstall dependencies:
uv syncVerify ast-grep installation:
ast-grep --version
Running with uvx
You can run the server directly from GitHub using uvx:
This is useful for quickly trying out the server without cloning the repository.
Configuration
For Cursor
Add to your MCP settings (usually in .cursor-mcp/settings.json):
For Claude Desktop
Add to your Claude Desktop MCP configuration:
Custom ast-grep Configuration
The MCP server supports using a custom sgconfig.yaml file to configure ast-grep behavior.
See the ast-grep configuration documentation for details on the config file format.
You can provide the config file in two ways (in order of precedence):
Command-line argument:
--config /path/to/sgconfig.yamlEnvironment variable:
AST_GREP_CONFIG=/path/to/sgconfig.yaml
Usage
This repository includes comprehensive ast-grep rule documentation in ast-grep.mdc. The documentation covers all aspects of writing effective ast-grep rules, from simple patterns to complex multi-condition searches.
You can add it to your cursor rule or Claude.md, and attach it when you need AI agent to create ast-grep rule for you.
The prompt will ask LLM to use MCP to create, verify and improve the rule it creates.
Features
The server provides four main tools for code analysis:
π dump_syntax_tree
Visualize the Abstract Syntax Tree structure of code snippets. Essential for understanding how to write effective search patterns.
Use cases:
Debug why a pattern isn't matching
Understand the AST structure of target code
Learn ast-grep pattern syntax
π§ͺ test_match_code_rule
Test ast-grep YAML rules against code snippets before applying them to larger codebases.
Use cases:
Validate rules work as expected
Iterate on rule development
Debug complex matching logic
π― find_code
Search codebases using simple ast-grep patterns for straightforward structural matches.
Parameters:
max_results: Limit number of complete matches returned (default: unlimited)output_format: Choose between"text"(default, ~75% fewer tokens) or"json"(full metadata)
Text Output Format:
Use cases:
Find function calls with specific patterns
Locate variable declarations
Search for simple code constructs
π find_code_by_rule
Advanced codebase search using complex YAML rules that can express sophisticated matching criteria.
Parameters:
max_results: Limit number of complete matches returned (default: unlimited)output_format: Choose between"text"(default, ~75% fewer tokens) or"json"(full metadata)
Use cases:
Find nested code structures
Search with relational constraints (inside, has, precedes, follows)
Complex multi-condition searches
Usage Examples
Basic Pattern Search
Use Query:
Find all console.log statements
AI will generate rules like:
Complex Rule Example
User Query:
Find async functions that use await
AI will generate rules like:
Supported Languages
ast-grep supports many programming languages including:
JavaScript/TypeScript
Python
Rust
Go
Java
C/C++
C#
And many more...
For a complete list of built-in supported languages, see the ast-grep language support documentation.
You can also add support for custom languages through the sgconfig.yaml configuration file. See the custom language guide for details.
Troubleshooting
Common Issues
"Command not found" errors: Ensure ast-grep is installed and in your PATH
No matches found: Try adding
stopBy: endto relational rulesPattern not matching: Use
dump_syntax_treeto understand the AST structurePermission errors: Ensure the server has read access to target directories
Contributing
This is an experimental project. Issues and pull requests are welcome!
Related Projects
ast-grep - The core structural search tool
Model Context Protocol - The protocol this server implements
FastMCP - The Python MCP framework used
Codemod MCP - Gives AI assistants tools like tree-sitter AST and node types, ast-grep instructions (YAML and JS ast-grep), and Codemod CLI commands to easily build, publish, and run ast-grep based codemods.