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:
- CLI Commands. full command reference
- Permissions & Safety. understand constraints
- Claude Desktop Setup. connect to Claude
From the blog:
- Five Ways to Test Before You Ship. testing patterns for paso declarations