Menu

Quick Start

Install paso, declare your API's capabilities, and serve an MCP server.

Time to complete: ~5 minutes. You’ll have a running MCP server connected to Claude Desktop.

What you’ll build

A Sentry MCP server that lets Claude list issues and get issue details from your Sentry account. The same pattern works for any API.

Install

Node.js:

npm install -g usepaso

Python:

pip install usepaso

Verify:

usepaso --version

Create a declaration

usepaso init --name "my-api"

This creates a usepaso.yaml in the current directory. Edit it to describe your API:

name: "my-api"
version: "0.1.0"
base_url: https://api.example.com
auth:
  type: bearer

capabilities:
  - name: list_items
    description: List all items
    method: GET
    path: /items
    permission: read
    inputs:
      - name: limit
        type: number
        description: Max items to return

  - name: create_item
    description: Create a new item
    method: POST
    path: /items
    permission: write
    consent_required: true
    inputs:
      - name: title
        type: string
        required: true
      - name: body
        type: string

Validate

usepaso validate
valid (my-api, 2 capabilities)

Test

Try a capability before going live:

usepaso test list_items -p limit=5 --dry-run
--- DRY RUN (no request will be made) ---

GET /items?limit=5
Authorization: Bearer [REDACTED]

Remove --dry-run to send the real request.

Serve

usepaso serve
usepaso serving "my-api" (2 capabilities)

Your API is now accessible to MCP clients.

Connect to Claude Desktop

Add to your Claude Desktop config:

macOS / Linux: ~/.config/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "my-api": {
      "command": "npx",
      "args": ["usepaso", "serve"],
      "env": {
        "USEPASO_AUTH_TOKEN": "your-token-here"
      }
    }
  }
}

Restart Claude Desktop. Your capabilities appear as tools.

:::note[Why not just write an MCP server directly?] You can. The MCP SDK is well-documented. But paso handles protocol compliance, request routing, auth forwarding, input validation, and error handling from a single YAML file. When the next protocol arrives, your declaration doesn’t change. :::

You’re live.

Your API is now agent-accessible. Claude can list issues and get issue details through your MCP server.

Next, you might want to: