High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.
MCP server for GitGuardian secret scanning and remediation
GitGuardian MCP Server exposes secret scanning, incident management, honeytokens, and remediation actions to MCP clients. It can run as hosted HTTP, self-hosted HTTP, or local stdio, with the exact tools exposed based on the OAuth scopes or PAT scopes you grant.
Builders who want an agent in Cursor or Windsurf to scan code, triage secret incidents, and remediate leaks without leaving the chat or IDE.
You can catch leaked credentials earlier and handle secret incidents from inside your agent workflow.
What it does
Secret scanning
Scans files and codebases for leaked credentials before they are made public.
Incident management
Lists, filters, assigns, resolves, and tags GitGuardian incidents, including Public Monitoring incidents.
Honeytoken management
Creates honeytokens and lists existing ones for monitoring credential use.
Remediation pull requests
Opens pull requests that fix exposed secrets in monitored repositories.
OAuth and PAT auth
Supports hosted OAuth proxy, raw bearer tokens, and local PAT-based runs depending on deployment.
MCP client setup
Works with HTTP MCP and stdio MCP configurations for supported clients.
How to get it
- 1The exact set of tools exposed to your agent depends on the OAuth scopes granted to your…
Scan this codebase for any leaked secrets or credentials.
- 2Run
Remediate all incidents related to my project.
- 3Run
Check if there are any new security incidents assigned to me.
- 4Run
Help me understand this security incident and provide remediation steps.
- 5Run
List all my active honeytokens.
- 6Run
Generate a new honeytoken for monitoring AWS credential access.
README
GitGuardian MCP Server
Bring GitGuardian's secret detection and incident management into your AI agent. Scan code for credentials before they leak, triage existing incidents, generate honeytokens, and remediate findings — all from inside your IDE or chat client, backed by GitGuardian's 500+ detectors.
[!CAUTION] MCP servers are an emerging technology. Agents act on your behalf and under your responsibility. Use trusted MCP servers and review agent actions when they interact with tools. To limit blast radius the server defaults to read-only-leaning permissions; what is actually exposed is determined by the OAuth scopes your access token holds.
What it does
- Secret scanning — proactively scan files for leaked credentials.
- Incident management — list, filter, assign, resolve, and tag incidents (both internal and Public Monitoring incidents).
- Honeytokens — generate honeytokens and list existing ones.
- Code-fix automation — open pull requests that remediate secrets in repositories your workspace monitors.
The exact set of tools exposed to your agent depends on the OAuth scopes granted to your access token.
Prompt examples
Scan this codebase for any leaked secrets or credentials.
Remediate all incidents related to my project.
Check if there are any new security incidents assigned to me.
Help me understand this security incident and provide remediation steps.
List all my active honeytokens.
Generate a new honeytoken for monitoring AWS credential access.
Create a honeytoken named 'dev-database' and hide it in config files.
Quick start
The recommended way to run the GitGuardian MCP server is to point your MCP
client at the hosted server. The MCP client handles OAuth automatically; no
local install, no token to manage, no uvx.
Pick the URL that matches your GitGuardian region:
| Region | URL |
|---|---|
| US SaaS | https://mcp.gitguardian.com/mcp |
| EU SaaS | https://mcp.eu1.gitguardian.com/mcp |
| Self-hosted | See Self-hosting the MCP server |
Cursor
Edit ~/.cursor/mcp.json:
{
"mcpServers": {
"GitGuardian": {
"type": "http",
"url": "https://mcp.gitguardian.com/mcp"
}
}
}
Claude Desktop
Edit ~/Library/Application Support/Claude Desktop/mcp.json (macOS) or
%APPDATA%\Claude Desktop\mcp.json (Windows). Same JSON as Cursor. Claude
Desktop versions that pre-date HTTP MCP support need the
Local stdio fallback.
Claude.ai (web)
Add the server in Settings → Connectors → Add custom connector with the URL above. OAuth is handled in the browser tab.
Windsurf
Edit ~/Library/Application Support/Windsurf/mcp.json (or
~/.config/Windsurf/mcp.json on Linux):
{
"mcp": {
"servers": {
"GitGuardian": {
"type": "http",
"url": "https://mcp.gitguardian.com/mcp"
}
}
}
}
Zed
Edit ~/Library/Application Support/Zed/mcp.json (or
~/.config/Zed/mcp.json on Linux) with the same type: http snippet.
Choosing a deployment
Two deployment paths are supported. Pick based on where your GitGuardian instance lives and what tradeoffs you accept.
| Deployment | When to use |
|---|---|
| Hosted MCP (Quick start above) | GitGuardian SaaS (US/EU) and you accept that requests transit mcp.gitguardian.com in addition to api.gitguardian.com |
| Self-hosted MCP (§) | Self-hosted GitGuardian, airgapped environments, or you want the MCP server on your own infrastructure |
| Local stdio with PAT (§) | CI/CD, scripts, one-off invocations, or older MCP clients without type: http support |
Authentication
Most users do not need to touch this — the Quick start config implicitly uses the OAuth proxy mode on the hosted server, and the Local stdio config uses PAT env.
There are four authentication modes the server can run in; you pick one via env vars.
| Mode | Configuration | Used by |
|---|---|---|
| OAuth proxy (HTTP) | MCP_OAUTH_PROXY_ENABLED=true + ENABLE_LOCAL_OAUTH=false | The hosted MCP server. MCP client runs OAuth against /authorize+/token; the server proxies to the GG dashboard. |
| Raw bearer (HTTP) | ENABLE_LOCAL_OAUTH=false + MCP_PORT set | Self-hosted deployments without OAuth. Client sends Authorization: Bearer <PAT> on every request. |
| PAT env (any transport) | GITGUARDIAN_PERSONAL_ACCESS_TOKEN=<pat> + ENABLE_LOCAL_OAUTH=false | CI, scripts, local stdio. Server uses the env-var PAT for every GG API call. |
| Browser-OAuth stdio (deprecated) | ENABLE_LOCAL_OAUTH=true (today's default in stdio) | Legacy uvx --from … flow that opens a localhost callback and stores the PAT on disk. |
[!NOTE] Browser-driven OAuth in stdio mode is deprecated. New stdio deployments should authenticate with a PAT; OAuth-driven flows should use the hosted or self-hosted HTTP server. The stdio OAuth code path will be removed in a future release; until then it remains the default in stdio for backward compatibility.
Local stdio mode (PAT-only)
For CI/CD, airgapped environments, or older MCP clients, run the server locally over stdio with a PAT:
{
"mcpServers": {
"GitGuardian": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/GitGuardian/ggmcp.git",
"gg-mcp-server"
],
"env": {
"ENABLE_LOCAL_OAUTH": "false",
"GITGUARDIAN_PERSONAL_ACCESS_TOKEN": "your_pat_here",
"GITGUARDIAN_URL": "https://dashboard.gitguardian.com"
}
}
}
}
Create a PAT in your GitGuardian dashboard under API → Personal Access Tokens. The set of tools the server exposes depends on the PAT's scopes.
For Claude Desktop on macOS, the command field needs the absolute path
to uvx (e.g. /Users/you/.local/bin/uvx) — Claude Desktop does not resolve
$PATH for MCP servers.
Self-hosting the MCP server
The MCP server will be soon available out of the box as part of your GitGuardian self-hosted deployment (Helm chart). This section is only meant to describe how it works, but you don't have to set it up.
A Docker image is published at ghcr.io/gitguardian/mcp-server. Run it behind a
reverse proxy that terminates TLS, then point your MCP clients at it. The
container exposes the StreamableHTTP transport on port 8000 by default.
Minimum configuration:
docker run -p 8000:8000 \
-e GITGUARDIAN_URL=https://dashboard.gitguardian.mycorp.local \
-e IS_ON_PREM=true \
-e MCP_BASE_URL=https://mcp.mycorp.local \
-e MCP_OAUTH_PROXY_ENABLED=true \
-e ENABLE_LOCAL_OAUTH=false \
ghcr.io/gitguardian/mcp-server:latest \
gunicorn --workers=4 --worker-class=uvicorn.workers.UvicornWorker \
-b 0.0.0.0:8000 gg_mcp_server.http_app:app
IS_ON_PREM=true tells the server it talks to a self-hosted GIM instance
(API served under /exposed/v1, self-hosted scope set). When unset, the
server guesses from the GITGUARDIAN_URL hostname, which fails for
self-hosted instances deployed under a gitguardian.com/gitguardian.tech
domain — set it explicitly for any self-hosted deployment.
MCP_OAUTH_PROXY_ENABLED=true makes the server advertise itself as an OAuth
Protected Resource (RFC 9728) and proxy /authorize, /token, /register
to your GitGuardian dashboard. MCP clients then run the OAuth flow against
your domain.
Configuration reference
| Variable | Description | Default |
|---|---|---|
GITGUARDIAN_URL | GitGuardian dashboard URL | https://dashboard.gitguardian.com |
IS_ON_PREM | true => self-hosted; false => SaaS; unset ⇒ guess from hostname | Unset |
GITGUARDIAN_PERSONAL_ACCESS_TOKEN | PAT (overrides OAuth) | Unset |
GITGUARDIAN_SCOPES | Comma-separated OAuth scopes to request | Auto |
GITGUARDIAN_CLIENT_ID | OAuth client ID | ggshield_oauth |
GITGUARDIAN_TOKEN_NAME | Display name for OAuth-issued PATs | MCP Token |
GITGUARDIAN_TOKEN_LIFETIME | PAT lifetime in days (or never) | 30 |
MCP_PORT | Port for HTTP transport (unset ⇒ stdio) | Unset |
MCP_HOST | Bind address for HTTP transport | 127.0.0.1 |
MCP_BASE_URL | Public URL of this MCP server (OAuth proxy mode) | http://localhost:8000 |
MCP_OAUTH_PROXY_ENABLED | Advertise OAuth Protected Resource metadata | false |
ENABLE_LOCAL_OAUTH | Legacy: enable stdio OAuth flow (deprecated) | true |
Migration notes
The developer-mcp-server and secops-mcp-server console scripts are
deprecated and re-export the unified gg-mcp-server. Update your MCP client
configuration to invoke gg-mcp-server directly; both old scripts will be
removed in a future release.
Want more?
Have a use case that isn't covered? Open an issue with your idea.
Development
See DEVELOPMENT.md for contributing, running tests, and
adding new tools.
Files in the repo
- .claude
- .github
- .vscode
- packages
- scripts
- src
- tests
- .coderabbit.yml
- .dockerignore
- .env.example
- .gitignore
- .pre-commit-config.yaml
- .python-version
- .release-please-manifest.json
- .windsurfrules
- AGENTS.md
- CHANGELOG.md
- DEVELOPMENT.md
- Dockerfile
- LICENSE
- Makefile
- mise.toml
- PUBLISHING.md
- pyproject.toml
- README.md
- release-please-config.json
- renovate.json
- server.json
- uv.lock
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.
20 MB lightweight cross-platform database client for 90+ databases, including MySQL, PostgreSQL, SQLite, Redis, MongoDB, DuckDB, SQL Server, and Dameng. Built-in AI, MCP Server, CLI, desktop and Docker. | 轻量级跨平台数据库管理工具,支持 MySQL、PostgreSQL、SQLite、Redis、MongoDB、达梦等 90+ 数据库,提供桌面端、Docker、CLI、内置 AI 助手和 MCP Server。