Conversation
There was a problem hiding this comment.
Pull request overview
Adds new reporting/usage tools to the Gremlin MCP server, along with a Vitest-based integration test suite to exercise the expanded tool surface area against the live Gremlin API.
Changes:
- Add 3 new MCP tools (
get_pricing_report,get_client_summary,get_attack_summary) backed by new Gremlin API client methods. - Add Vitest configuration + integration tests and wire
make test/npm testto run them. - Bump service/package versions to
1.1.0and update docs for the new endpoints and testing workflow.
Reviewed changes
Copilot reviewed 12 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vitest.config.ts | Adds Vitest configuration for running integration tests. |
| tsconfig.json | Adjusts TS project settings (notably rootDir and exclude). |
| tests/integration/mcp-server.test.ts | New end-to-end integration tests validating tool registration and core tool behaviors. |
| src/tools/services.ts | Updates list_services tool schema. |
| src/tools/reliability-management.ts | Fixes get_reliability_experiments handler to return results. |
| src/tools/index.ts | Registers the new company reporting tools. |
| src/tools/company.ts | Implements the 3 new reporting tools and their schemas. |
| src/main.ts | Bumps MCP server version to 1.1.0. |
| src/client/gremlin.ts | Adds client methods/types for pricing and usage report endpoints; bumps user-agent version. |
| package.json | Bumps package version, adds Vitest, updates test script. |
| package-lock.json | Locks new Vitest/Vite dependency graph. |
| Readme.md | Documents new reporting tools and how to run integration tests. |
| Makefile | Adds test target that builds then runs Vitest. |
| CLAUDE.md | Documents preferred build/test commands. |
| .gitignore | Ignores .env. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| schema: { | ||
| "$schema":"https://json-schema.org/draft/2020-12/schema", | ||
| "type":"object", | ||
| "properties":{} | ||
| }, |
There was a problem hiding this comment.
The schema for list_services is now a JSON Schema object (with $schema, type, properties), but the MCP server registration (server.tool(...)) and the rest of the tools in this repo pass a Zod raw shape (e.g., { teamId: z.string() }). Passing plain strings here is likely to break tool registration / argument validation at runtime. Use an empty Zod schema (e.g., {}) for a no-arg tool, or otherwise provide Zod types for each key instead of JSON Schema metadata.
| schema: { | |
| "$schema":"https://json-schema.org/draft/2020-12/schema", | |
| "type":"object", | |
| "properties":{} | |
| }, | |
| schema: { }, |
| "devDependencies": { | ||
| "@types/node": "^24.0.10", | ||
| "esbuild": "^0.25.8", | ||
| "typescript": "^5.8.3" | ||
| "typescript": "^5.8.3", | ||
| "vitest": "^4.0.18" | ||
| } |
There was a problem hiding this comment.
Adding vitest@^4.0.18 pulls in vite@7.x (per the lockfile) which declares Node engine ^20.19.0 || >=22.12.0. This is a breaking change for environments still on Node 18 (which is otherwise compatible with @modelcontextprotocol/sdk’s >=18 requirement). Either pin Vitest/Vite to a version that supports Node 18, or add an engines.node constraint + CI update so installs/runs don’t fail unexpectedly.
Background
We have feature requests for access to additional reporting endpoints based on usage
Change
This PR adds 3 major tools