Quick Start
Create an MCP server from a YAML declaration in under 5 minutes.
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 resolve them in your Sentry account. The same pattern works for any API.
Prerequisites
Node.js 18+ or Python 3.10+. If you need Node.js: nodejs.org.
Install
Node.js:
npm install -g usepaso
Python:
pip install usepaso
Verify:
usepaso --version
Create a declaration
usepaso init --name "Sentry"
This creates a usepaso.yaml in the current directory. Edit it to describe your API:
version: "1.0"
service:
name: Sentry # Human-readable service name
description: Error monitoring and performance tracking for software teams
base_url: https://sentry.io/api/0 # All paths are relative to this
auth:
type: bearer # paso forwards USEPASO_AUTH_TOKEN as Bearer header
capabilities:
- name: list_issues
description: List issues in a project
method: GET
path: /projects/{organization_slug}/{project_slug}/issues/
permission: read
inputs:
organization_slug:
type: string
required: true
description: Organization slug
in: path
project_slug:
type: string
required: true
description: Project slug
in: path
query:
type: string
description: "Search query (e.g., 'is:unresolved')"
in: query
- name: resolve_issue
description: Mark an issue as resolved
method: PUT
path: /issues/{issue_id}/
permission: write # Groups this under the "write" permission set
consent_required: true # Agent must get user approval before calling
inputs:
issue_id:
type: string
required: true
description: The issue ID
in: path
status:
type: enum
required: true
values: [resolved, unresolved, ignored]
description: New status for the issue
permissions:
read:
- list_issues
write:
- resolve_issue
Validate
usepaso validate
See all validation flags in the CLI reference.
valid (Sentry, 2 capabilities, 0 regrets)
:::tip[Something wrong?]
Run usepaso doctor for a full diagnostic. It checks your file, YAML syntax, auth token, and API connectivity in one command.
:::
Test
Try a capability before going live:
usepaso test list_issues --dry-run
--- DRY RUN (no request will be made) ---
GET https://sentry.io/api/0/projects/{organization_slug}/{project_slug}/issues/
Authorization: Bearer ...
Remove --dry-run to send the real request (requires USEPASO_AUTH_TOKEN). See the testing guide for more patterns.
Serve
export USEPASO_AUTH_TOKEN="your-sentry-token"
usepaso serve
usepaso serving "Sentry" (2 capabilities). Agents welcome.
Your API is now accessible to MCP clients.
Connect to Claude Desktop
One command. paso writes the config for you.
usepaso connect claude-desktop
Added "Sentry" in Claude Desktop config.
Config: ~/Library/Application Support/Claude/claude_desktop_config.json
Restart Claude Desktop to connect.
Restart Claude Desktop. Your capabilities appear as tools.
Also works with Cursor, VS Code, and Windsurf. Replace claude-desktop with cursor, vscode, or windsurf.
:::note[Why not just write an MCP server directly?] You can. The MCP SDK is well-documented. You can get a basic server running in an afternoon.
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 agent-ready. Open Claude Desktop and try: “List my Sentry issues.” Claude calls your MCP server, hits the Sentry API, and returns the results. That’s the whole loop.
You went from zero to a working MCP server in under 5 minutes. The same pattern works for any REST API.
Next, you might want to:
- Add permissions and safety controls. set boundaries before going to production
- Import from OpenAPI. if you have an existing spec, skip writing YAML by hand
- Connect to Cursor. same server, different client
From the blog:
- How to Create an MCP Server. side-by-side comparison of manual vs. paso
- Five Ways to Test Before You Ship. verify your declaration before connecting to agents
- What Happens When an Agent Calls DELETE. why permissions matter