πŸš€ MCP Server for Dynamic Tool Creation

Let Your AI
Build Its Own Tools

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.

⚑ Quick Install

Get started in seconds with cargo

πŸ¦€ Terminal
# Install WASM target
rustup target add wasm32-wasip1

# Install Skillz
cargo install skillz

Then add to your editor's MCP config:

βš™οΈ MCP Config
{
  "mcpServers": {
    "skillz": {
      "command": "skillz"
    }
  }
}

Works with your favorite editor

πŸ–±οΈ Cursor πŸ€– Claude Desktop πŸ’» VS Code πŸ„ Windsurf ⚑ Zed

πŸ”§ Configuration

Environment variables to control behavior

πŸ“‚

SKILLZ_ROOTS

Colon-separated list of allowed workspace roots.
/home/user/project:/data

πŸ”’

SKILLZ_SANDBOX

Isolation mode for script tools (Linux only).
bubblewrap | firejail | nsjail

🌐

SKILLZ_SANDBOX_NETWORK

Allow network access in sandbox (set to 1).
export SKILLZ_SANDBOX_NETWORK=1

Powerful Features

Everything you need to build dynamic AI tools

πŸ¦€

WASM Tools (Rust)

Compile Rust code to WebAssembly at runtime. Tools run in a secure sandbox with memory isolation and near-native performance.

πŸ“œ

Script Tools (Any Language)

Register tools in Python, Node.js, Ruby, Bash, Perl, PHP, or any language. Scripts communicate via JSON-RPC 2.0 protocol.

πŸ“¦

Dependency Management

Automatic pip/npm dependency installation. Each tool gets its own isolated virtual environment that persists across restarts.

⛓️

Pipeline Tools

Chain tools together declaratively with variable resolution ($input, $prev, $step_name).

πŸ“‘

Full MCP Protocol

Resources, roots, logging, progress updates, elicitation, and sampling support. Complete MCP compatibility.

πŸ’Ύ

Persistent Tools

Tools, dependencies, and environments persist across restarts. Build your AI's toolbox over time.

πŸ”’

Secure Sandbox

WASM tools run in isolated WebAssembly environment. Optional bubblewrap/firejail isolation for scripts.

🏷️

Tool Annotations

Mark tools with hints: readOnlyHint, destructiveHint, idempotentHint. Helps AI understand tool behavior.

⚑

Code Execution Mode

Compose multiple tools via Python/JS code. Reduces token usage by 98% (150k β†’ 2k tokens)!

πŸ’¬

Elicitation & Memory

Scripts can request user input via MCP elicitation and use persistent storage for state.

πŸ“–

Dynamic Guide

Built-in skillz://guide resource that automatically updates when new tools are added.

🌐

Tool Import

Import tools from GitHub repos or Gists. Share your tools with the community!

πŸ› οΈ Available Tools

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

Simple to Use

Create tools with just a few lines of code

πŸ¦€ Rust WASM Tool
// 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"
)

Architecture

Clean, modular design

Skillz Architecture Diagram

πŸ“Š How Skillz Works

Visual overview of the tool creation and execution flow

Tool Types & Execution Flow

MCP Server Skillz Runtime πŸ¦€ WASM Tools Rust + Dependencies WebAssembly βœ“ Sandboxed πŸ“œ Script Tools Python, Node.js, etc. JSON-RPC 2.0 βœ“ Isolated Env AI Editor / Client compile register execute

Tool Creation Lifecycle

1. Design Define inputs, outputs, schema πŸ“‹ 2. Implement Write Rust or Script code πŸ’» 3. Test Validate & compile check πŸ§ͺ 4. Finalize Register & persist tool βœ…

How It Works

From code to execution in seconds

1

Write Code

AI writes Rust code for WASM tools or scripts in any language (Python, Node.js, etc.). Specify dependencies if needed.

2

Compile & Register

WASM tools are compiled using cargo. Scripts are saved with appropriate interpreter. Dependencies are installed in isolated environments.

3

Execute

WASM runs in Wasmtime sandbox. Scripts execute via subprocess with JSON-RPC 2.0 protocol using their virtual environment.

4

Persist

Tools, dependencies, and environments are stored on disk. Available across server restarts. Build your AI's toolbox over time.

β˜• Support Skillz Development

Help keep this project growing! Your support enables new features and improvements.

Buy Me a Coffee