chronista-club/ichimi-server
If you are the rightful owner of ichimi-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Ichimi Server is a robust process management server designed for Claude Code, utilizing the Model Context Protocol (MCP) for efficient process handling.
Ichimi Server
English |
Process as a Resource - Manage processes as resources
A powerful process management server for Claude Code via the Model Context Protocol (MCP).
⨠Features
Core Features
- š Process Management: Control start, stop, and monitoring of any process via MCP tools
- š Real-time Logging: Capture and stream stdout/stderr outputs
- š Status Monitoring: Track process states and metrics
- šÆ Flexible Filtering: Search processes by state or pattern
- š¾ Persistence: Configuration management in KDL format (
.ichimi/processes.kdl
) - š Auto-start: Automatic process startup with
auto_start
flag
Web Dashboard
- š Modern UI: Sophisticated SPA with Vue 3 + TypeScript + Tabler
- š Real-time Updates: Monitor process states with auto-refresh
- š Search Features: Process search and filtering
- š Dark Mode: Light/dark theme switching
- š± Responsive: Mobile to desktop support
- šÆ Type Safety: Complete typing with TypeScript
- š¦ Component-Oriented: Vue 3 SFC (Single File Component) architecture
MCP Integration
- š MCP Compliant Server: Fully compliant with Model Context Protocol
- š¤ Claude Code Ready: Direct integration with Claude Code
- š ļø Rich Tools: 12+ MCP tools provided
- š” Web API: RESTful API for external integration
š Installation
Using Cargo (Recommended)
# Install from GitHub repository
cargo install --git https://github.com/chronista-club/ichimi-server --tag v0.2.0
# Or install latest from main branch
cargo install --git https://github.com/chronista-club/ichimi-server
From Source
# Clone the repository
git clone https://github.com/chronista-club/ichimi-server
cd ichimi-server
# Release build
cargo build --release
# Binary will be at:
# target/release/ichimi
Configuration
Claude Code Configuration
Add the server to your .mcp.json
or Claude Code settings:
{
"mcpServers": {
"ichimi": {
"type": "stdio",
"command": "ichimi",
"env": {
"RUST_LOG": "info",
"ICHIMI_AUTO_EXPORT_INTERVAL": "300"
}
}
}
}
Verify Connection
In Claude Code, run:
/mcp
You should see "ichimi" server as "connected".
Usage
Available Tools
Basic Tools
echo
- Echo back messages for testingping
- Simple health checkget_status
- Get server status and uptime
Process Management
create_process
- Register a new process configurationstart_process
- Start a registered processstop_process
- Stop a running process gracefullyget_process_status
- Get detailed process statusget_process_output
- Retrieve process stdout/stderr logslist_processes
- List all managed processes with filtersremove_process
- Remove a process from managementexport_processes
- Export all processes to a YAML fileimport_processes
- Import processes from a YAML file
Examples
Managing a Web Server
# Register a web server process
create_process(
id="webserver",
command="python",
args=["-m", "http.server", "8000"],
env={"PYTHONUNBUFFERED": "1"},
cwd="./public"
)
# Start the server
start_process(id="webserver")
# Check the logs
get_process_output(id="webserver", stream="Both", lines=50)
# Stop gracefully
stop_process(id="webserver", grace_period_ms=5000)
Running a Database
# Start PostgreSQL
create_process(
id="postgres",
command="postgres",
args=["-D", "/usr/local/var/postgres"],
env={"PGDATA": "/usr/local/var/postgres"}
)
start_process(id="postgres")
# Monitor status
get_process_status(id="postgres")
Batch Process Management
# List all running processes
list_processes(filter={"state": "Running"})
# Find specific processes by pattern
list_processes(filter={"name_pattern": "worker"})
# Stop all workers
for process in list_processes(filter={"name_pattern": "worker"}):
stop_process(id=process["id"])
API Reference
Process States
NotStarted
- Process registered but not yet startedRunning
- Process is currently running with PIDStopped
- Process terminated normally with exit codeFailed
- Process failed with error message
Output Streams
Stdout
- Standard output onlyStderr
- Standard error onlyBoth
- Combined stdout and stderr
Process Filters
state
- Filter by process state (Running/Stopped/Failed/All)name_pattern
- Filter by ID pattern (supports wildcards)
š Persistence
KDL Configuration Files
Ichimi Server uses KDL (Cuddly Data Language) format for process persistence. Configuration files are automatically saved to .ichimi/processes.kdl
.
Example KDL Configuration
// Ichimi Server Process Configuration
meta {
version "1.0.0"
}
// Web server process
process "webserver" {
command "python"
args "-m" "http.server" "8000"
cwd "/path/to/public"
auto_start #false
}
// Background worker
process "worker" {
command "/usr/local/bin/worker"
args "--config" "worker.conf"
cwd "/app"
auto_start #true // Auto-start on server launch
}
Configuration Fields
Field | Description | Required |
---|---|---|
command | Path to executable | ā |
args | Command line arguments (multiple allowed) | ā |
cwd | Working directory | ā |
auto_start | Auto-start on server launch | ā |
YAML Export/Import
Process configurations can be exported/imported in YAML format for backup and migration:
# Export processes to YAML file
curl http://127.0.0.1:12700/api/export > ichimi_export.yaml
# Import processes from YAML file
curl -X POST http://127.0.0.1:12700/api/import \
-H "Content-Type: application/yaml" \
-d @ichimi_export.yaml
š Web Dashboard
Starting the Dashboard
# Start with web dashboard (default port 12700)
ichimi --web
# Specify custom port
ichimi --web --web-port 8080
# Web dashboard only (no MCP server)
ichimi --web-only
Open your browser to http://localhost:12700
Dashboard Features
Main Screen
- Stats Cards: Display total processes, running, stopped, and error states
- Process List: Table view of all processes
- Real-time Updates: Auto-refresh every 5 seconds
- Search: Search by process ID or command
Process Operations
- Start/Stop: One-click process control
- Log Viewing: Display latest stdout/stderr logs
- Delete: Remove unwanted processes
- Add New: Modal dialog for process creation
UI/UX
- Responsive Design: Mobile-friendly
- Dark Mode: Light/dark theme switching
- Modern Design: Tabler UI framework
REST API
Endpoint | Method | Description |
---|---|---|
/api/status | GET | Server status |
/api/dashboard | GET | Dashboard stats |
/api/processes | GET | List processes |
/api/processes | POST | Add process |
/api/processes/:id | GET | Process details |
/api/processes/:id | DELETE | Delete process |
/api/processes/:id/start | POST | Start process |
/api/processes/:id/stop | POST | Stop process |
/api/processes/:id/logs | GET | Get logs |
Development
Building from Source
# Debug build
cargo build
# Release build
cargo build --release
# Run tests
cargo test
# Run with debug logging
RUST_LOG=debug cargo run
Project Structure
ichimi-server/
āāā crates/
ā āāā ichimi/ # Main server crate
ā ā āāā src/
ā ā ā āāā lib.rs # Core server implementation
ā ā ā āāā bin/
ā ā ā ā āāā ichimi_server.rs # Binary entry point
ā ā ā āāā process/ # Process management
ā ā ā ā āāā mod.rs
ā ā ā ā āāā manager.rs
ā ā ā ā āāā buffer.rs
ā ā ā ā āāā protocol.rs
ā ā ā āāā web/ # Web server
ā ā ā ā āāā server.rs
ā ā ā ā āāā handlers.rs
ā ā ā ā āāā api.rs
ā ā ā āāā messages/ # MCP message types
ā ā ā āāā ci/ # CI/CD monitoring
ā ā ā āāā events/ # Event system
ā ā āāā tests/
ā āāā ichimi-persistence/ # Persistence layer
ā āāā src/
ā ā āāā lib.rs # Persistence interface
ā ā āāā kdl/ # KDL format persistence
ā ā āāā persistence/ # In-memory storage implementation
ā ā āāā yaml/ # YAML snapshot export/import
ā āāā tests/
āāā ui/
ā āāā web/ # Vue 3 SPA
ā āāā src/
ā ā āāā App.vue # Root component
ā ā āāā main.ts # Entry point
ā ā āāā router/ # Vue Router config
ā ā āāā stores/ # Pinia stores
ā ā āāā components/ # Vue components
ā ā āāā views/ # Page components
ā ā āāā api/ # API client
ā ā āāā types/ # TypeScript types
ā ā āāā themes.ts # Theme configuration
ā āāā package.json
ā āāā tsconfig.json
ā āāā vite.config.ts
ā āāā dist/ # Production build
āāā .ichimi/ # Data directory
ā āāā processes.kdl # Process config file
āāā examples/ # Usage examples
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
This project is dual-licensed under either of:
- Apache License, Version 2.0 ( or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ( or http://opensource.org/licenses/MIT)
at your option.
š Environment Variables
Variable | Description | Default |
---|---|---|
RUST_LOG | Log level (error, warn, info, debug, trace) | info |
ICHIMI_DATA_DIR | Directory for data files | ~/.ichimi/data |
ICHIMI_IMPORT_FILE | File to import on startup | ~/.ichimi/data/processes.yaml |
ICHIMI_EXPORT_FILE | Export destination on shutdown | ~/.ichimi/data/processes.yaml |
ICHIMI_STOP_ON_SHUTDOWN | Stop processes on ichimi exit (true/false) | false (continue) |
ICHIMI_AUTO_EXPORT_INTERVAL | Auto-export interval in seconds | - |
š Acknowledgments
- rmcp - Rust MCP SDK
- Tera - Template engine
- UI framework: Vue 3 + TypeScript + Vite + Tabler
- KDL - Configuration format
- Inspired by the Model Context Protocol specification
- Part of the Chronista Club ecosystem
Support
For issues, questions, or suggestions:
- Open an issue on GitHub
- Check the documentation
Ichimi Server - Making process management simple and powerful for Claude Code