Skillz is a self-extending MCP server. Create WASM tools from Rust or register scripts in any languageβPython, Node.js, Ruby, Bashβat runtime. Now with automatic dependency management.
Get started in seconds with cargo
# Install WASM target
rustup target add wasm32-wasip1
# Install Skillz
cargo install skillz
Then add to your editor's MCP config:
{
"mcpServers": {
"skillz": {
"command": "skillz"
}
}
}
Works with your favorite editor
Environment variables to control behavior
Colon-separated list of allowed workspace roots.
/home/user/project:/data
Isolation mode for script tools (Linux only).
bubblewrap | firejail | nsjail
Allow network access in sandbox (set to 1).
export SKILLZ_SANDBOX_NETWORK=1
Everything you need to build dynamic AI tools
Compile Rust code to WebAssembly at runtime. Tools run in a secure sandbox with memory isolation and near-native performance.
Register tools in Python, Node.js, Ruby, Bash, Perl, PHP, or any language. Scripts communicate via JSON-RPC 2.0 protocol.
Automatic pip/npm dependency installation. Each tool gets its own isolated virtual environment that persists across restarts.
Chain tools together declaratively with variable resolution ($input, $prev, $step_name).
Resources, roots, logging, progress updates, elicitation, and sampling support. Complete MCP compatibility.
Tools, dependencies, and environments persist across restarts. Build your AI's toolbox over time.
WASM tools run in isolated WebAssembly environment. Optional bubblewrap/firejail isolation for scripts.
Mark tools with hints: readOnlyHint, destructiveHint, idempotentHint. Helps AI understand tool behavior.
Compose multiple tools via Python/JS code. Reduces token usage by 98% (150k β 2k tokens)!
Scripts can request user input via MCP elicitation and use persistent storage for state.
Built-in skillz://guide resource that automatically updates when new tools are
added.
Import tools from GitHub repos or Gists. Share your tools with the community!
Built-in tools for creating and managing your AI toolkit
| Tool | Description | Type |
|---|---|---|
| build_tool | Compile Rust code β WASM tool with crate dependencies. | Core |
| register_script | Register script tool (Python, Node.js, etc.) with dependencies. | Core |
| call_tool | Execute any registered tool (WASM, Script, or Pipeline). | Core |
| list_tools | List all available tools grouped by type. | Core |
| delete_tool | Delete a tool and clean up its files. | Core |
| import_tool | Import tools from Git repos or GitHub Gists. | Core |
| execute_code | Run Python/JS code that composes multiple tools. 98% token savings! | Core |
| pipeline | Create, list, delete pipeline tools (action: create|list|delete). | New |
| memory | Persistent storage for tools (action: store|get|list|delete|stats). | New |
Create tools with just a few lines of code
// Build a Fibonacci generator
build_tool(
name: "fibonacci",
code: "fn main() {
let mut a = 0u64;
let mut b = 1;
for _ in 0..20 {
print!(\"{} \", a);
let t = a + b;
a = b;
b = t;
}
}",
description: "Generates Fibonacci numbers"
)
Clean, modular design
Visual overview of the tool creation and execution flow
From code to execution in seconds
AI writes Rust code for WASM tools or scripts in any language (Python, Node.js, etc.). Specify dependencies if needed.
WASM tools are compiled using cargo. Scripts are saved with appropriate interpreter. Dependencies are installed in isolated environments.
WASM runs in Wasmtime sandbox. Scripts execute via subprocess with JSON-RPC 2.0 protocol using their virtual environment.
Tools, dependencies, and environments are stored on disk. Available across server restarts. Build your AI's toolbox over time.