{
  "markdown": "# agentguard-mcp\n\n**MCP server for [`@mukundakatta/agentguard`](https://www.npmjs.com/package/@mukundakatta/agentguard).** Lets Claude Desktop, Cursor, Cline, Windsurf, Zed, or any other MCP client check whether a URL is allowed under a network-egress policy before any fetch.\n\n```bash\nnpx -y @mukundakatta/agentguard-mcp\n```\n\nThree tools:\n\n- **`check_url`** — single URL check: returns `{ allowed, reason }` without making any actual request.\n- **`check_urls_batch`** — batch check with per-URL decisions plus a summary.\n- **`validate_policy`** — sanity-check a policy spec for empty allowlists, overly broad `*` wildcards, and malformed host patterns.\n\n## Add to your client\n\n### Claude Desktop\n\nEdit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"agentguard\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mukundakatta/agentguard-mcp\"]\n    }\n  }\n}\n```\n\nSame shape for Cursor (`~/.cursor/mcp.json`), Cline, Windsurf, Zed.\n\n## Tool examples\n\n**`check_url`:**\n\n```json\n{\n  \"url\": \"https://api.openai.com/v1/chat\",\n  \"policy\": { \"allow\": [\"api.openai.com\", \"*.anthropic.com\"] }\n}\n```\n\nReturns:\n\n```json\n{ \"allowed\": true, \"reason\": \"matched_allowlist\", \"detail\": null }\n```\n\n**`check_urls_batch`:**\n\n```json\n{\n  \"urls\": [\n    \"https://api.openai.com/v1/chat\",\n    \"https://evil.example.com/leak\"\n  ],\n  \"policy\": { \"allow\": [\"api.openai.com\"] }\n}\n```\n\nReturns:\n\n```json\n{\n  \"results\": [\n    { \"url\": \"https://api.openai.com/v1/chat\", \"allowed\": true, ... },\n    { \"url\": \"https://evil.example.com/leak\", \"allowed\": false, \"reason\": \"not_in_allowlist\", ... }\n  ],\n  \"summary\": { \"total\": 2, \"allowed_count\": 1, \"denied_count\": 1 }\n}\n```\n\n**`validate_policy`:**\n\n```json\n{ \"policy\": { \"allow\": [\"*\", \"https://api.example.com\", \"api.example.com/v1\"] } }\n```\n\nReturns issues for the `*` wildcard, the scheme prefix, and the path suffix — common mistakes when first writing a policy.\n\n## Why a separate MCP server\n\n`@mukundakatta/agentguard` is a zero-dependency JavaScript library. This MCP server makes its decision engine accessible from any MCP-aware AI assistant: ask Claude \"does my agent's tool list pass this firewall?\" or \"which of these 50 URLs would my policy block?\" and the assistant calls these tools directly.\n\nNote: this MCP server only **checks** URLs — it does not actually wrap fetch or block real requests. For runtime enforcement, use `@mukundakatta/agentguard` directly inside your Node process.\n\n## Sibling MCP servers\n\nPart of the agent-stack series:\n\n- [`@mukundakatta/agentfit-mcp`](https://www.npmjs.com/package/@mukundakatta/agentfit-mcp) — *Fit it.*\n- [`@mukundakatta/agentguard-mcp`](https://www.npmjs.com/package/@mukundakatta/agentguard-mcp) — *Sandbox it.* (this)\n- [`@mukundakatta/agentsnap-mcp`](https://www.npmjs.com/package/@mukundakatta/agentsnap-mcp) — *Test it.*\n- [`@mukundakatta/agentvet-mcp`](https://www.npmjs.com/package/@mukundakatta/agentvet-mcp) — *Vet it.*\n- [`@mukundakatta/agentcast-mcp`](https://www.npmjs.com/package/@mukundakatta/agentcast-mcp) — *Validate it.*\n\n## License\n\nMIT\n",
  "bytes": 3151,
  "sha": "fc30adfdfaa218116d130d62c8de785b674063f4e55116eaecbc7ff9934e5afb",
  "repo_slug": "mukundakatta/agentguard-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_mukundakatta_agentguard_49ef9183/readme"
}