Get the FREE Ultimate OpenClaw Setup Guide →

plugin-examples

🚀 Production-ready WebAssembly plugin examples for the Noorle platform - showcasing HTTP APIs, WASI 2.0, and the Component Model across Rust, Go, Python, JavaScript, and TypeScript

Installation
Run this command in your terminal to add the MCP server to Claude Code.
Run in terminal:
Command
claude mcp add --transport stdio noorle-plugin-examples docker run -i noorle/plugin-examples \
  --env NEWSAPI_KEY="Your NewsAPI key (required for News plugin examples)" \
  --env ARXIV_API_KEY="Your arXiv API key or credentials if required by templates" \
  --env NOORLE_CLI_TOKEN="Optional: Noorle CLI authentication token if deployment requires it" \
  --env OPENWEATHER_API_KEY="Your OpenWeatherMap API key (required for Weather plugin examples)" \
  --env EXCHANGE_RATE_API_KEY="Optional: key if using rate-limited API variants"

How to use

This MCP repository is a curated collection of Noorle WebAssembly plugins implemented across multiple languages (Rust, Go, Python, JavaScript, TypeScript) that demonstrate real-world patterns for HTTP API integration using the WebAssembly Component Model and WASI 0.2. Each example exposes a well-defined plugin interface (via WIT) and illustrates common production concerns such as API key management through environment variables, error handling, and structured data returns. To experiment locally, you typically build a language-specific plugin, package it as a WebAssembly component, and then use Noorle tooling to test and deploy. The examples include weather, news, exchange rate, Amadeus flight, and arXiv plugins, showing how to model complex records, nested data, and multi-language interop within the same ecosystem.

How to install

Prerequisites:

  • Noorle CLI: Install to scaffold, build, and deploy plugins (see Noorle CLI docs).
  • WASI tooling: wasmtime, wkt/wit tooling, and wasm-tools as required by templates.
  • Language toolchains: Rust toolchain (and many examples rely on TinyGo for Go), Python with componentize-py, Node.js for JavaScript/TypeScript templates, etc.

Step-by-step:

  1. Install Noorle CLI (example quick install):
curl -L https://cli.noorle.dev | sh
  1. Install and prepare WASM toolchain via the plugin templates:
noorle plugin prepare

This will install wasmtime, wkg, wasm-tools, and language-specific dependencies as needed by the templates.

  1. Clone this repository (or use your preferred example directory):
git clone https://github.com/noorle/plugin-examples
cd plugin-examples
  1. Build a specific example (e.g., Rust Weather):
cd rust/weather
noorle plugin build

This will produce dist/plugin.wasm and a .npack archive suitable for deployment.

  1. Run locally for testing (example using wasmtime with WASI):
wasmtime run --wasi http --env OPENWEATHER_API_KEY=your_key \
  --invoke 'check-weather("Austin", metric)' dist/plugin.wasm
  1. Deploy via Noorle (authenticate first):
noorle login
noorle deploy

Follow the CLI prompts to deploy the generated .npack to your Noorle environment.

Additional notes

Tips and caveats:

  • Each language template typically expects API keys via environment variables; keep .env files or CI secrets secure.
  • The Weather and News plugins demonstrate nested record types; ensure your consumer handles complex responses.
  • Use the prepare step once to install tools; subsequent builds can reuse them.
  • If you see WASI permission errors, verify that the container/environment has network access and the proper WASI features enabled.
  • For local testing, you can often swap the API key values on the fly with environment variables when invoking the WASI binary.
  • The repository emphasizes production patterns: robust error handling, environment-based configuration, and testing strategies; adapt these practices when integrating your own plugins.

Related MCP Servers

Sponsor this space

Reach thousands of developers