Enable AI assistants to help you develop ANTLR4 grammars through natural conversation
The ANTLR4 MCP Server lets you work with ANTLR4 grammars using AI assistants like Claude and Cursor. Just paste your grammar into a conversation and get instant validation, parsing, and analysis.
You: Can you validate this calculator grammar?
grammar Calculator;
expr : expr ('*'|'/') expr
| expr ('+'|'-') expr
| NUMBER
;
NUMBER : [0-9]+ ;
Claude: β Your grammar is valid! However, I notice potential ambiguity due to left-recursion...
Optimized dual-path architecture:
Operation | Performance | Architecture |
---|---|---|
Grammar validation | 10-50ms | β‘ Fast path via interpreter mode |
Parse sample | 20-100ms | β‘ Instant parsing with caching |
Memory per grammar | 5-10MB | πΎ Efficient memory usage |
Advanced visualization | 500-2000ms | π Full compilation when needed |
Feature | Description | Performance |
---|---|---|
π Grammar Validation | Syntax checking with structured errors | β‘ Fast |
π Parse Sample | Test grammars with sample inputs, LISP trees | β‘ Fast |
Find parsing conflicts with runtime analysis | β‘ Fast | |
π Call Graph Analysis | Rule dependencies and structure analysis | β‘ Fast |
π’ Complexity Analysis | Grammar complexity metrics and insights | β‘ Fast |
β»οΈ Left-Recursion Analysis | Detect and analyze left-recursion patterns | β‘ Fast |
π― Multi-target Compilation | Generate parsers for Java, Python, JavaScript | π Compilation |
π§ͺ Test Input Generation | Automatic sample test case generation | β‘ Fast |
π ATN Visualization | Visual automaton state machines | π Compilation |
π― Decision Visualization | Visualize parser decision points and DFA | π Compilation |
10 Tools Optimized | 460+ Tests Passing | Production Ready
- Docker Desktop (4.0+) - Download here
- Claude Desktop or Cursor IDE
- Clone and build:
git clone https://github.com/sshailabh/antlr4-mcp-server.git
cd antlr4-mcp-server
./docker/build.sh
- Configure Claude Desktop:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
:
{
"mcpServers": {
"antlr": {
"command": "docker",
"args": ["run", "-i", "--rm", "antlr4-mcp-server:latest"]
}
}
}
- Restart Claude Desktop - Done! π
Add to Cursor MCP settings:
{
"mcpServers": {
"antlr": {
"command": "docker",
"args": ["run", "-i", "--rm", "antlr4-mcp-server:latest"]
}
}
}
You: Check my JSON grammar for errors
[Paste your grammar]
Claude validates syntax and reports any issues
You: Parse this JSON: {"name": "test", "value": 42}
[Include your JSON grammar]
Claude shows you the parse tree
You: Are there any ambiguities in my expression grammar?
Claude analyzes and suggests fixes
You: Profile my grammar's performance on this large input
Claude shows decision statistics and timing metrics
For large grammars, increase Docker memory:
{
"mcpServers": {
"antlr": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--memory=1g",
"antlr4-mcp-server:latest"
]
}
}
}
{
"mcpServers": {
"antlr": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "LOGGING_LEVEL_ROOT=DEBUG",
"antlr4-mcp-server:latest"
]
}
}
}
- β Input Validation: Grammar names, rule names, file paths validated against injection attacks
- β Resource Limits: Memory (512MB), CPU, timeout (30s) constraints enforced
- β Docker Isolation: Non-root user, read-only filesystem, tmpfs for temp files
- β Path Protection: Symlink blocking, directory traversal prevention
- β Process Security: Command whitelisting, output limiting, no shell expansion
Default limits (configurable via application.yml
):
antlr:
max-grammar-size-mb: 10
max-input-size-mb: 1
max-response-size-kb: 50
compilation-timeout-seconds: 30
DO NOT create public issues for security vulnerabilities.
Email security reports to: [shailabhshashank@gmail.com]
Response Timeline:
- 24 hours: Initial acknowledgment
- 72 hours: Preliminary assessment
- 7 days: Fix development for critical issues
# Prerequisites: JDK 17+, Maven 3.8+, Docker
git clone https://github.com/sshailabh/antlr4-mcp-server.git
cd antlr4-mcp-server
# Build with tests
./mvnw clean package
# Run tests
./mvnw test
# Build Docker image
./docker/build.sh
# All tests (349 tests)
./mvnw test
# Specific test class
./mvnw test -Dtest=GrammarCompilerTest
# Integration tests only
./mvnw test -Dtest=*IntegrationTest
antlr4-mcp-server/
βββ src/main/java/.../antlr4mcp/
β βββ service/ # Core services (compiler, interpreter, analyzers)
β βββ tools/ # MCP tool implementations (10 tools optimized)
β βββ model/ # Data models and DTOs
β βββ analysis/ # Call graph, complexity, left-recursion analysis
β βββ codegen/ # Multi-target code generation
β βββ infrastructure/ # Imports, caching, resources
β βββ visualization/ # SVG/DOT diagram generation
β βββ security/ # Input validation, resource limits
βββ docs/ # Documentation (usage, tool analysis, examples)
βββ docker/ # Docker build scripts
Current Status: 10 tools optimized for optimal LLM usage with dual-path performance architecture.
Core Tools (Essential):
validate_grammar
- Grammar syntax validationparse_sample
- Sample input parsing & testingdetect_ambiguity
- Ambiguity detection with examplesanalyze_call_graph
- Rule dependencies & structure analysisanalyze_complexity
- Grammar complexity metricsanalyze_left_recursion
- Left-recursion pattern analysiscompile_grammar_multi_target
- Multi-language code generationgenerate_test_inputs
- Automatic test case generation
Advanced Tools (Specialized):
visualize_atn
- Internal ATN structure visualizationvisualize_dfa
- Decision point & DFA state analysis
See Tool Analysis for detailed tool descriptions and architecture.
- Usage Guide - Complete tool reference with examples
- Tool Analysis - Complete tool reference and architecture guide
- API Schemas - Tool specifications
- Fast Path Tools (8 tools): 10-50ms via GrammarInterpreter + caching
- Slow Path Tools (2 tools): 500-2000ms via full compilation
- Optimized Grammar Loading: Automatic fallback from fast to slow path
- Verify Docker is running:
docker ps
- Check image exists:
docker images | grep antlr4-mcp-server
- Test manually:
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | \ docker run -i --rm antlr4-mcp-server:latest
- Restart Claude Desktop/Cursor completely
- Ensure proper grammar declaration:
grammar MyGrammar;
- Check semicolons after all rules
- Review Docker logs:
docker logs <container-id>
macOS/Linux:
sudo usermod -aG docker $USER
# Log out and back in
Windows (WSL2):
- Ensure Docker Desktop is running
- Enable WSL2 integration in Docker Desktop settings
- ANTLR Official Site - ANTLR documentation
- ANTLR4 GitHub - ANTLR source code
- Model Context Protocol - MCP specification
- Java MCP SDK - Official Java SDK
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See
/docs
directory