WRG-11/wrg-mcp-server
GitHub: WRG-11/wrg-mcp-server
Stars: 1 | Forks: 0
# wrg-mcp-server
[](https://pypi.org/project/wrg-mcp-server/)
[](https://pypi.org/project/wrg-mcp-server/)
[](https://github.com/WRG-11/wrg-mcp-server/actions/workflows/ci.yml)
[](https://github.com/WRG-11/wrg-mcp-server/actions/workflows/codeql.yml)
[](LICENSE)
[](https://registry.modelcontextprotocol.io/v0/servers?search=wrg-mcp-server)
[](#)
An MCP (Model Context Protocol) bridge that exposes the [WinstonRedGuard](https://github.com/WRG-11) AI security platform to Claude Code, Claude Desktop, Cursor, Codex, and any MCP-compatible AI agent.
## Why this exists
Modern AI coding agents (Claude, Cursor, Codex) excel at code generation but cannot directly:
- Scan a repo for leaked secrets, credentials, or PII patterns
- Look up ransomware groups, victims, and infrastructure by name
- Generate Sigma detection rules from observed incident data
- Run OSINT username probes across 3000+ sites
- Query a curated threat-intel actor corpus with MITRE ATT&CK mappings
This MCP server fills that gap. Drop it into your MCP client config and your agent gains 60+ tools spanning code security, threat intelligence, OSINT, research, and signal analysis — all without leaving the agent's context.
## Use cases
- **Secure-by-default coding workflows** — agent runs `devguard_scan` before every commit, catches API keys + PII patterns before they ship
- **Threat-intel queries during incident response** — "What's the latest LockBit infrastructure?" → agent calls `ransomware_lookup` + `darkweb_brand_watch` directly
- **Detection engineering with AI assistance** — `ai_fingerprint_sigma_emit` converts observed AI-generated code patterns into Sigma YAML rules
- **OSINT investigations** — `maigret_search` username probe across 3000+ sites; results flow back into the agent's reasoning context
- **Research automation** — `research_motor` HTTP API gives the agent persistent, queryable research jobs across domains
## Quick start
pip install wrg-mcp-server # core: 40+ local tools
pip install "wrg-mcp-server[remote]" # adds httpx for site_* / pulseboard_* tools
Add to your Claude Code / Claude Desktop config:
{
"mcpServers": {
"wrg": {
"command": "wrg-mcp-server",
"args": ["--transport", "stdio"],
"env": {
"WRG_MCP_ALLOW_MUTATIONS": "0"
}
}
}
}
Restart your client. The agent now has access to `mcp__wrg__*` tools.
## How it compares
| Project | Surface | Tool count | Auth required | Best for |
|---|---|---|---|---|
| **wrg-mcp-server** | Security + threat-intel + OSINT + research | 60+ | Optional env per remote | Security/detection/threat-intel engineers + AI agents |
| [github-mcp-server](https://github.com/github/github-mcp-server) | GitHub API | ~30 | Required (PAT) | General GitHub workflow automation |
| [Filesystem MCP](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem) | Local fs | ~10 | None | Generic file operations |
| [Playwright MCP](https://github.com/microsoft/playwright-mcp) | Browser automation | ~20 | None | Web scraping + UI testing |
| [Fetch MCP](https://github.com/modelcontextprotocol/servers/tree/main/src/fetch) | HTTP fetch | ~5 | None | Simple URL → markdown extraction |
## When to reach for wrg-mcp-server
- You're a **security engineer**, **detection engineer**, or **threat-intel analyst** working with AI agents
- You want curated threat-intel + OSINT in your agent without manual tool-juggling
- You have (or can install) the WinstonRedGuard monorepo for the full feature set
## Where wrg-mcp-server loses today (honest delta)
- **Setup friction higher than generic MCP servers** — full feature set requires the WinstonRedGuard monorepo (private). Standalone install (no monorepo) gives ~40% of tools (OSINT + research + trading + polymarket all work without monorepo)
- **Windows-first** — primary dev environment is Windows 11 + WSL2; macOS/Linux supported but less battle-tested
- **Documentation density** — 60+ tools is a lot; in-depth per-tool docs live in source comments rather than separate pages
- **Newer than alternatives** — github-mcp-server, Filesystem, Playwright MCP all have larger communities and more battle-testing
## Transports
wrg-mcp-server --transport stdio # Claude Desktop / Claude Code (recommended)
wrg-mcp-server --transport streamable-http # HTTP for remote clients
wrg-mcp-server --transport sse # legacy HTTP (SSE)
Flags: `--host 0.0.0.0` · `--port 8080` · `--mcp-path /mcp`
## Install (full options)
pip install wrg-mcp-server # core: MCP + local tools only
pip install "wrg-mcp-server[remote]" # adds httpx for site_* / pulseboard_* tools
pip install "wrg-mcp-server[dev]" # pytest + pytest-asyncio
From source (standalone repo):
git clone https://github.com/WRG-11/wrg-mcp-server.git
cd wrg-mcp-server
pip install -e ".[dev]"
## Tool surface
60+ tools organised across 8 categories. Detailed tables below — expand a section to view.
/.wrg/rules` |
**Data janitor** (`data_janitor`) — `data_janitor_sweep` mutation-gated when `dry_run=False`
| Tool | What it does |
|---|---|
| `data_janitor_sweep` | Scan or clean build artifacts (non-dry requires `WRG_MCP_ALLOW_MUTATIONS=1`) |
| `data_janitor_orphans` | Preview orphan / build-artifact targets (read-only) |
**Notifier** (`wrg_notifier3`) — `notifier_send` is mutation-gated
| Tool | What it does |
|---|---|
| `notifier_send` | Dispatch a message to a configured channel (**mutation** — requires `WRG_MCP_ALLOW_MUTATIONS=1`) |
| `notifier_channels` | Introspect available channel adapters (read-only) |
### INFO_OPS extension
| Tool | What it does |
|---|---|
| `info_ops_detect` | Query INFO_OPS actor corpus; enrich each match with linked incidents + Sigma rules; reverse-lookup via `mitre_technique` filter |
Example:
info_ops_detect() # all INFO_OPS actors + Sigma + incidents
info_ops_detect(actor_id="russia_nexus_info_ops") # specific actor
info_ops_detect(mitre_technique="T1656") # reverse lookup
Remote HTTP services (opt-in via env; requires
| Tool | Upstream |
|---|---|
| `site_health`, `site_get`, `site_post` | Company site API (`WRG_SITE_BASE_URL`) |
| `pulseboard_health`, `pulseboard_list_repos`, `pulseboard_add_repo`, `pulseboard_delete_repo`, `pulseboard_get_pulse` | `pulseboard` dashboard (`WRG_PULSEBOARD_BASE_URL`) |
Remote tools return `{"ok": false, "error": "httpx not installed — remote tools unavailable"}` when `[remote]` extra is missing.
## Environment
### Repo discovery
| Variable | Default | Purpose |
|---|---|---|
| `WRG_REPO_ROOT` | auto-detect (walk up until `apps/` + `CLAUDE.md`) | Required when installed from wheel outside the monorepo |
### Mutation gate (default: off)
State-changing tools (`memory_set`, `pipeline_run`, `security_suite_run`, `data_janitor_sweep` non-dry, `notifier_send`) refuse to execute unless:
WRG_MCP_ALLOW_MUTATIONS=1
This prevents an MCP client from silently writing memory or launching pipelines on a read-only connection.
### Remote service config
Per service (`SITE` / `PULSEBOARD`), prefix with `WRG__`:
| Variable | Default | Purpose |
|---|---|---|
| `*_BASE_URL` | — | Enables the service (unset = service disabled) |
| `*_TOKEN` | — | Bearer token for `Authorization` header |
| `*_AUTH_HEADER` | `Authorization` | Override header name |
| `*_AUTH_SCHEME` | `Bearer` | Override token scheme |
| `*_SESSION_COOKIE` | — | Optional `Cookie` header |
| `*_EXTRA_HEADERS` | — | JSON object of extra headers |
| `*_TIMEOUT_SECONDS` | `WRG_HTTP_TIMEOUT_SECONDS` (20.0) | Per-request timeout |
| `*_VERIFY_TLS` | `WRG_HTTP_VERIFY_TLS` (true) | TLS verification |
### research_motor HTTP API
Start the research_motor API separately, then point the MCP server at it:
cd apps/research_motor
pip install -e ".[api]"
set RESEARCH_MOTOR_API_KEY=replace-me
research-motor serve --host 127.0.0.1 --port 8080
Configure the MCP server environment:
set WRG_RM_API_BASE_URL=http://127.0.0.1:8080
set WRG_RM_API_KEY=replace-me
## Architecture
FastMCP server
├── server.py — tool registration, remote HTTP dispatch
├── config.py — ServiceConfig / AppConfig from env (frozen dataclasses)
├── http_utils.py — URL builder, response parser
├── local_tools.py — subprocess wrappers for WRG CLIs (~20 tools)
└── cli.py — argparse entry point
Local tools use `subprocess.run` with `stdin=DEVNULL` (not asyncio subprocess) — avoids a Windows pipe-blocking deadlock under anyio. Tool dispatch is wrapped in `anyio.to_thread.run_sync` so the MCP event loop stays responsive.
## Tests
pytest -q
## Sister WRG-11 packages
Part of the WRG-11 PyPI portfolio:
- [`instinct-mcp`](https://pypi.org/project/instinct-mcp/) — Self-learning memory for AI coding agents
- [`wrg-devguard`](https://pypi.org/project/wrg-devguard/) — Developer-first AI safety: prompt-policy lint + secret scanning + log scanning with PII detection
- [`wrg-rule-lab`](https://pypi.org/project/wrg-rule-lab/) — Local-first deterministic rule evaluation engine (zero-dep, stdlib-only)
- [`ai-security-toolkit`](https://github.com/WRG-11/ai-security-toolkit) — Offensive + defensive AI/LLM security tools, labs, CTF writeups, research
Built by [WRG-11](https://github.com/WRG-11).
## Status
Production — covers every active WRG app, drives the `mcp__wrg__*` tools visible in connected Claude sessions.
## License
MIT. See [LICENSE](LICENSE).