openqa-mcp
This MCP server provides an interface to the openQA REST API, enabling both read-only querying and mutating operations (the latter requiring API credentials).
Read Operations (no credentials required):
List and filter jobs by state, result, distribution, version, build, etc.; get job overviews and full details
Get lightweight job status (id, state, result, blocked_by_id) or full test-module/step breakdown
Find jobs by a specific setting key-value pair
List comments on jobs, job groups, and parent job groups
List configured machines, test suites, products, job groups, parent groups, assets, workers, and tracked bugs
Get aggregated build results for a job group
Get scheduled product details and ISO job statistics
Full-text search across jobs, groups, and test modules
Check current identity (
whoami)
Mutating Operations (require API credentials):
Restart, cancel, duplicate, delete, or set priority on jobs; bulk-restart or cancel-all-matching jobs
Add, update, or delete comments on jobs, job groups, and parent job groups
Trigger ISO test scheduling for a product; cancel a scheduled product
Create tracked bug references
Configuration & Deployment:
Configurable via environment variables (
OPENQA_SERVER,OPENQA_API_KEY,OPENQA_API_SECRET,OPENQA_VERIFY) or~/.config/openqa/client.confRun in read-only mode (
--readonly/OPENQA_READONLY=true) to disable all mutating toolsSupports stdio transport (default, for local clients) or HTTP transport (
--http) for remote/shared deployments
Provides tools to interact with the openQA REST API, enabling management of jobs, comments, machines, test suites, and products for automated testing.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@openqa-mcplist recent openQA jobs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
openqa-mcp
An MCP server that exposes curated, typed tools over the openQA REST API. It is built on fastmcp 3.x and the openqa-async transport client.
Read tools work anonymously; mutating tools require API credentials and
return 403 without them.
Install
uv syncThis installs the package and its dependencies into a project virtualenv
and exposes the openqa-mcp console script.
Related MCP server: MCP REST Server
Configuration
The server reads its configuration from environment variables, falling back to the openQA client config file for credentials.
Environment variables
Variable | Default | Purpose |
| openqa-async default | openQA host (e.g. |
| (unset) | API key; overrides the config file when set. |
| (unset) | API secret; overrides the config file when set. |
|
| TLS verification: |
OPENQA_API_KEY and OPENQA_API_SECRET only take effect when both are
set; a partial pair is ignored so the client is never half-configured.
Config file
If the env credentials are not set, openqa-async loads them from
~/.config/openqa/client.conf (or /etc/openqa/client.conf). Generate a
key/secret from the API keys page of your openQA instance and add a section
keyed by the host:
[openqa.opensuse.org]
key = YOUR_API_KEY
secret = YOUR_API_SECRETWithout any credentials the server is GET-only (read tools succeed, mutating
tools get 403).
Tools
Read tools
Tool | Description |
| List jobs matching the given filters. |
| List a condensed jobs overview matching the given filters. |
| Get full details for a single job. |
| List comments on a job. |
| List configured worker machines. |
| List configured test suites. |
| List configured products (mediums). |
| Find jobs whose setting |
| Get a single job with full test-module/step details. |
| Get a lightweight job status (id, state, result, blocked_by_id). |
| List job groups. |
| Get a single job group. |
| List jobs belonging to a job group. |
| Get aggregated build results for a job group. |
| List parent job groups. |
| Get a single parent job group. |
| List assets known to the system. |
| Get a single asset by id. |
| List registered worker instances. |
| List tracked bugs referenced by jobs. |
| Full-text search across jobs, groups, and test modules. |
| Get a scheduled product (result of a prior ISO trigger). |
| Get job statistics for scheduled products. |
| List comments on a job group. |
| List comments on a parent job group. |
list_jobs and list_jobs_overview accept the same optional filters:
state, result, distri, version, build, test, arch, machine,
groupid, group, latest, limit, page, ids. Unset filters are
dropped from the request.
Mutating tools (require credentials)
Tool | Description |
| Restart each of the given jobs. |
| Cancel a running or scheduled job. |
| Add a comment to a job. |
| Trigger ISO test scheduling for a product. |
| Delete a job. |
| Duplicate (clone) a job. |
| Set the priority of a job. |
| Restart several jobs in one bulk request. |
| Cancel all jobs matching the given filters. |
| Add a comment to a job group. |
| Add a comment to a parent job group. |
| Update an existing job comment. |
| Delete a job comment. |
| Create a tracked bug reference. |
| Cancel a scheduled product / ISO by name. |
Mutating tools carry the mutating tag so MCP clients can gate them behind
confirmation. To drop them entirely, start the server in read-only mode with
--readonly (or OPENQA_READONLY=true): the mutating tools are never
registered, so clients see only the read tools.
Running
stdio (default)
Most local MCP clients spawn the server over stdio. Wire it in with:
uv run openqa-mcpExample MCP client configuration:
{
"mcpServers": {
"openqa": {
"command": "uv",
"args": ["run", "openqa-mcp"],
"env": {
"OPENQA_SERVER": "openqa.opensuse.org"
}
}
}
}HTTP (optional)
For remote or shared deployments, run over HTTP with --http:
uv run openqa-mcp --http --server 127.0.0.1 --port 8000The server can also be launched as a module:
uv run python -m openqa_mcp --http --port 8000Flag | Default | Purpose |
| off | Serve over HTTP instead of stdio. |
| on | Serve over stdio; overrides |
|
| HTTP bind host. |
|
| HTTP bind port. |
| off | Unregister all mutating tools (read-only server). |
Flags override the environment, which supplies the defaults:
Variable | Default | Purpose |
|
| Set to |
|
| Default HTTP bind host. |
|
| Default HTTP bind port. |
|
| Set truthy ( |
Press Ctrl-C to stop; the server shuts down cleanly and closes its client.
Development
uv run pytest # run the test suite
uv run ruff check . # lintMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mimi1vx/openqa-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server