An MCP (Model Context Protocol) server for interacting with the Testing Farm service. This server provides tools to submit FMF-based test requests and list available composes for testing.
- Submit Test Requests: Submit test requests to Testing Farm
- List Composes: Retrieve available OS composes for testing from public or redhat ranches
- Full Type Safety: Built with static typing
- Async Support: Fully asynchronous API client using httpx
- Container Ready: Container images available
# Pull the latest container image
podman pull ghcr.io/thrix/testing-farm-mcp:latest
# Run the MCP server
podman run -i --rm -e TESTING_FARM_API_TOKEN="your-api-token-here" ghcr.io/thrix/testing-farm-mcp:latest
This will run the MCP server with the stdio transport.
If you wanna run it via HTTP using the sse transport, you can change the default container command:
podman run -i --rm -e TESTING_FARM_API_TOKEN="your-api-token-here" -p 9001:9001 ghcr.io/thrix/testing-farm-mcp:latest \
fastmcp run --transport sse --host 0.0.0.0 --port 9001 testing_farm_mcp/server.py
This will run the MCP server on port 9001 inside the container and it will be exposed out of the container.
This project uses uv for package management.
# Clone the repository
git clone https://github.com/thrix/testing-farm-mcp.git
cd testing-farm-mcp
# Install dependencies
just install
# Using ToolHive from Stacklok
systemctl start --user podman.socket
thv secret set TESTING_FARM_API_TOKEN
thv run ghcr.io/thrix/testing-farm-mcp:latest
Set the Testing Farm API token as an environment variable:
export TESTING_FARM_API_TOKEN="your-api-token-here"
just start
Submit a FMF test request to Testing Farm.
Parameters:
url
(required): Git repository URL containing FMF metadataref
(optional): Branch, tag, or commit to testmerge_sha
(optional): Target commit SHA for merge testingpath
(optional): Path to metadata tree rootplan_name
(optional): Specific test plan to executeplan_filter
(optional): Filter for tmt planstest_name
(optional): Specific test to executetest_filter
(optional): Filter for tmt testsenvironments
(optional): Test environment configurationsnotification
(optional): Notification settingssettings
(optional): Additional request settingsuser
(optional): User information
Example:
{
"url": "https://github.com/example/test-repo",
"ref": "main",
"path": "/tests",
"environments": [
{
"arch": "x86_64",
"os": "fedora-38",
"variables": {
"TEST_VAR": "test_value"
}
}
]
}
List available composes for a ranch.
Parameters:
ranch
(required): Ranch to query ("redhat" or "public")
Example:
{
"ranch": "public"
}
Get details about a Testing Farm request.
Parameters:
request_id
(required): Testing Farm request ID or a string containing the ID, like an API request URL or artifacts URL
Example:
{
"request_id": "12345678-1234-5678-9abc-123456789abc"
}
Container images are available on GitHub Container Registry:
ghcr.io/thrix/testing-farm-mcp:latest
- Latest stable version
Supported architectures:
linux/amd64
# Install development dependencies
just install
This project uses several tools for code quality:
- ruff: Linting and formatting
- codespell: Spell checking
- mypy: Type checking (excluding tests)
- pre-commit: Git hook management
just static-analysis
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
Make sure to follow the existing code style and add tests for new functionality.
Apache-2.0 License - see LICENSE file for details.