HP ALM MCP Server
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., "@HP ALM MCP Serverlist test cases in folder 'Login'"
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.
HP ALM MCP Server
An MCP (Model Context Protocol) server that exposes HP ALM / Quality Center as tools for AI agents — GitHub Copilot, Claude Desktop, and any other MCP-compatible client.
It covers all day-to-day QA workflows: creating and managing test cases, pulling tests into test sets, recording execution results, filing defects, and managing requirements — all callable by an AI agent through natural language.
Table of Contents
Related MCP server: TestRail MCP Server
Features
Category | Count | What you can do |
Session | 1 | Refresh / reconnect the ALM session |
Test Plan — Folders | 2 | Create nested folder trees in Test Plan and Test Lab |
Test Plan — Test Cases | 5 | List, get, find, create, bulk-create, update test cases |
Test Plan — Version Control | 3 | Check out, check in, get VC status |
Test Plan — Design Steps | 1 | Add / replace design steps |
Test Lab — Test Sets | 2 | Find and create test sets |
Test Lab — Test Instances | 3 | Add tests to sets, list instances, find by name |
Test Execution | 5 | Create runs, update run/step status, full end-to-end execute |
Defects | 4 | List, get, create, update defects |
Requirements | 3 | List, get, create requirements |
Attachments | 1 | Attach any file to any ALM entity |
Search & Discovery | 2 | Generic HPQL search, list domains/projects |
Total | 32 |
Available Tools
Tool | Description |
| Refresh or reconnect the ALM session |
| Create nested Test Plan folder path |
| Create nested Test Lab folder path |
| List test cases in a folder |
| Get full details of a test case |
| Find a test case ID by exact name |
| Create a test case with optional design steps |
| Update any field(s) on a test case |
| Create many test cases in one call |
| Get VC status (Checked_In / Checked_Out) |
| Check out a test case for editing |
| Check in a test case after editing |
| Add / replace design steps on a test case |
| Find a test set by name |
| Create a test set in a Test Lab folder |
| Pull a test from Test Plan into a test set |
| List all instances in a test set |
| Find a test instance by test case name |
| Get test configuration ID for a test case |
| Create a manual test run record |
| Update the pass/fail status of a run |
| Get all run steps for a run |
| Update status and actual result of a run step |
| Full end-to-end execution in one call |
| List defects with optional HPQL filter |
| Get full details of a defect |
| Create a new defect |
| Update any field(s) on a defect |
| List requirements with optional HPQL filter |
| Get full details of a requirement |
| Create a new requirement |
| Attach a local file to any ALM entity |
| Generic HPQL search across any entity collection |
| Discover all accessible domains and projects |
Prerequisites
Python 3.11+
An accessible HP ALM / Quality Center server (12.x, 15.x, 16.x tested)
Network access from the machine running this server to your ALM instance
Installation
Option A — Install directly from GitHub (recommended for users)
pip install git+https://github.com/UditMahaldar/alm-mcp.gitOption B — Clone and install locally (recommended for contributors)
git clone https://github.com/UditMahaldar/alm-mcp.git
cd alm-mcp
pip install -e ".[dev]"Configuration
All configuration is via environment variables or a .env file in the working directory.
# Copy the example and edit it
cp .env.example .envVariable | Required | Default | Description |
| ✅ | — | Base URL of your ALM server, e.g. |
| ✅ | — | ALM login username |
| ✅ | — | ALM login password |
| ✅ | — | ALM domain name |
| ✅ | — | ALM project name |
| ❌ |
| Seconds between API calls — increase if ALM throttles requests |
Security: Never commit your
.envfile. It is listed in.gitignoreby default.
Running the Server
Claude Desktop
Add this block to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hp-alm": {
"command": "python",
"args": ["-m", "alm_mcp.server"],
"env": {
"ALM_BASE_URL": "https://your-alm-server.example.com/qcbin",
"ALM_USERNAME": "your_username",
"ALM_PASSWORD": "your_password",
"ALM_DOMAIN": "YOUR_DOMAIN",
"ALM_PROJECT": "YOUR_PROJECT"
}
}
}
}Restart Claude Desktop. You should see HP ALM MCP Server in the tools list.
VS Code / GitHub Copilot
Add this to your VS Code settings.json (or .vscode/mcp.json in the workspace):
{
"mcp": {
"servers": {
"hp-alm": {
"type": "stdio",
"command": "python",
"args": ["-m", "alm_mcp.server"],
"env": {
"ALM_BASE_URL": "https://your-alm-server.example.com/qcbin",
"ALM_USERNAME": "your_username",
"ALM_PASSWORD": "your_password",
"ALM_DOMAIN": "YOUR_DOMAIN",
"ALM_PROJECT": "YOUR_PROJECT"
}
}
}
}
}Alternatively, if you installed via pip and want to use the entry-point script:
{
"mcp": {
"servers": {
"hp-alm": {
"type": "stdio",
"command": "alm-mcp",
"env": { "..." : "..." }
}
}
}
}Standalone (stdio)
# With a .env file in the current directory
python -m alm_mcp.server
# Or with explicit env vars
ALM_BASE_URL=https://... ALM_USERNAME=user ALM_PASSWORD=pass \
ALM_DOMAIN=DEFAULT ALM_PROJECT=MyProject \
python -m alm_mcp.serverProject Structure
alm-mcp/
├── src/
│ └── alm_mcp/
│ ├── __init__.py # Package init
│ ├── config.py # pydantic-settings configuration
│ ├── alm_client.py # HP ALM REST API client
│ └── server.py # MCP tool definitions (FastMCP)
├── .env.example # Environment variable template
├── .gitignore
├── LICENSE
├── README.md
└── pyproject.tomlSecurity Notes
SSL verification is disabled (
verify=False) because many enterprise ALM deployments use self-signed certificates. This is intentional and matches standard practice for on-premise ALM.Credentials are never stored in code. They are loaded exclusively from environment variables or
.envfiles.XML injection prevention: all user-supplied values are escaped with
html.escape()before being inserted into ALM XML payloads.Path traversal prevention:
alm_attach_to_entityresolves and validatesfile_pathwithos.path.realpath()before opening the file.No secrets in error messages: authentication error messages do not include the HTTP response body, preventing credential leakage.
Contributing
Fork the repository and create a feature branch.
Install dev dependencies:
pip install -e ".[dev]"Make your changes.
Open a pull request with a clear description.
License
Maintenance
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/UditMahaldar/opentext-alm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server