examples — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited examples (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that enables IDE agents like Cursor and Windsurf to orchestrate kiro-cli with advanced session management, process pooling, and robust error handling.
Kiro CLI MCP Server bridges the gap between IDE agents and kiro-cli by providing a standardized MCP interface with enterprise-grade features:
/help, /mcp, etc.)git clone https://github.com/your-org/kiro-cli-mcp.git
cd kiro-cli-mcp
pip install -e .# Will be available after publishing to PyPI
pip install kiro-cli-mcp# Will be available after publishing to PyPI
uvx install kiro-cli-mcpAdd to your IDE's MCP configuration file:
Cursor/Claude Desktop (~/.config/claude-desktop/mcp.json):
{
"mcpServers": {
"kiro-cli-mcp": {
"command": "uvx",
"args": ["kiro-cli-mcp"],
"env": {
"KIRO_MCP_LOG_LEVEL": "INFO"
}
}
}
}Windsurf (.windsurf/mcp.json):
{
"mcpServers": {
"kiro-cli-mcp": {
"command": "python",
"args": ["-m", "kiro_cli_mcp"],
"env": {
"KIRO_MCP_CLI_PATH": "/usr/local/bin/kiro-cli",
"KIRO_MCP_POOL_SIZE": "5"
},
"autoApprove": [
"kiro_session_list",
"kiro_agents_list",
"kiro_history"
]
}
}
}| Variable | Description | Default |
|---|---|---|
KIRO_MCP_CLI_PATH | Path to kiro-cli executable | kiro-cli |
KIRO_MCP_COMMAND_TIMEOUT | Command timeout (seconds) - IDE-optimized | 30 |
KIRO_MCP_MAX_SESSIONS | Maximum concurrent sessions | 10 |
KIRO_MCP_SESSION_TIMEOUT | Session idle timeout (seconds) | 300 |
KIRO_MCP_CLEANUP_INTERVAL | Session cleanup check interval (seconds) | 30 |
KIRO_MCP_LOG_LEVEL | Logging level | INFO |
KIRO_MCP_DEFAULT_MODEL | Default AI model for kiro-cli | claude-opus-4.5 |
KIRO_MCP_DEFAULT_AGENT | Default agent to use | kiro_default |
KIRO_MCP_LOG_RESPONSE | Log full CLI responses for debugging | true |
KIRO_MCP_POOL_SIZE | Process pool size | 5 |
KIRO_MCP_POOL_ENABLED | Enable process pooling | true |
KIRO_MCP_POOL_IDLE_TIME | Process idle time before recycling (seconds) | 300 |
KIRO_MCP_POOL_MAX_USES | Max uses per process before recycling | 100 |
KIRO_MCP_MAX_ASYNC_TASKS | Maximum concurrent async tasks | 100 |
KIRO_MCP_TASK_TTL | Task result TTL (seconds) | 3600 |
/help, /mcp, etc.)# Create session for project
await mcp_client.call_tool("kiro_session_create", {
"working_directory": "/path/to/project",
"agent": "code-reviewer"
})
# Send message
response = await mcp_client.call_tool("kiro_chat", {
"message": "Analyze this codebase and suggest improvements"
})# Project A
session_a = await mcp_client.call_tool("kiro_session_create", {
"working_directory": "/projects/frontend",
"agent": "react-expert"
})
# Project B
session_b = await mcp_client.call_tool("kiro_session_create", {
"working_directory": "/projects/backend",
"agent": "python-expert"
})
# Switch between projects
await mcp_client.call_tool("kiro_session_switch", {
"session_id": session_a["session_id"]
})# Start long-running task
task = await mcp_client.call_tool("kiro_chat_async", {
"message": "Generate comprehensive test suite"
})
# Poll for progress
while True:
status = await mcp_client.call_tool("kiro_task_status", {
"task_id": task["task_id"]
})
if status["status"] == "completed":
break
await asyncio.sleep(1)mcp.server.Server)IDE Agent → MCP Server → Process Pool → kiro-cli instances
↓
Session Manager → Isolated contexts per projectgit clone https://github.com/your-org/kiro-cli-mcp.git
cd kiro-cli-mcp
pip install -e ".[dev]"# Run all tests
pytest
# With coverage
pytest --cov=kiro_cli_mcp --cov-report=html
# Property-based tests
pytest tests/test_config.py -v# Format code
ruff format .
# Lint
ruff check .
# Type checking
mypy src/# Development mode with debug logging
python -m kiro_cli_mcp --log-level DEBUG
# With custom config
python -m kiro_cli_mcp --config config.jsongit checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)Server automatically enables mock mode if kiro-cli is unavailable:
# Check kiro-cli availability
which kiro-cli
# Set custom path
export KIRO_MCP_CLI_PATH=/custom/path/to/kiro-cli
# Verify server mode
python -m kiro_cli_mcp --log-level DEBUG
# Look for: "✅ kiro-cli is available" or "❌ kiro-cli not available: enabling mock mode"# Verify process pooling is enabled
python -m kiro_cli_mcp --log-level DEBUG
# Look for: "🔄 Using pooled process execution"
# Check pool statistics
# Use kiro_pool_stats tool to monitor performance# Increase session limits
export KIRO_MCP_MAX_SESSIONS=20
export KIRO_MCP_SESSION_TIMEOUT=7200 # 2 hours
# Clear stuck sessions
# Sessions auto-cleanup after timeoutIf you encounter orphaned processes:
# Unix/Linux/macOS
pkill -f kiro-cli
# Windows
taskkill /F /IM kiro-cli.exe
# Check process groups (Unix)
ps -eo pid,pgid,cmd | grep kiroMIT License - see LICENSE file for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.