testmo-mcp

testmo-mcp

MCP server that integrates with Testmo to let AI assistants read projects, runs, results, and test cases, and create or update runs, results, and cases via natural language.

Category
Visit Server

README

testmo-mcp

A small local Model Context Protocol (MCP) server that provides seamless integration with the Testmo test management platform by exposing [Testmo (https://www.testmo.com/)'s REST API as tools so an MCP client (Claude Desktop, Claude Code, etc.) can read your projects/runs/results and create or update runs, results and test cases without any hosting and without pasting data back and forth.

It runs on your machine and talks to your Testmo instance over HTTPS using an API token you supply via environment variables. The token is never written to disk by the server.

Tools

Read

Tool What it does
testmo_list_projects List all projects
testmo_list_runs List manual runs in a project (name/closed/milestone filters, pagination)
testmo_get_run One run's summary (status counts, totals)
testmo_list_results Recorded results for a run
testmo_list_statuses Result status IDs for a project (Passed/Failed/…)
testmo_list_states Workflow state IDs (run/case/session) — for state_id when creating
testmo_list_templates Case template IDs — for template_id / custom fields
testmo_list_cases List repository cases (folder/name/template filters)
testmo_get Raw GET against any /api/v1 path (escape hatch)

Write (create/update — no delete)

Tool What it does
testmo_record_result Record a result for one test
testmo_record_results_bulk Record results for 1–100 tests in one request
testmo_create_run Create a manual run (name, state_id, include_all required)
testmo_update_run Update a run; set is_closed=true to close it
testmo_create_cases Create 1–100 repository cases (steps go in custom.custom_steps)
testmo_update_cases Update 1–100 cases by ids (same fields applied to all)

There is intentionally no delete tool — destructive operations are left out so the server can't remove data.

Requirements

  • Node.js 18+ (node --version)
  • A Testmo instance and an API access key (Testmo → User Profile → API access)

Installation

# 1. Clone the repo
git clone https://github.com/<your-account>/testmo-mcp.git
cd testmo-mcp

# 2. Install dependencies
npm install

# 3. (Optional) verify it starts — Ctrl+C to exit
TESTMO_INSTANCE=https://your-team.testmo.net TESTMO_TOKEN=your-testmo-api-key node index.js
# → prints: [testmo-mcp] ready on stdio

Then wire it into your MCP client (below). You don't run the server yourself in normal use — the client launches it for you.

Configure your MCP client

Set the environment variables (see .env.example) and point your client at index.js. For Claude Desktop, edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/) and add:

{
  "mcpServers": {
    "testmo": {
      "command": "/absolute/path/to/node",
      "args": ["/absolute/path/to/testmo-mcp/index.js"],
      "env": {
        "TESTMO_INSTANCE": "https://your-team.testmo.net",
        "TESTMO_TOKEN": "your-testmo-api-key"
      }
    }
  }
}

Tips:

  • Use the absolute path to node (run which node). GUI apps often launch with a minimal PATH and can't find a bare node.
  • Fully quit and reopen the client so it re-spawns the server.

Environment variables

Var Required Purpose
TESTMO_INSTANCE yes Your Testmo URL, e.g. https://your-team.testmo.net
TESTMO_TOKEN yes API access key (Testmo → User Profile → API access)
TESTMO_DEFAULT_FOLDER_ID no Default folder for new cases so Testmo doesn't auto-create one each time

Notes & gotchas

  • This is a local server. It only works where it runs. A client session that executes in the cloud (not on your machine) can't see it — use it from a local session.
  • Testmo has no single "list every test with its name in a run" endpoint. testmo_list_results returns tests that have a recorded result, and the test_id it returns is the run_test_id you pass to testmo_record_result.
  • Linking issue-tracker tickets. Use the issues param on testmo_create_cases / testmo_update_cases. Each item needs display_id (the ticket ID) and integration_id (your Testmo issue integration). Testmo's API doesn't list integration IDs, and it can write linked issues but not read them back. To find your integration_id: check the integration in Testmo's admin area, or create a throwaway case with issues:[{display_id:"<id>", integration_id:<n>}] and read the error — Testmo tells you if an integration ID "does not exist" or "is not associated with this project," so you can find the right one, then delete the throwaway.
  • New cases default to TESTMO_DEFAULT_FOLDER_ID (when set); otherwise Testmo auto-creates a folder per create.

Security

  • The token is read from the environment only; it is never written to any file by this server. .gitignore covers .env, node_modules/, and logs.
  • Whoever configures the client stores the token in that client's config — keep it private and prefer OS secret storage where available. Rotate the key if it is ever exposed.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured