ichimi-server

chronista-club/ichimi-server

3.3

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.

Tools
5
Resources
0
Prompts
0

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).

Version License MCP Compatible

✨ 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 testing
  • ping - Simple health check
  • get_status - Get server status and uptime
Process Management
  • create_process - Register a new process configuration
  • start_process - Start a registered process
  • stop_process - Stop a running process gracefully
  • get_process_status - Get detailed process status
  • get_process_output - Retrieve process stdout/stderr logs
  • list_processes - List all managed processes with filters
  • remove_process - Remove a process from management
  • export_processes - Export all processes to a YAML file
  • import_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 started
  • Running - Process is currently running with PID
  • Stopped - Process terminated normally with exit code
  • Failed - Process failed with error message

Output Streams

  • Stdout - Standard output only
  • Stderr - Standard error only
  • Both - 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
FieldDescriptionRequired
commandPath to executableāœ…
argsCommand line arguments (multiple allowed)āŒ
cwdWorking directoryāŒ
auto_startAuto-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

EndpointMethodDescription
/api/statusGETServer status
/api/dashboardGETDashboard stats
/api/processesGETList processes
/api/processesPOSTAdd process
/api/processes/:idGETProcess details
/api/processes/:idDELETEDelete process
/api/processes/:id/startPOSTStart process
/api/processes/:id/stopPOSTStop process
/api/processes/:id/logsGETGet 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.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is dual-licensed under either of:

at your option.

šŸ”‘ Environment Variables

VariableDescriptionDefault
RUST_LOGLog level (error, warn, info, debug, trace)info
ICHIMI_DATA_DIRDirectory for data files~/.ichimi/data
ICHIMI_IMPORT_FILEFile to import on startup~/.ichimi/data/processes.yaml
ICHIMI_EXPORT_FILEExport destination on shutdown~/.ichimi/data/processes.yaml
ICHIMI_STOP_ON_SHUTDOWNStop processes on ichimi exit (true/false)false (continue)
ICHIMI_AUTO_EXPORT_INTERVALAuto-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:


Ichimi Server - Making process management simple and powerful for Claude Code