An experimental MCP server that uses the ast-grep CLI for code structural search, linting, and rewriting.
An experimental Model Context Protocol (MCP) server that provides AI assistants with powerful structural code search capabilities using ast-grep.
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:
Install ast-grep: Follow ast-grep installation guide
# macOS
brew install ast-grep
nix-shell -p ast-grep
cargo install ast-grep --locked
Install uv: Python package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
MCP-compatible client: Such as Cursor, Claude Desktop, or other MCP clients
Clone this repository:
git clone https://github.com/ast-grep/ast-grep-mcp.git
cd ast-grep-mcp
Install dependencies:
uv sync
Verify ast-grep installation:
ast-grep --version
uvx
You can run the server directly from GitHub using uvx
:
uvx --from git+https://github.com/ast-grep/ast-grep-mcp ast-grep-server
This is useful for quickly trying out the server without cloning the repository.
Add to your MCP settings (usually in .cursor-mcp/settings.json
):
{
"mcpServers": {
"ast-grep": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/ast-grep-mcp", "run", "main.py"],
"env": {}
}
}
}
Add to your Claude Desktop MCP configuration:
{
"mcpServers": {
"ast-grep": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/ast-grep-mcp", "run", "main.py"],
"env": {}
}
}
}
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):
--config /path/to/sgconfig.yaml
AST_GREP_CONFIG=/path/to/sgconfig.yaml
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.
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:
test_match_code_rule
Test ast-grep YAML rules against code snippets before applying them to larger codebases.
Use cases:
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:
Found 2 matches:
path/to/file.py:10-15
def example_function():
# function body
return result
path/to/file.py:20-22
def another_function():
pass
Use cases:
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:
Use Query:
Find all console.log statements
AI will generate rules like:
id: find-console-logs
language: javascript
rule:
pattern: console.log($$$)
User Query:
Find async functions that use await
AI will generate rules like:
id: async-with-await
language: javascript
rule:
all:
- kind: function_declaration
- has:
pattern: async
- has:
pattern: await $EXPR
stopBy: end
ast-grep supports many programming languages including:
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.
stopBy: end
to relational rulesdump_syntax_tree
to understand the AST structureThis is an experimental project. Issues and pull requests are welcome!
Provides LLM access to the Cucumber Studio testing platform for managing and executing tests.
Search and install OriginUI components, with details fetched dynamically from the OriginUI JSON registry.
Search Metal Framework documentation and generate code.
A Cookiecutter template for creating MCP servers with Apple container support and configurable transport methods.
An iOS mobile automation server using Appium and WebDriverAgent, built with clean architecture and SOLID principles.
An MCP server for the SourceSync.ai API to manage and synchronize source code context.
Evaluate Pharo Smalltalk expressions and get system information via a local NeoConsole server.
A simple note storage system with tools for adding notes and generating scripts from them.
Perform quantum computations using OpenAI and IBM Quantum APIs.
A toolkit for interacting with the Sui blockchain and integrating MCP SDK features, with support for multiple network environments.