AI-Assisted Code Transformations via Model Context Protocol
CEDARScript MCP Server exposes the powerful CEDARScript Editor through the Model Context Protocol (MCP), enabling AI agents like Claude to perform intelligent, semantic-aware code transformations.
- š Secure by Default: Path validation, sandboxing, read-only mode
- šÆ Dry-Run Mode: Preview changes before applying
- š² Tree-Sitter Powered: Language-aware code analysis
- š” STDIO Transport: Simple subprocess integration (no HTTP overhead)
- š ļø Production-Ready: Comprehensive logging, error handling, testing
pip install cedarscript-mcp-server
-
Open Claude Desktop configuration (usually
~/.config/Claude/claude_desktop_config.json) -
Add CEDARScript MCP server:
{
"mcpServers": {
"cedarscript": {
"command": "python",
"args": [
"-m",
"cedarscript_mcp.server",
"--root",
"/path/to/your/project"
]
}
}
}-
Restart Claude Desktop
-
Ask Claude to use CEDARScript:
- "Parse this CEDARScript command:
UPDATE myfile.py SET imports.append('import os')" - "Apply this transformation (preview first):
UPDATE calculator.py SET function:calculate REPLACE 'x + 1' WITH 'x + 2'"
- "Parse this CEDARScript command:
# Start server (STDIO mode) python -m cedarscript_mcp.server --root /path/to/project # With custom options python -m cedarscript_mcp.server \ --root /path/to/project \ --read-only \ --log-level DEBUG \ --max-file-size 10485760
CEDARScript MCP Server is a thin adapter layer that:
- Accepts JSON-RPC requests over STDIO
- Validates paths and security constraints
- Delegates to CEDARScript Editor for execution
- Returns structured results or error messages
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā Claude Desktop / VS Code ā
ā (MCP Client) ā
āāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā
ā JSON-RPC over STDIO
āāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā
ā CEDARScript MCP Server ā
ā ⢠Security (path validation) ā
ā ⢠Tools (parse, apply, list) ā
ā ⢠Adapters (protocol mapping) ā
āāāāāāāāāāāāāā¬āāāāāāāāāāāāāāāāāāāāā
ā
āāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāā
ā CEDARScript Editor (core) ā
ā ⢠AST parsing ā
ā ⢠Tree-sitter analysis ā
ā ⢠File transformations ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Parse and validate CEDARScript commands without execution.
Parameters:
content(string): CEDARScript commands
Returns: Parsed AST commands
Example:
{
"content": "UPDATE myfile.py SET imports.append('import os')"
}Apply CEDARScript transformations to code files.
Parameters:
commands(string): CEDARScript commandsroot(string): Project root directory pathdry_run(boolean, default: true): Preview changes without writing
Returns: Results, diffs (if dry_run), affected files
Example:
{
"commands": "UPDATE calculator.py SET function:add REPLACE 'x + y' WITH 'x + y + 1'",
"root": "/path/to/project",
"dry_run": true
}List server capabilities and supported features.
Returns: Server version, features, security settings
CEDARSCRIPT_ROOT: Default project root (default: current directory)CEDARSCRIPT_LOG_LEVEL: Logging level (DEBUG, INFO, WARNING, ERROR)CEDARSCRIPT_LOG_FORMAT: Log format (text, json)CEDARSCRIPT_READ_ONLY: Force read-only mode (true/false)CEDARSCRIPT_MAX_FILE_SIZE: Max file size in bytes (default: 10485760)
python -m cedarscript_mcp.server \ --root /path/to/project \ # Project root directory --read-only \ # Enable read-only mode --log-level DEBUG \ # Logging level --max-file-size 10485760 # Max file size (bytes)
- All file paths are validated against the specified root directory
- Path traversal attacks (
../../../etc/passwd) are blocked - Symlinks are resolved and validated
Files matching these patterns are automatically rejected:
.git/**,node_modules/**,__pycache__/**.env,*.env,.env.*credentials.json,*.key,*.pem
When enabled, all write operations are rejected (parsing/analysis only).
Configurable maximum file size (default: 10MB) to prevent resource exhaustion.
# Clone repository git clone https://github.com/CEDARScript/cedarscript-mcp-server.git cd cedarscript-mcp-server # Install development dependencies make install # Run tests make test # Run with coverage make test-cov # Format and lint make check
make help # Show all available targets make install # Install with dev dependencies make test # Run full test suite make test-fast # Run tests (skip integration) make check # Format, lint, security checks make run # Launch server (demo mode) make build # Build distribution packages
See planning/MAKEFILE_DESIGN.md for complete target documentation.
# Run all tests make test # With coverage report make test-cov # Watch mode (auto-rerun on changes) make test-watch # Test against multiple cedarscript-editor versions make test-matrix
- ARCHITECTURE.md: System design, protocol mapping, security model
- IMPLEMENTATION.md: Step-by-step implementation guide
- MAKEFILE_DESIGN.md: Makefile targets and automation
- Examples: Claude Desktop, VS Code, quickstart guides
See examples/claude_desktop.json for drop-in configuration.
See examples/vscode_mcp.json for VS Code setup.
from cedarscript_mcp import PathValidator, apply_cedarscript_tool # Create validator validator = PathValidator(Path("/path/to/project")) # Apply transformation (dry-run) result = apply_cedarscript_tool( commands="UPDATE myfile.py SET imports.append('import os')", root="/path/to/project", dry_run=True, validator=validator ) print(result)
Issue: ModuleNotFoundError: No module named 'mcp'
Solution: Install MCP SDK: pip install mcp>=1.0.0
Issue: SecurityError: Path escape attempt
Solution: Ensure file paths are within the specified root directory.
Issue: SecurityError: Write operation rejected
Solution: Remove --read-only flag or set CEDARSCRIPT_READ_ONLY=false.
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Run
make check testbefore committing - Submit a pull request
Apache License 2.0 - see LICENSE for details.
- CEDARScript Editor - Core transformation library
- CEDARScript AST Parser - Language parser
- Model Context Protocol - MCP specification
- Issues: GitHub Issues
- Documentation: GitHub README
- Email: [email protected]
Made with ā¤ļø by the CEDARScript Team