# AnyRepair Examples
This directory contains examples demonstrating how to use the AnyRepair library and MCP server.
## Directory Structure
```
examples/
├── data/ # Test data files organized by format
│ ├── json/ # JSON test files (sample, malformed, complex)
│ ├── yaml/ # YAML test files
│ ├── markdown/ # Markdown test files
│ ├── xml/ # XML test files
│ ├── toml/ # TOML test files
│ ├── csv/ # CSV test files
│ ├── ini/ # INI test files
│ └── diff/ # Unified diff test files
├── *.rs # Rust code examples
└── README.md # This file
```
See [data/README.md](data/README.md) for detailed information about test data files.
## MCP Server Examples
### 1. JSON Repair Example
**File**: `mcp_repair_json.rs`
Demonstrates how to repair malformed JSON using the MCP server:
- Trailing commas
- Single quotes
- Missing quotes
- Validation
**Run:**
```bash
cargo run --example mcp_repair_json
```
**Output:**
```
=== AnyRepair MCP Server - JSON Repair Example ===
Example 1: Repair JSON with trailing comma
-------------------------------------------
Input: {"name": "John", "age": 30,}
Output: {"repaired": "{\"name\": \"John\", \"age\": 30}", "confidence": 0.95, "success": true}
...
```
### 2. Multi-Format Example
**File**: `mcp_multi_format.rs`
Demonstrates repairing content in multiple formats:
- YAML
- Markdown
- XML
- TOML
- CSV
- INI
- Validation for all formats
**Run:**
```bash
cargo run --example mcp_multi_format
```
**Output:**
```
=== AnyRepair MCP Server - Multi-Format Example ===
Example 1: Repair YAML
----------------------
Input:
name: Alice
age: 30
city: New York
Output:
name: Alice
age: 30
city: New York
...
```
### 3. Server Usage Pattern Example
**File**: `mcp_server_usage.rs`
Demonstrates real-world usage patterns:
- Repair and validate workflow
- Batch repair operations
- Format detection
- Error handling
- Tool discovery
**Run:**
```bash
cargo run --example mcp_server_usage
```
**Output:**
```
=== AnyRepair MCP Server - Usage Pattern Example ===
Scenario 1: Repair and validate JSON
------------------------------------
Original: {"name": "Alice", "age": 30,}
Repaired: {"name": "Alice", "age": 30}
Valid: true
...
```
### 4. MCP Protocol Documentation
**File**: `mcp_protocol.md`
Complete reference for the MCP server protocol:
- Request/response format
- All available tools
- Parameter specifications
- Real-world examples
- Integration guides (Python, Node.js, cURL)
- Claude integration
- Troubleshooting
## Quick Start
### Using the Library Directly
```rust
use anyrepair::AnyrepairMcpServer;
use serde_json::json;
fn main() {
let server = AnyrepairMcpServer::new();
let input = json!({
"content": r#"{"key": "value",}"#
});
match server.process_tool_call("repair_json", &input) {
Ok(result) => println!("Result: {}", result),
Err(e) => eprintln!("Error: {}", e),
}
}
```
### Running the MCP Server
```bash
# Build the MCP server binary
cargo build --bin anyrepair-mcp --release
# Run the server
./target/release/anyrepair-mcp
# In another terminal, send a request
echo '{"tool": "repair_json", "input": {"content": "{\"key\": \"value\",}"}}' | ./target/release/anyrepair-mcp
```
### Integration with Claude
```json
{
"mcpServers": {
"anyrepair": {
"command": "/path/to/anyrepair-mcp"
}
}
}
```
## Available Tools
### Repair Tools
| `repair` | Auto-detect format and repair |
| `repair_json` | Repair JSON |
| `repair_yaml` | Repair YAML |
| `repair_markdown` | Repair Markdown |
| `repair_xml` | Repair XML |
| `repair_toml` | Repair TOML |
| `repair_csv` | Repair CSV |
| `repair_ini` | Repair INI |
### Validation Tool
| `validate` | Validate content in specified format |
## Example Scenarios
### Scenario 1: Repair LLM JSON Output
```rust
let malformed = r#"{"response": "Hello", "status": "ok",}"#;
let input = json!({"content": malformed});
server.process_tool_call("repair_json", &input)?;
```
### Scenario 2: Validate Configuration Files
```rust
let config = "name = \"app\"\nversion = \"1.0\"";
let input = json!({"content": config, "format": "toml"});
server.process_tool_call("validate", &input)?;
```
### Scenario 3: Batch Process Multiple Items
```rust
let items = vec![
r#"{"id": 1,}"#,
r#"{'id': 2}"#,
r#"{id: 3}"#,
];
for item in items {
let input = json!({"content": item});
server.process_tool_call("repair_json", &input)?;
}
```
### Scenario 4: Auto-Detect and Repair
```rust
let content = "[1, 2, 3,]"; // Could be JSON or YAML
let input = json!({"content": content});
server.process_tool_call("repair", &input)?; // Auto-detects format
```
## Error Handling
All examples include proper error handling:
```rust
match server.process_tool_call("repair_json", &input) {
Ok(result) => {
// Parse and use result
let parsed: Value = serde_json::from_str(&result)?;
println!("Repaired: {}", parsed["repaired"]);
}
Err(e) => {
eprintln!("Error: {}", e);
}
}
```
## Performance Tips
1. **Reuse Server Instance**: Create once, use multiple times
2. **Batch Operations**: Process multiple items sequentially
3. **Format Specificity**: Use specific repair tools when format is known
4. **Large Files**: Use streaming repair for files > 1MB
## Testing Examples
Run all examples:
```bash
cargo run --example mcp_repair_json
cargo run --example mcp_multi_format
cargo run --example mcp_server_usage
```
Run with output:
```bash
cargo run --example mcp_repair_json -- --nocapture
```
## Integration Examples
### Python Integration
```python
import subprocess
import json
def repair_json(content):
result = subprocess.run(
["./target/release/anyrepair-mcp"],
input=json.dumps({
"tool": "repair_json",
"input": {"content": content}
}),
capture_output=True,
text=True
)
return json.loads(result.stdout)
```
### Node.js Integration
```javascript
const { spawn } = require('child_process');
function repairJson(content) {
const process = spawn('./target/release/anyrepair-mcp');
process.stdin.write(JSON.stringify({
tool: 'repair_json',
input: { content }
}));
return new Promise((resolve) => {
process.stdout.on('data', (data) => {
resolve(JSON.parse(data.toString()));
});
});
}
```
## Documentation
- [MCP Server Documentation](../MCP_SERVER.md)
- [MCP Protocol Reference](mcp_protocol.md)
- [Main README](../README.md)
## Support
For issues or questions:
1. Check the [MCP Server Documentation](../MCP_SERVER.md)
2. Review the [Protocol Reference](mcp_protocol.md)
3. Check the [Main README](../README.md)
4. Open an issue on GitHub
## License
Apache-2.0