Build, publish & run your Model Context Protocol (MCP) applet with ease.
hyper-mcp
is a powerful MCP server that leverages WebAssembly plugins to extend its capabilities. At its core, it's a single, extensible MCP server that you can enhance with plugins written in any WebAssembly-compatible programming language. Think of it as a modular toolkit where each plugin adds new functionality without the overhead of running multiple MCP servers.
Whether you're using Claude Desktop, Cursor IDE, or any other MCP-compatible application, hyper-mcp
seamlessly integrates with your workflow while using standard OCI registries for plugin distribution.
- Easy local runtime embedding
- First-class support in many programming languages
- Leverages Extism's PDKs for simplified plugin development
- Uses existing container infrastructure
- Familiar packaging workflow with Dockerfiles
- Enables self-hosting for enterprise environments
- Language Agnostic: Build plugins in any language that compiles to WebAssembly
- Simple Distribution: Package plugins using Dockerfile and publish to any OCI registry
- Universal Compatibility: Works with any MCP-compatible application
- Easy Configuration: Add new tools by simply editing a config file and restarting the MCP server
- Create a configuration file at
$HOME/.config/mcp.json
:
{
"plugins": [
{
"name": "time",
"path": "/home/anh/Code/hyper-mcp/wasm/time.wasm"
},
{
"name": "qr-code",
"path": "oci://ghcr.io/tuananh/qrcode-plugin:latest"
},
{
"name": "hash",
"path": "oci://ghcr.io/tuananh/hash-plugin:latest"
}
]
}
The path
can be:
- A local file path
- An HTTP URL
- An OCI image reference
- Start the server:
$ hyper-mcp
- Configure Cursor to use hyper-mcp:
- Access tools through Cursor's chat UI:
Documentation coming soon for Windows/macOS users.
hyper-mcp uses Extism for plugin development. Check out our example plugins:
- QR Code plugin
- Hash plugin
- My IP plugin: An example how to do HTTP request with
hyper-mcp
. - Fetch plugin: An example how to fetch basic webpages. No full browser capability yet.
Publishing a plugin to an OCI registry is straightforward:
- Build your WebAssembly plugin
- Create a Dockerfile:
FROM scratch
WORKDIR /
COPY --from=builder /workspace/target/wasm32-wasip1/release/your-plugin.wasm /plugin.wasm
- Build and push:
docker build -t your-registry/plugin-name .
docker push your-registry/plugin-name