Skip to main content
Glama
pbandreddy

LoadRunner Cloud MCP Server

by pbandreddy
README.md
# LRC-MCP Server

This project provides a Model Context Provider (MCP) server for integrating with LoadRunner Cloud (LRC) APIs. It enables automated, programmatic access to LRC resources and test data, making it easy to build performance engineering workflows, dashboards, and AI integrations.

## Overview

The LRC-MCP Server exposes a set of tools for interacting with LoadRunner Cloud, including:
- Retrieving projects, load tests, scripts, and test runs
- Fetching transaction details, summaries, and HTTP responses for test runs
- Automating performance data collection and reporting

The server is compatible with any MCP client, such as Claude Desktop or Cursor, and can be extended to support additional LRC APIs as needed.

## Getting Started

### Prerequisites
- Node.js (v18+ required, v20+ recommended)
- npm (comes with Node.js)

### Installation
1. Clone this repository and navigate to the project directory.
2. Install dependencies:
   ```sh
   npm install
   ```
3. Copy the example environment file and edit it with your real credentials:
   ```sh
   cp .env.example .env
   # Then edit .env and fill in your LRC_TENANT_ID, LRC_CLIENT_ID, and LRC_CLIENT_SECRET
   ```
   The `.env.example` file provides a template for the required environment variables. You must create a `.env` file (as above) and supply your actual credentials for the server to function.

### Running the Server
Start the MCP server:
```sh
node mcpServer.js
```

You can also run with Server-Sent Events (SSE) support:
```sh
node mcpServer.js --sse
```

## Available Tools

The following tools are available for interacting with LoadRunner Cloud:
- **get_projects**: Retrieve all projects in a tenant.
- **test_runs_getActiveTestRuns**: Get active test runs from LoadRunner Cloud.
- **test_runs_getTestRunTransactions**: List all transaction information in a test run.
- **test_runs_getTestRunSummary**: Get summary for a test run.
- **test_runs_getHttpResponses**: Get HTTP responses for a test run.
- **projects_getLoadTests**: Retrieve load tests for a project.
- **projects_getLoadTestScripts**: Retrieve scripts for a load test in a project.
- **projects_getLoadTestRuns**: Retrieve runs for a load test in a project.

## Example Usage

You can call these tools from any MCP-compatible client. Example (JavaScript):
```js
// Get all projects
await get_projects();

// Get load tests for a project
await projects_getLoadTests({ projectId: '10' });

// Get scripts for a load test in a project
await projects_getLoadTestScripts({ projectId: '10', loadTestId: '2159' });

// Get runs for a load test in a project
await projects_getLoadTestRuns({ projectId: '10', loadTestId: '2159' });

// Get HTTP responses for a test run
await test_runs_getHttpResponses({ runId: '16287' });
```

## Getting Absolute Paths (Shell & Windows)

To get the full path to node:
- On **Unix/Linux/macOS**, run:
  ```sh
  which node
  ```
- On **Windows PowerShell**, run:
  ```powershell
  Get-Command node | Select-Object Source
  ```

To check the node version, run:
```sh
node --version
```

To get the absolute path to `mcpServer.js`, run:
- On **Unix/Linux/macOS**:
  ```sh
  realpath mcpServer.js
  ```
- On **Windows PowerShell** (from the project directory):
  ```powershell
  Resolve-Path mcpServer.js
  ```

## MCP Client Configuration

You can connect your MCP server to any MCP client. Below are instructions for Claude Desktop and Cursor.

### Claude Desktop

1. Note the full path to node and the `mcpServer.js` from the previous step.
2. Open Claude Desktop → **Settings** → **Developers** → **Edit Config** and add a new MCP server:
   ```json
   {
     "mcpServers": {
       "<server_name>": {
         "command": "<absolute/path/to/node>",
         "args": ["<absolute/path/to/mcpServer.js>"]
       }
     }
   }
   ```
3. Restart Claude Desktop to activate this change. Make sure the new MCP is turned on and has a green circle next to it.

**Warning**: If you don't supply an absolute path to a `node` version that is v18+, Claude (and other MCP clients) may fall back to another `node` version on the system of a previous version. In this case, the `fetch` API won't be present and tool calls will not work. If that happens, you can a) install a newer version of node and point to it in the command, or b) import `node-fetch` into each tool as `fetch`, making sure to also add the `node-fetch` dependency to your package.json.

### Cursor

1. Note the full path to node and the `mcpServer.js` as above.
2. In Cursor, go to **Settings** → **AI Tools** → **MCP Servers** (or similar MCP integration section).
3. Add a new MCP server configuration:
   ```json
   {
     "command": "<absolute/path/to/node>",
     "args": ["<absolute/path/to/mcpServer.js>"]
   }
   ```
4. Save and enable the server. Ensure it is running and available for tool calls in Cursor.

## Docker Deployment

For production deployments, you can use Docker:
```sh
docker build -t lrc-mcp-server .
```

## About MCP

Model Context Provider (MCP) is a protocol for exposing programmatic tools to AI and automation clients. This server implements the MCP protocol for LoadRunner Cloud APIs.

---

For more information, see the source code and tool documentation.

TDQS

B3.1/5.0

Scored across 9 tools

Disambiguation4/5

Most tools have distinct purposes targeting different resources (projects, test runs, scripts, responses, results, transactions), but 'get_active_test_runs' and 'test_runs_getRecentTestRuns' could cause confusion as both retrieve test runs with temporal filters. Descriptions clarify one gets active runs and the other recent runs, but the overlap exists.

Naming Consistency2/5

Naming is inconsistent with mixed conventions: some use snake_case (e.g., 'get_active_test_runs'), others use camelCase (e.g., 'projects_getLoadTestRuns'), and verb styles vary (e.g., 'get' vs 'retrieve'). This lack of a predictable pattern makes the set harder to navigate.

Tool Count5/5

With 9 tools, the count is well-scoped for a LoadRunner Cloud server, covering key operations like retrieving projects, tests, runs, scripts, responses, results, and transactions. Each tool appears to serve a specific function without bloat.

Completeness3/5

The tools provide good read-only coverage for monitoring and retrieving data (projects, tests, runs, scripts, responses, results, transactions), but there are notable gaps in CRUD operations. For a load testing domain, missing tools for creating, updating, or deleting tests/runs limit agent capabilities for full lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues