Modes MCP Server
by ccc0168
Verified
# Modes MCP Server
An MCP server for managing Roo's custom operational modes, providing programmatic control over mode configuration and management.
## Features
- Full CRUD operations for custom modes
- Schema validation with Zod
- File system watching for config changes
- Error handling with standard MCP error codes
- Atomic file operations
## Installation
```bash
# Clone the repository
git clone https://github.com/mkc909/modes-mcp-server.git
cd modes-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
```
## Configuration
### 1. Environment Variables
Copy `.env.example` to `.env` and adjust as needed:
```bash
cp .env.example .env
```
Available environment variables:
- `MODES_CONFIG_PATH`: Path to custom modes configuration file (default: `%APPDATA%/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_custom_modes.json`)
### 2. Custom Modes Configuration
Create a JSON file for your custom modes configuration. See `examples/modes.example.json` for the format:
```json
{
"customModes": [
{
"slug": "example-mode",
"name": "Example Mode",
"roleDefinition": "Example role definition describing the mode's capabilities and responsibilities.",
"groups": [
"read",
["edit", {
"fileRegex": "\\.md$",
"description": "Can edit markdown files only"
}],
"command",
"mcp"
],
"customInstructions": "Example custom instructions for the mode."
}
]
}
```
### 3. MCP Settings
Add the server configuration to your MCP settings file (typically at `%APPDATA%/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/cline_mcp_settings.json`). See `examples/mcp-settings.example.json` for the format:
```json
{
"mcpServers": {
"modes": {
"command": "node",
"args": ["/path/to/modes-mcp-server/build/index.js"],
"env": {
"MODES_CONFIG_PATH": "/path/to/custom/modes.json"
},
"disabled": false,
"alwaysAllow": []
}
}
}
```
## Operational Modes Framework
The server manages a comprehensive set of operational modes:
### Core System Modes
1. **Planning Mode** 🎯
- Strategic Planning Specialist
- System design and resource allocation
- Project roadmap development
2. **Analytics Mode** 📊
- Data Analysis Expert
- Metrics tracking and analysis
- Performance monitoring
3. **Research Mode** 🔍
- System Research Specialist
- Best practices research
- Solution exploration
4. **Implementation Mode** ⚙️
- Operations Implementation Expert
- System deployment
- Process execution
5. **Troubleshooting Mode** 🔧
- System Resolution Specialist
- Problem identification
- Issue resolution
6. **Quality Control Mode** ✅
- Quality Assurance Expert
- System validation
- Performance verification
7. **Integration Mode** 🔄
- Systems Integration Specialist
- Cross-system coordination
- Workflow optimization
8. **Documentation Mode** 📝
- Knowledge Management Specialist
- Process documentation
- Standard maintenance
9. **Session Management Mode** ⚡
- Session Management Specialist
- Daily workflow orchestration
- State management
### Specialized Modes
- **Trade Ops Manager**
- Systematic trading and risk management
- Trade documentation and analysis
- Market analysis and strategy optimization
## Mode Transition Flow
```mermaid
graph TD
A[Planning] --> B[Research]
B --> C[Implementation]
C --> D[Integration]
D --> E[Quality Control]
E --> F[Analytics]
F --> G[Troubleshooting]
G --> H[Documentation]
H --> A
```
## Available Tools
### list_modes
Lists all custom modes currently configured.
### get_mode
Get details of a specific mode by its slug.
Parameters:
- `slug`: The unique identifier of the mode
### create_mode
Create a new custom mode.
Parameters:
- `slug`: Unique identifier (lowercase letters, numbers, and hyphens)
- `name`: Display name for the mode
- `roleDefinition`: Detailed description of the mode's role and capabilities
- `groups`: Array of allowed tool groups
- `customInstructions`: (optional) Additional instructions for the mode
### update_mode
Update an existing custom mode.
Parameters:
- `slug`: The unique identifier of the mode to update
- `updates`: Object containing the fields to update (name, roleDefinition, groups, customInstructions)
### delete_mode
Delete a custom mode.
Parameters:
- `slug`: The unique identifier of the mode to delete
### validate_mode
Validate a mode configuration without saving it.
Parameters:
- `mode`: Complete mode configuration object to validate
## Mode Configuration Schema
```typescript
interface CustomMode {
slug: string; // Lowercase letters, numbers, and hyphens only
name: string; // Display name
roleDefinition: string; // Detailed description
groups: (string | [string, { fileRegex: string, description: string }])[];
customInstructions?: string; // Optional additional instructions
}
```
## Development
1. Make changes to the source code in `src/`
2. Build the project:
```bash
npm run build
```
3. Start the server:
```bash
npm start
```
## Best Practices
1. **Mode Selection**
- Choose appropriate mode for task
- Follow mode-specific workflows
- Use designated tool groups
2. **Mode Transitions**
- Follow natural transition flow
- Complete current mode tasks
- Preserve context between modes
3. **Configuration Management**
- Validate changes before saving
- Maintain clear role definitions
- Document mode capabilities
## Error Handling
The server uses standard MCP error codes:
- `InvalidParams`: Invalid input parameters or mode not found
- `MethodNotFound`: Unknown tool requested
- `InternalError`: File system errors or other internal issues
## Testing
See [TESTING.md](TESTING.md) for comprehensive test cases and validation procedures.
## Contributing
1. Fork repository
2. Create feature branch
3. Submit pull request
4. Follow coding standards
## License
MIT License - see [LICENSE](LICENSE) for details