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:latestThis 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:latestSet the Testing Farm API token as an environment variable:
export TESTING_FARM_API_TOKEN="your-api-token-here"just startSubmit 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 installThis 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.