hyper-mcp logo

hyper-mcp

by tuananh

hyper-mcp is a fast, secure MCP server that extends its capabilities through WebAssembly plugins. It allows you to add AI capabilities to your applications by writing plugins in any language that compiles to WebAssembly and distributing them through container registries.

View on GitHub

Last updated: N/A

<div align="center">

License

License

Issues - daytona

Issues - daytona

<!-- ![GitHub Release](https://img.shields.io/github/v/release/tuananh/hyper-mcp) --> </div> <div align="center"> <picture> <img alt="hyper-mcp logo" src="./assets/logo.png" width="50%"> </picture> </div>

hyper-mcp

A fast, secure MCP server that extends its capabilities through WebAssembly plugins.

What is it?

hyper-mcp makes it easy to add AI capabilities to your applications. It works with Claude Desktop, Cursor IDE, and other MCP-compatible apps. Write plugins in your favorite language, distribute them through container registries, and run them anywhere - from cloud to edge.

Features

  • Write plugins in any language that compiles to WebAssembly
  • Distribute plugins via standard OCI registries (like Docker Hub)
  • Built on Extism for rock-solid plugin support
  • Lightweight enough for resource-constrained environments
  • Deploy anywhere: serverless, edge, mobile, IoT devices
  • Cross-platform compatibility out of the box

Security

Built with security-first mindset:

  • Sandboxed plugins that can't access your system without permission
  • Memory-safe execution with resource limits
  • Secure plugin distribution through container registries
  • Fine-grained access control for host functions
  • OCI plugin images are signed at publish time and verified at load time with sigstore.

Getting Started

  1. Create your config file:
    • Linux: $HOME/.config/hyper-mcp/config.json
    • Windows: {FOLDERID_RoamingAppData}. Eg: C:\Users\Alice\AppData\Roaming
    • macOS: $HOME/Library/Application Support/hyper-mcp/config.json
{
  "plugins": [
    {
      "name": "time",
      "path": "oci://ghcr.io/tuananh/time-plugin:latest"
    },
    {
      "name": "qr-code",
      "path": "oci://ghcr.io/tuananh/qrcode-plugin:latest"
    },
    {
      "name": "hash",
      "path": "oci://ghcr.io/tuananh/hash-plugin:latest"
    },
    {
      "name": "myip",
      "path": "oci://ghcr.io/tuananh/myip-plugin:latest",
      "runtime_config": {
        "allowed_hosts": ["1.1.1.1"]
      }
    },
    {
      "name": "fetch",
      "path": "oci://ghcr.io/tuananh/fetch-plugin:latest",
      "runtime_config": {
        "allowed_hosts": ["*"]
      }
    }
  ]
}
  1. Start the server:
$ hyper-mcp

By default, logs will go into state_dir on Linux or data_local_dir on macOS & Windows.

| Platform | Value | Example | |----------|--------|---------| | Linux | $XDG_DATA_HOME or $HOME/.local/share | /home/alice/.local/share | | macOS | $HOME/Library/Application Support | /Users/Alice/Library/Application Support | | Windows | {FOLDERID_LocalAppData} | C:\Users\Alice\AppData\Local |

If you're loading unsigned OCI plugin, you will need to use --insecure-skip-signature flag.

Using with Cursor IDE

You can configure hyper-mcp either globally for all projects or specifically for individual projects.

  1. For project-scope configuration, create .cursor/mcp.json in your project root:
{
  "mcpServers": {
    "hyper-mcp": {
      "command": "/path/to/hyper-mcp",
      "args": [""]
    }
  }
}
  1. Set up hyper-mcp in Cursor's settings:

    cursor mcp

    cursor mcp

  2. Start using tools through chat:

    cursor mcp chat

    cursor mcp chat

Available Plugins

We maintain several example plugins to get you started:

  • time: Get current time and do time calculations (Rust)
  • qr-code: Generate QR codes (Rust)
  • hash: Generate various types of hashes (Rust)
  • myip: Get your current IP (Rust)
  • fetch: Basic webpage fetching (Rust)
  • crypto-price: Get cryptocurrency prices (Go)
  • fs: File system operations (Rust)
  • github: GitHub plugin (Go)
  • eval-py: Evaluate Python code with RustPython (Rust)
  • arxiv: Search & download arXiv papers (Rust)
  • memory: Let you store & retrive memory, powered by SQLite (Rust)
  • sqlite: Interact with SQLite (Rust)
  • crates-io: Get crate general information, check crate latest version (Rust)
  • gomodule: Get Go modules info, version (Rust)
  • qdrant: keeping & retrieving memories to Qdrant vector search engine (Rust)

Community-built plugins

  • hackernews: This plugin connects to the Hacker News API to fetch the current top stories and display them with their titles, scores, authors, and URLs.
  • release-monitor-id: This plugin retrieves project ID from release-monitoring.org, which helps track versions of released software.
  • yahoo-finance: This plugin connects to the Yahoo Finance API to provide stock prices (OHLCV) based on a company name or ticker symbol.

Creating Plugins

Check out our example plugins to learn how to build your own.

To publish a plugin:

# example how to build with rust
FROM rust:1.86-slim AS builder

RUN rustup target add wasm32-wasip1 && \
    rustup component add rust-std --target wasm32-wasip1

WORKDIR /workspace
COPY . .
RUN cargo fetch
RUN cargo build --release --target wasm32-wasip1

# copy wasm to final image
FROM scratch
WORKDIR /
COPY --from=builder /workspace/target/wasm32-wasip1/release/your-plugin.wasm /plugin.wasm

Then build and push:

docker build -t your-registry/plugin-name .
docker push your-registry/plugin-name

License

Apache 2.0

Star History