Cedardiff MCP Server
# cedardiff MCP Server
Edit files with CEDARScript grammar rules
This is a TypeScript-based MCP server that implements CEDARScript, a SQL-like language for code manipulation. It provides:
- A comprehensive grammar for code manipulation commands
- Tools for executing CEDARScript operations
- Support for complex pattern matching and transformations
## Features
### Grammar
- SQL-like syntax for code operations (DDL, DML)
- Support for file, function, class, and method targeting
- Pattern matching with regex, prefix/suffix, and indentation rules
- Block-level code manipulation capabilities
### Tools
- `edit_file` - Execute CEDARScript commands
- Takes script and working directory as parameters
- Supports file creation, deletion, moving, and updating
- Pattern-based code transformations
### Implementation Status
Current testing has revealed:
- Command parsing works correctly
- Grammar supports complex operations
- File writing mechanism needs improvement
- Success messages returned but changes not persisted
## Development
Install dependencies:
```bash
npm install
```
Build the server:
```bash
npm run build
```
For development with auto-rebuild:
```bash
npm run watch
```
## Installation
To use with Claude Desktop, add the server config:
On MacOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
On Windows: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"cedardiff": {
"command": "/path/to/cedardiff/build/index.js"
}
}
}
```
### Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:
```bash
npm run inspector
```
The Inspector will provide a URL to access debugging tools in your browser.
## ES Module Migration
The project has been migrated to use ES modules. Key changes include:
- Added `"type": "module"` to `package.json`
- Updated `tsconfig.json` to use `"module": "ESNext"`
- Converted import/export statements to ES module syntax
- Updated type definitions to be compatible with ES modules
### Compatibility Notes
- Ensure you are using Node.js version 12 or higher
- Use `import` instead of `require()` for module imports
- Use `.js` extension when importing local files
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The tool 'edit_file' has a clearly distinct purpose that cannot be confused with any other tool in this set.
Since there is only one tool, naming consistency is inherently perfect. The tool name 'edit_file' follows a clear verb_noun pattern, and there are no other tools to cause inconsistency.
A single tool is generally too few for most server purposes, as it limits functionality and suggests an incomplete or narrow scope. For a server named 'Cedardiff MCP Server' which implies CEDAR-related operations, one tool feels insufficient to cover typical needs like validation, querying, or other file operations.
The server is severely incomplete for its apparent domain of CEDAR operations. With only an 'edit_file' tool, there are obvious gaps such as creating, reading, validating, or deleting files, and no coverage of other CEDAR-related tasks like policy management or analysis.