Menu

Testing Capabilities

Test MCP tool generation and API calls before connecting to Claude.

How do I test an MCP server before deploying?

paso lets you test capabilities before connecting to an MCP client. Inspect what tools would be generated, preview HTTP requests without sending them, or test against the live API.

Preview Capabilities

See what tools your declaration exposes:

usepaso inspect
Service: Sentry
Tools:   6
Auth:    bearer

  ┌ list_issues (read)
  │ GET /projects/{organization_slug}/{project_slug}/issues/
  │ List issues (errors) in a project, optionally filtered by status
  │ params: organization_slug*: string, project_slug*: string, query: string

  ├ resolve_issue (write) [consent required]
  │ PUT /issues/{issue_id}/
  │ Mark an issue as resolved
  │ params: issue_id*: string, status*: enum

  └ delete_issue (admin) [consent required]
    DELETE /issues/{issue_id}/
    Permanently delete an issue and all its events
    params: issue_id*: string

Use usepaso inspect --json for machine-readable output.

Dry Run

Preview the exact HTTP request without sending it:

usepaso test list_issues -p organization_slug=my-org -p project_slug=my-project --dry-run
--- DRY RUN (no request will be made) ---

GET https://sentry.io/api/0/projects/my-org/my-project/issues/
Authorization: Bearer ...

Use dry run to verify URL construction, parameter placement, and auth headers.

Test All Capabilities

Verify all capabilities build valid requests:

usepaso test --all --dry-run
ok list_issues     GET https://sentry.io/api/0/projects/{organization_slug}/{project_slug}/issues/
ok get_issue       GET https://sentry.io/api/0/issues/{issue_id}/
ok resolve_issue   PUT https://sentry.io/api/0/issues/{issue_id}/
ok delete_issue    DELETE https://sentry.io/api/0/issues/{issue_id}/

4 passed. 4 capabilities total.

Test with a Real Request

Set the auth token and run against the live API:

export USEPASO_AUTH_TOKEN="your-sentry-token"
usepaso test list_issues -p organization_slug=my-org -p project_slug=my-project

Pass multiple parameters with repeated -p flags:

usepaso test list_issues \
  -p organization_slug=my-org \
  -p project_slug=my-project \
  -p query="is:unresolved"

Request Timeout

Set a custom timeout (default is 30 seconds):

usepaso test list_issues -p organization_slug=my-org --timeout 10

Custom File Path

Test against a declaration in a different location:

usepaso test list_issues -f ./path/to/usepaso.yaml --dry-run

The -f flag works with validate, inspect, test, serve, and doctor.

Testing Patterns

Read operations are safe to test freely. They don’t modify data.

usepaso test list_issues -p organization_slug=my-org -p project_slug=my-project

Write operations should be previewed first with --dry-run, then tested against a staging environment or test account.

usepaso test resolve_issue \
  -p issue_id=12345 \
  -p status=resolved \
  --dry-run

Admin operations should be dry-run only against production. Test against disposable resources.

Your capabilities work.

You’ve verified that requests are correct before connecting to an MCP client.

Next, you might want to:

From the blog: