@gremlin/mcp-server 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Readme.md CHANGED
@@ -18,6 +18,13 @@ This MCP server provides access to Gremlin's reliability testing and management
18
18
  - Node.js 18 or higher
19
19
  - A valid [Gremlin API key](https://app.gremlin.com/settings/api-keys)
20
20
 
21
+ ### Environment Variables
22
+
23
+ | Variable | Required | Default | Description |
24
+ | --- | --- | --- | --- |
25
+ | `GREMLIN_API_KEY` | Yes | — | Your Gremlin API key. The server exits immediately if this is missing. |
26
+ | `GREMLIN_SERVICE_URL` | No | `https://api.gremlin.com/v1` | Base URL for the Gremlin API, including the version prefix. Override to target a staging or self-hosted environment. |
27
+
21
28
  ### Claude Desktop
22
29
 
23
30
  Go to Claude Settings > Developer and add the following to your `claude_desktop_config.json`:
@@ -38,6 +45,19 @@ Go to Claude Settings > Developer and add the following to your `claude_desktop_
38
45
 
39
46
  ### VS Code / Cursor
40
47
 
48
+ > Requires [VS Code 1.99](https://code.visualstudio.com/updates/v1_99) or higher (MCP support was added in the March 2025 release). See also: [Cursor MCP docs](https://cursor.com/docs/mcp).
49
+
50
+ Open your MCP Settings:
51
+ - Cursor: `Cmd+Shift+P` → search "Cursor Settings" → Tools & Integrations → Add Custom MCP
52
+ - VSCode: `Cmd+Shift+P` → type "MCP: Open User Configuration"
53
+
54
+ Or directly edit them:
55
+ - Cursor (Mac/Linux): `~/.cursor/mcp.json`
56
+ - Cursor (Win): `%USERPROFILE%\.cursor\mcp.json`
57
+ - VSCode (Mac): `~/Library/Application Support/Code/User/mcp.json`
58
+ - VSCode (Win): `%APPDATA%\Code\User\mcp.json`
59
+ - VSCode (Linux): `~/.config/Code/User/mcp.json`
60
+
41
61
  Add the following to your MCP settings:
42
62
 
43
63
  ```json
@@ -63,6 +83,7 @@ Add the following to your MCP settings:
63
83
  }
