5.8 KiB
CtrEditor MCP Server Documentation
🎯 Overview
The CtrEditor MCP (Model Context Protocol) Server transforms the CtrEditor WPF application into a programmable automation platform for debugging, testing, and simulation control. This server enables remote control of all major application features through JSON-RPC style communication.
🚀 Architecture
Communication Flow
LLM/Client ↔ MCP Proxy (Python) ↔ CtrEditor MCP Server (C#) ↔ WPF Application
Connection Setup
- Protocol: TCP Socket on port 5006
- Format: JSON-RPC style messages
- Proxy: Python proxy for VS Code Copilot integration
VS Code Configuration
"ctreditor": {
"command": "C:/Users/migue/miniconda3/envs/mcp_proxy/python.exe",
"args": [
"d:/Proyectos/Scripts/MCP_Proxy/mcp_proxy.py",
"--host", "localhost",
"--port", "5006",
"--name", "CtrEditor",
"--description", "CtrEditor WPF Application MCP Server for debugging and testing"
]
}
📋 Available Tools
🔧 Object Management
list_objects
Description: Get complete list of all simulation objects
Parameters: None
Returns: Array of objects with full metadata (ID, name, type, position, properties)
create_object
Description: Create a new simulation object
Parameters:
type
(string): Object type (e.g., "osHydTank", "osHydPump")x
(number): X position in metersy
(number): Y position in meters
update_object
Description: Modify properties of existing object
Parameters:
id
(string): Object IDproperties
(object): JSON object with properties to update
delete_objects
Description: Remove objects from simulation
Parameters:
ids
(array): Array of object IDs to delete
list_object_types
Description: Get list of all creatable object types
Parameters: None
⚙️ Simulation Control
start_simulation
Description: Start the physics simulation
Parameters: None
stop_simulation
Description: Stop the physics simulation
Parameters: None
get_simulation_status
Description: Get current simulation state
Parameters: None
Returns: Status info (running, object count, etc.)
🔌 PLC Integration
get_plc_status
Description: Get PLC connection status
Parameters: None
Returns: Connection state and status information
📸 Visual Documentation
take_screenshot
Description: Capture canvas screenshot with high resolution
Parameters (all optional):
x
(number): X position in meters for partial capturey
(number): Y position in meters for partial capturewidth
(number): Width in meters for partial captureheight
(number): Height in meters for partial captureinclude_background
(boolean): Include canvas background (default: false)
Features:
- High Resolution: 2x scale for full canvas, 3x for partial captures
- Auto-Directory: Saves to
/screenshots/
subdirectory - Detailed Response: File size, dimensions, timestamps, paths
💾 Project Management
save_project
Description: Save current project state
Parameters: None
🎨 Key Features
📊 Rich Object Information
- Complete Properties: All object properties in JSON format
- Simulation Data: Real-time physics and hydraulic states
- Coordinate System: All positions in engineering meters
- Type Safety: Full .NET type information preserved
🖼️ Advanced Screenshots
- Meter-Based Coordinates: Natural engineering units
- High Resolution: Anti-aliased, print-quality images
- Flexible Areas: Full canvas or custom rectangular regions
- Background Control: With/without canvas background
🔄 Real-Time Monitoring
- Live Updates: Monitor simulation state changes
- Property Tracking: Observe dynamic property changes during simulation
- Performance Data: Track flow rates, pressures, speeds, etc.
🛡️ Error Handling
- Detailed Errors: Comprehensive error messages with context
- Safe Operations: Thread-safe UI operations via Dispatcher
- Graceful Degradation: Handles connection issues and timeouts
🎯 Use Cases
🔬 Simulation Debugging
- Pre-Simulation: Inspect object configurations and positions
- Runtime Monitoring: Track dynamic properties during simulation
- Post-Analysis: Compare before/after states
- Visual Verification: Screenshot specific areas for documentation
🤖 Automated Testing
- Regression Testing: Verify simulation behavior consistency
- Performance Benchmarking: Monitor simulation performance metrics
- Configuration Validation: Ensure proper object setup
- Visual Regression: Compare screenshots across versions
📚 Documentation Generation
- Auto-Documentation: Extract object configurations automatically
- Visual Documentation: Generate annotated screenshots
- State Reports: Create detailed simulation state reports
- Training Materials: Generate step-by-step simulation guides
🔧 Technical Implementation
Core Components
- MCPServer.cs: Main TCP server with JSON-RPC handling
- Tool Handlers: Specialized handlers for each operation type
- Thread Safety: UI operations via WPF Dispatcher
- Error Management: Comprehensive exception handling
Performance Optimizations
- Lazy Connection: Connect only when needed
- Efficient Serialization: Optimized JSON generation
- Memory Management: Proper resource cleanup
- High-Resolution Rendering: Optimized screenshot generation
Security Considerations
- Local-Only: Bound to localhost for security
- No File System Access: Limited to application operations
- Controlled Operations: No dangerous system operations
- Sandboxed: Isolated from system configuration