The bridge between human and AI tooling
Build MCP tools in minutes, not hours
No TypeScript boilerplate. No SDK complexity. Just write shell, Python, or Node and let AI agents discover your tools automatically.
# Runfile - Your MCP tools live here
# @desc Search the codebase for specific patterns
# @arg 1:pattern string The regex pattern to search for
search() {
#!/usr/bin/env python
import sys, os, re
pattern = sys.argv[1]
for root, dirs, files in os.walk('.'):
for file in files:
if file.endswith('.py'):
print(f"Checking {file}...")
}
# @desc Deploy application to specified environment
# @arg 1:environment string Target environment (staging|prod)
deploy() {
./scripts/deploy.sh $1
}
Why run for MCP?
Built-in MCP Server
AI agents like Claude can discover and execute your tools automatically. Just add @desc and @arg annotations.
Zero Boilerplate
No TypeScript setup, no npm packages, no complex SDK. Write functions and they become MCP tools.
Use Any Language
Write tools in shell, Python, Node, Ruby, or PowerShell. Mix and match in a single Runfile.
Sandboxed by Default
AI agents can only execute functions you explicitly define. No arbitrary code execution.
JSON Schema Generation
Automatically generates proper MCP tool schemas with types and descriptions from your annotations.
5-Minute Setup
From zero to AI-accessible tools in minutes. No configuration files, no build step, no deployment.
Also a powerful task runner for humans
Everything that makes run great for AI also makes it perfect for your daily workflow. Zero-config task automation with polyglot support.
Shell Native
Use the syntax you already know. No new DSL to learn.
Global & Local
Project-specific ./Runfile or personal ~/.runfile for commands everywhere.
Platform Guards
Define OS-specific implementations. Write once, run anywhere.
Installation
macOS / Linux
brew install nihilok/tap/runtool
Windows
scoop bucket add nihilok https://github.com/nihilok/scoop-bucket
scoop install runtool
Cargo (All Platforms)
cargo install run
Then add to your MCP client config:
{
"run": {
"command": "run",
"args": ["--serve-mcp"]
}
}