Extensions - MCP Server

MCP Server

The GauntletCI MCP server gives your AI coding assistant direct access to behavioral change risk analysis. Ask Claude, Copilot, or Cursor to check your current commit for risks - the assistant calls GauntletCI locally and explains the findings in context with your question.

How it works

The Model Context Protocol is an open standard that lets AI assistants call external tools. The GauntletCI MCP server is a local Node.js process that listens on stdin/stdout. When your assistant calls the analyze_commit tool, the server runs gauntletci analyze in the directory you specify and returns the findings as structured text.

AI Assistant

Claude / Copilot / Cursor

--

MCP (stdio)

--

gauntletci-mcp

Node.js (local)

--

CLI spawn

--

GauntletCI CLI

.NET tool (local)

All processing is local. No code or diff content leaves your machine.

Prerequisites

  • +Node.js 20 or later
  • +GauntletCI CLI: dotnet tool install -g GauntletCI
  • +An MCP-compatible AI assistant (Claude Desktop, Copilot, or Cursor)

Install the MCP server

$ npm install -g @ericcogen/gauntletci-mcp

Or clone and build from source for the latest changes:

$ git clone https://github.com/EricCogen/GauntletCI-MCP

$ cd GauntletCI-MCP && npm install && npm run build

Setup: Claude Desktop

Add the server to your Claude Desktop config file. On macOS the file is at ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it is at %APPDATA%\Claude\claude_desktop_config.json.

{
  "mcpServers": {
    "gauntletci": {
      "command": "node",
      "args": ["/path/to/gauntletci-mcp/dist/index.js"]
    }
  }
}

Replace /path/to/gauntletci-mcp/dist/index.js with the absolute path to the built server. Restart Claude Desktop after saving.

Setup: GitHub Copilot (VS Code)

Create or update .vscode/mcp.json in your workspace. This scopes the server to projects that use it.

{
  "servers": {
    "gauntletci": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/node_modules/.bin/gauntletci-mcp"]
    }
  }
}

Setup: Cursor

In Cursor, open Settings > MCP and add the server configuration, or add it directly to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "gauntletci": {
      "command": "npx",
      "args": ["-y", "@ericcogen/gauntletci-mcp"]
    }
  }
}

Available tools

ToolDescriptionParameters
analyze_commitRun GauntletCI on HEAD and return findings as readable structured text.workingDirectory (required), sensitivity (optional)
get_findings_jsonRun GauntletCI and return the raw JSON result for programmatic processing.workingDirectory (required), sensitivity (optional)
get_sarifRun GauntletCI and return a SARIF 2.1.0 report for ingestion into GHAS or the VS Code SARIF viewer.workingDirectory (required)

The sensitivity parameter accepts strict, balanced (default), or permissive.

Example prompts

Once the MCP server is connected, you can ask your AI assistant directly about your commit. The assistant calls GauntletCI, parses the results, and responds in natural language.

You

Run GauntletCI on the repo at /Users/eric/projects/myapp and tell me what risks it found.

AI Assistant

I ran GauntletCI on the current HEAD commit. It found 3 issues: [Block] GCI0001 in OrderService.cs:44 - Behavior change without test coverage. SaveAsync was modified but no test file covering OrderService was updated. Add a test covering the new behavior before merging. [Block] GCI0003 in PaymentService.cs:112 - A new exception path was introduced but no call sites were updated to handle it. This may cause unhandled exceptions in production. [Warn] GCI0004 in Models/Order.cs:23 - Return type semantics changed from non-nullable to nullable. Callers may not be checking for null.

You

Can you explain why the GCI0003 finding is a problem?

AI Assistant

GCI0003 fires when a method now throws a new exception type that no existing call sites are prepared to catch. In this case, PaymentService.ProcessPayment now throws InvalidOperationException under a condition that didn't exist before. If callers swallow all exceptions or only catch specific types, this new exception will propagate up as an unhandled crash at runtime - even if all existing tests pass, because the tests exercise the happy path that doesn't trigger the new branch.

Suggested prompts

"Are there any block-level risks in my current commit?"
"Get the GauntletCI SARIF report for this repo and summarize the top issues."
"Run GauntletCI in strict mode and explain any findings related to async code."
"What does finding GCI0003 mean and how do I fix it?"