qvasa-mcp
MCP server that exposes the Qvasa user-access agentic API to Claude.
This is a thin proxy: Claude sends MCP tool calls over stdio, the server translates each call into one or more HTTP requests against the Qvasa Rails app, and returns the result. It owns session lifecycle (login, refresh on 401 SessionStale, two-token auth) so Claude doesn't have to.
Rails counterpart: one_qvasa_app repo, namespace /user_access/api/*. The toolkit version constant lives at app/services/user_access/api/toolkit_version.rb.
Configuration
Set these env vars (Claude Desktop injects them from the .mcpb config block on install):
| var | required | default | purpose |
|---|---|---|---|
QVASA_API_KEY |
yes | — | A user-access token (UAT). Generate at /user_settings/user_access_tokens in the Qvasa UI. Format qva_uat_…. |
QVASA_API_BASE_URL |
no | https://qvasa.com |
Override for staging or local dev (e.g. http://localhost:3000). |
Local dev
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
export QVASA_API_KEY=qva_uat_…
export QVASA_API_BASE_URL=http://localhost:3000
# Run the server (it will read MCP requests on stdin, write responses on stdout).
qvasa-mcp
# Run the tests.
pytest
Tool list (17 total)
Orientation
qvasa_overview— call this FIRST. Returns positioning, intent triggers, intent-keyed workflows, a feedback guide, and the cached session manifest. One call per session; no HTTP round-trip after the first.qvasa_submit_feedback— frictionless channel for filing bug reports, feature requests, friction points, unexpected_behavior notes, and impossibility reports back to Qvasa engineering.qvasa_search_saved_widgets— search the user's personal-dashboard saved queries (the agent's memory layer). Call BEFORE rebuilding a metric from scratch.
Discovery — widgets (unified: search by phrase, browse a group, or list all groups)
qvasa_search_widgets— passqueryto search (strict → fuzzy fallback),group_nameto browse a group, or neither for the groups manifest.qvasa_describe_widget— bulk schema fetch (widget_type, component_configurations, inspect block).
Discovery — filters (unified: same shape as widgets)
qvasa_search_filters— passqueryto search (strict → fuzzy fallback),group_nameto browse a group, or neither for the groups manifest.qvasa_describe_filter— bulk schema fetch.
Filter values & date range
qvasa_search_filter_values— value/parent-record search across 19 filter kinds.qvasa_search_values_across_attributes— reverse-lookup a value across static attributes.qvasa_resolve_date_range— unified date-range tool. Passphrasefor natural-language resolution (e.g. 'yesterday', 'last 7 days') orstrategyfor explicit construction.qvasa_search_component_configuration_values— value lookup for widget component_configuration_* fields (9 endpoints).
Metric execution
qvasa_query_metric— kickoff + block-until-done across all 5 chart types (quick_stat, basic_chart, donut_chart, multi_data_chart, heat_map)qvasa_inspect_metric— same pattern but materialises a TicketSet (quick_stat / basic_chart / donut_chart only)qvasa_list_in_flight— show queued/processing metric requestsqvasa_cancel_metric— cancel an enqueued request
Ticket sets (drill-down on inspect results)
qvasa_describe_ticket_set— show set metadata + tools_availableqvasa_get_ticket_set_summaries— paginated AI ticket summaries
Metadata
Release files for qvasa-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| qvasa_mcp-0.1.0.tar.gz | 28.4 kB | Without provenance | Details for qvasa_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qvasa_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for qvasa_mcp-0.1.0-py3-none-any.whl |
Total release size: 58.2 kB
Release files / qvasa_mcp-0.1.0.tar.gz
| Download URL | qvasa_mcp-0.1.0.tar.gz |
|---|---|
| Size | 28.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3748992436903b31a29ce8f02bbd49d3b0c0b5e4a4c69afada97178291bd00a9
|
|
BLAKE2b-256 checksum How to use checksums |
865e19b66e313f9b148575abac49a154ba53d5a982a473378498500decdf9f2b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / qvasa_mcp-0.1.0-py3-none-any.whl
| Download URL | qvasa_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 29.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0cee129ff7c09afe846efa485f749b4d2baf447ce9e6b8b4c05cec834e0a1a69
|
|
BLAKE2b-256 checksum How to use checksums |
4ccbde84f1b0b5a3b62c2def6d0f3d4ded1406dfe4b3b7280ca1b2060c46d726
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for qvasa-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.