Ghostinspector Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ghostinspector Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An MCP (Model Context Protocol) server for interacting with Ghost Inspector, an automated browser testing platform.
This MCP server provides tools to:
pip install -e /path/to/ghostinspector-mcp-serveruv pip install -e /path/to/ghostinspector-mcp-serverSet your Ghost Inspector API key as an environment variable:
export GHOST_INSPECTOR_API_KEY=your_api_key_hereYou can find your API key at: https://app.ghostinspector.com/account
Add the server to your Claude Code MCP settings. Edit your ~/.claude/claude_desktop_config.json (or the appropriate config file):
{
"mcpServers": {
"ghostinspector": {
"command": "ghostinspector-mcp",
"env": {
"GHOST_INSPECTOR_API_KEY": "your_api_key_here"
}
}
}
}Or if using uv:
{
"mcpServers": {
"ghostinspector": {
"command": "uv",
"args": ["run", "--directory", "/path/to/ghostinspector-mcp-server", "ghostinspector-mcp"],
"env": {
"GHOST_INSPECTOR_API_KEY": "your_api_key_here"
}
}
}
}| Tool | Description |
|---|---|
get_hierarchy | Get complete folder/suite structure in a single call |
list_modules | List all reusable modules (tests with importOnly=true) |
get_module_usage | Find all tests that import a specific module |
| Tool | Description |
|---|---|
list_tests | List all tests in your account (includes importOnly flag) |
get_test | Get detailed information about a specific test |
execute_test | Execute a test with optional parameters (browser, region, viewport, start URL) |
duplicate_test | Create a copy of an existing test |
execute_on_demand_test | Run a test from JSON definition without saving it permanently |
list_test_results | List execution history for a test |
get_test_result | Get detailed result information |
cancel_test_result | Cancel a running test |
| Tool | Description |
|---|---|
list_suites | List all test suites (includes resolved folder names) |
get_suite | Get suite details |
execute_suite | Execute all tests in a suite |
import_test | Create a new test in a suite from JSON definition |
list_suite_tests | List tests within a suite (includes importOnly flag) |
list_suite_results | List execution history for a suite |
get_suite_result | Get detailed suite result |
list_suite_result_tests | List individual test results from a suite run |
cancel_suite_result | Cancel a running suite |
| Tool | Description |
|---|---|
list_folders | List all folders |
get_folder | Get folder details |
list_folder_suites | List suites in a folder |
| Tool | Description |
|---|---|
get_running_tests | Get currently running tests for an organization |
Once configured, you can use natural language to interact with Ghost Inspector:
Ghost Inspector supports reusable test modules - tests that are designed to be imported into other tests rather than run independently. Common examples include login flows, navigation sequences, and setup/teardown procedures.
Tests marked with importOnly=true are modules. They:
| Tool | Use Case |
|---|---|
list_modules | See all reusable modules grouped by suite |
get_module_usage | Impact analysis before modifying a module |
list_tests / list_suite_tests | Check importOnly flag to identify modules |
You can create tests programmatically using either import_test (saves permanently) or execute_on_demand_test (runs without saving).
Steps are defined as a JSON array. Each step has:
command: The action to performtarget: CSS selector or element identifiervalue: (optional) Value for the action| Command | Description | Example |
|---|---|---|
click | Click an element | {"command": "click", "target": ".submit-btn"} |
type | Type text into an input | {"command": "type", "target": "#email", "value": "[email protected]"} |
open | Navigate to a URL | {"command": "open", "target": "https://example.com/page"} |
assertTextPresent | Verify text exists | {"command": "assertTextPresent", "target": "body", "value": "Welcome"} |
assertElementPresent | Verify element exists | {"command": "assertElementPresent", "target": ".success-message"} |
assertElementVisible | Verify element is visible | {"command": "assertElementVisible", "target": "#modal"} |
extract | Extract text to a variable | {"command": "extract", "target": ".user-id", "value": "userId"} |
eval | Execute JavaScript | {"command": "eval", "value": "document.title"} |
pause | Wait for milliseconds | {"command": "pause", "value": "2000"} |
screenshot | Take a screenshot | {"command": "screenshot"} |
mouseOver | Hover over element | {"command": "mouseOver", "target": ".dropdown"} |
keypress | Press keyboard key | {"command": "keypress", "target": "#input", "value": "Enter"} |
Create a test in suite abc123 called "Login Test" that:
1. Goes to https://example.com/login
2. Types "[email protected]" into #email
3. Types "password123" into #password
4. Clicks the .login-button
5. Verifies "Dashboard" appears on the page# Clone the repository
cd ghostinspector-mcp-server
# Install dependencies
uv pip install -e ".[dev]"pytestblack src/
ruff check src/MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.