JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 50
  • Score
    100M100P100Q90388F
  • License MIT

MCP server for Strale — exposes 233+ capabilities as tools for Claude, Cursor, Windsurf, and any MCP client

Package Exports

  • strale-mcp
  • strale-mcp/tools

Readme

strale-mcp

MCP server for Strale — exposes 233+ capabilities as tools for Claude, Cursor, Windsurf, and any MCP-compatible client.

Architecture

Thin Proxy (Option A): The MCP server calls the Strale HTTP API (POST /v1/do) for each tool invocation. This keeps it decoupled from the API internals and leverages all existing middleware (auth, rate limiting, circuit breaker, wallet locking, audit trail).

At startup, the server fetches all active capabilities from GET /v1/capabilities and registers each as an MCP tool with proper input schemas.

Setup

1. Get a Strale API key

Sign up at the Strale API and get your API key (starts with sk_).

2. Configure your MCP client

There are two ways to connect: Remote (no installation needed) or Local (stdio transport).

No installation required. Connect directly to the hosted MCP server.

Claude Desktop / Claude Code:

{
  "mcpServers": {
    "strale": {
      "type": "streamableHttp",
      "url": "https://api.strale.io/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "strale": {
      "type": "streamableHttp",
      "url": "https://api.strale.io/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

Any MCP client supporting Streamable HTTP:

URL:    https://api.strale.io/mcp
Auth:   Authorization: Bearer sk_live_your_key_here

Note: strale_search works without an API key for browsing the capability catalog. All other tools require authentication.

Option B: Local (stdio transport)

Run the MCP server locally on your machine:

Claude Desktop / Claude Code:

{
  "mcpServers": {
    "strale": {
      "command": "node",
      "args": ["/path/to/strale/packages/mcp-server/dist/server.js"],
      "env": {
        "STRALE_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "strale": {
      "command": "node",
      "args": ["/path/to/strale/packages/mcp-server/dist/server.js"],
      "env": {
        "STRALE_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Environment Variables

Variable Required Default Description
STRALE_API_KEY Yes (for execution) Your Strale API key
STRALE_BASE_URL No https://api.strale.io API base URL
STRALE_MAX_PRICE_CENTS No 200 Default max price per execution (€2.00)

Available Tools

Meta-tools

  • strale_search — Search and filter capabilities by keyword or category. Use this first to find the right tool.
  • strale_balance — Check your wallet balance.

Capability tools (233+)

Every active Strale capability is registered as an MCP tool using its slug as the tool name. Examples:

Tool Description Price
vat-validate Validate EU VAT number via VIES €0.10
swedish-company-data Extract Swedish company data €0.80
iban-validate Validate IBAN numbers €0.05
invoice-extract Extract data from invoice images €0.50
web-extract Extract structured data from web pages €0.15
translate Translate text between languages €0.10
... 233 total capabilities

Use strale_search to discover capabilities by keyword.

Development

# Build
npm run build --workspace=packages/mcp-server

# Run in development (with tsx)
npm run dev --workspace=packages/mcp-server

How it works

  1. Server starts and fetches all active capabilities from the Strale API
  2. Each capability is registered as an MCP tool with its JSON Schema as the input schema
  3. When a tool is called, the server sends POST /v1/do with capability_slug and inputs
  4. The response (output, price, latency, provenance) is returned as structured text
  5. Async capabilities (>10s) return a transaction ID for polling
  6. Errors (insufficient balance, suspended capability, etc.) are returned with helpful messages