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: { }, |
There was a problem hiding this comment.
This is due to: modelcontextprotocol/typescript-sdk#400
with potential solution from: modelcontextprotocol/modelcontextprotocol#1196
It's possible an SDK bump might resolve this, but I haven't found a version with a fix
| "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.
There was a problem hiding this comment.
Vitest is a buildtime concern not a runtime, so there isn't a need to declare engines.node
I'm ok with dropping test support on node 18 while retaining runtime support
Background
We have feature requests for access to additional reporting endpoints based on usage
Change
This PR adds 3 major tools