64
84
  ```
65
85
 
86
+
66
87
  ## Available Tools
67
88
 
68
89
  ### Service Management
@@ -0,0 +1,27 @@
1
+ import type { GremlinClient } from './interface';
2
+ import type { Page, PendingReliabilityTestRun, PricingReport, RecentRunResponse, ReliabilityReport, ReliabilityTestRun, ReliabilityTestRunParameters, ReliabilityTestSuite, ReportPeriod, Self, Service, Team, TrackingPeriod, User } from '../types';
3
+ export declare class GremlinApi implements GremlinClient {
4
+ private baseUrl;
5
+ private userAgent;
6
+ private cache;
7
+ listUsers(): Promise<User[]>;
8
+ listTeams(): Promise<Team[]>;
9
+ getTeam(teamId: string): Promise<Team>;
10
+ listServicesForTeam(teamId: string): Promise<Page<Service>>;
11
+ getReliabilityReport(serviceId: string, teamId: string, date?: string): Promise<ReliabilityReport>;
12
+ getServiceDependencies(serviceId: string, teamId: string): Promise<ReliabilityReport>;
13
+ getServiceStatusChecks(serviceId: string, teamId: string): Promise<ReliabilityReport>;
14
+ getServiceRisks(serviceId: string, teamId: string): Promise<ReliabilityReport>;
15
+ getAllTestSuite(): Promise<ReliabilityTestSuite[]>;
16
+ getRecentReliabilityTests(teamId: string, limit?: number, pageToken?: string): Promise<Page<RecentRunResponse>>;
17
+ getReliabilityExperiment(serviceId: string, teamId: string, dependencyId?: string, testId?: string, limit?: number): Promise<Page<ReliabilityTestRun> | ReliabilityTestRun>;
18
+ runReliabilityTest(reliabilityTestId: string, teamId: string, params: ReliabilityTestRunParameters): Promise<ReliabilityTestRun>;
19
+ getPendingTestRuns(serviceId: string, teamId: string): Promise<PendingReliabilityTestRun[]>;
20
+ getService(serviceId: string, teamId: string): Promise<Page<Service>>;
21
+ getPricingReport(startDate: string, endDate: string, trackingPeriod?: TrackingPeriod): Promise<PricingReport>;
22
+ getClientSummary(teamId: string, start: string, end: string, period: ReportPeriod): Promise<unknown>;
23
+ getAttackSummary(teamId: string, start: string, end: string, period: ReportPeriod): Promise<unknown>;
24
+ getSelf(): Promise<Self>;
25
+ execute<T = unknown>(method: string, path: string, queryParams?: Record<string, string>, body?: Record<string, unknown>): Promise<T>;
26
+ private requestWithRetry;
27
+ }
@@ -0,0 +1,22 @@
1
+ import type { Page, PendingReliabilityTestRun, PricingReport, RecentRunResponse, ReliabilityReport, ReliabilityTestRun, ReliabilityTestRunParameters, ReliabilityTestSuite, ReportPeriod, Self, Service, Team, TrackingPeriod, User } from '../types';
2
+ export interface GremlinClient {
3
+ listUsers(): Promise<User[]>;
4
+ listTeams(): Promise<Team[]>;
5
+ getTeam(teamId: string): Promise<Team>;
6
+ listServicesForTeam(teamId: string): Promise<Page<Service>>;
7
+ getService(serviceId: string, teamId: string): Promise<Page<Service>>;
8
+ getSelf(): Promise<Self>;
9
+ getReliabilityReport(serviceId: string, teamId: string, date?: string): Promise<ReliabilityReport>;
10
+ getServiceDependencies(serviceId: string, teamId: string): Promise<ReliabilityReport>;
11
+ getServiceStatusChecks(serviceId: string, teamId: string): Promise<ReliabilityReport>;
12
+ getServiceRisks(serviceId: string, teamId: string): Promise<ReliabilityReport>;
13
+ getAllTestSuite(): Promise<ReliabilityTestSuite[]>;
14
+ getRecentReliabilityTests(teamId: string, limit?: number, pageToken?: string): Promise<Page<RecentRunResponse>>;
15
+ getReliabilityExperiment(serviceId: string, teamId: string, dependencyId?: string, testId?: string, limit?: number): Promise<Page<ReliabilityTestRun> | ReliabilityTestRun>;
16
+ runReliabilityTest(reliabilityTestId: string, teamId: string, params: ReliabilityTestRunParameters): Promise<ReliabilityTestRun>;
17
+ getPendingTestRuns(serviceId: string, teamId: string): Promise<PendingReliabilityTestRun[]>;
18
+ getPricingReport(startDate: string, endDate: string, trackingPeriod?: TrackingPeriod): Promise<PricingReport>;
19
+ getClientSummary(teamId: string, start: string, end: string, period: ReportPeriod): Promise<unknown>;
20
+ getAttackSummary(teamId: string, start: string, end: string, period: ReportPeriod): Promise<unknown>;
21
+ execute<T = unknown>(method: string, path: string, queryParams?: Record<string, string>, body?: Record<string, unknown>): Promise<T>;
22
+ }
@@ -0,0 +1,27 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export interface ElicitationOption {
3
+ label: string;
4
+ value: string;
5
+ description?: string;
6
+ }
7
+ /**
8
+ * Abstracts over any mechanism that asks a user to pick from a set of options.
9
+ * Implement this to plug custom confirmation UIs into the Gremlin tools.
10
+ */
11
+ export interface ElicitationClient {
12
+ /**
13
+ * Prompt the user to choose one of the provided options.
14
+ * Returns the `value` of the chosen option.
15
+ * Throw if the prompt cannot be shown (e.g. unsupported runtime).
16
+ */
17
+ confirm(prompt: string, options: ElicitationOption[]): Promise<string>;
18
+ }
19
+ /**
20
+ * Adapter that implements ElicitationClient on top of the MCP SDK's elicitInput.
21
+ * Treats the first option as "proceed" and everything else as "cancel".
22
+ */
23
+ export declare class McpElicitationClient implements ElicitationClient {
24
+ private readonly server;
25
+ constructor(server: McpServer);
26
+ confirm(prompt: string, options: ElicitationOption[]): Promise<string>;
27
+ }
@@ -0,0 +1,11 @@
1
+ export type { GremlinClient } from './client/interface';
2
+ export type { ElicitationClient, ElicitationOption } from './elicitation';
3
+ export { McpElicitationClient } from './elicitation';
4
+ export type { Page, PendingReliabilityTestRun, PolicyEvaluation, PricingReport, PricingUsage, RecentRunResponse, ReliabilityCategorySummary, ReliabilityReport, ReliabilityTestRun, ReliabilityTestRunParameters, ReliabilityTestSuite, ReportPeriod, Self, Service, Team, TrackingPeriod, User, } from './types';
5
+ export { createGetReliabilityExperimentTool, createGetReliabilityReportTool, createGetCurrentTestSuiteTool, createRunReliabilityTestTool, createGetPendingTestRunsTool, createGetRecentReliabilityTestsTool, } from './tools/reliability-management';
6
+ export { createListServicesTool, createGetServiceDependenciesTool, createGetServiceStatusChecksTool, createListServiceRisksTool, } from './tools/services';
7
+ export { createListTeamsTool } from './tools/teams';
8
+ export { createGetPricingReportTool, createGetClientSummaryTool, createGetAttackSummaryTool, } from './tools/company';
9
+ export { createSearchGremlinApiTool, createExecuteGremlinApiTool } from './tools/openapi';
10
+ export { registerTools } from './tools/index';
11
+ export { registerResources } from './resources/index';