|
4 | 4 |
|
5 | 5 | **The Zero-Trust Firewall and Protocol Bridge for the Model Context Protocol (MCP)** |
6 | 6 |
|
7 | | -[](https://goreportcard.com/report/github.com/AgentStack-AI/agentgate) |
| 7 | +[](https://goreportcard.com/report/github.com/AgentStaqAI/agentgate) |
8 | 8 | [](LICENSE) |
9 | | -[](https://github.com/AgentStack-AI/agentgate/stargazers) |
| 9 | +[](https://github.com/AgentStaqAI/agentgate/stargazers) |
10 | 10 |
|
11 | 11 | > A sub-millisecond, zero-dependency reverse proxy written in Go that airgaps your AI agents. It intercepts MCP commands, translates them to HTTP/SSE, and wraps them in an impenetrable semantic firewall. |
12 | 12 |
|
@@ -36,7 +36,7 @@ Relying on "system prompts" for security is a guaranteed way to get your databas |
36 | 36 | ``` |
37 | 37 |
|
38 | 38 | ``` |
39 | | -[ LLM / LangChain ] ──► (HTTP/SSE) ──► [ 🛡️ AgentGate ] ──► (stdio) ──► [ MCP Tools / DB ] |
| 39 | +[ LLM / LangChain ] ──► (HTTP/SSE) ──► [ AgentGate ] ──► (stdio) ──► [ MCP Tools / DB ] |
40 | 40 | │ |
41 | 41 | ┌────────┴────────┐ |
42 | 42 | │ Policy Engine │ |
@@ -72,19 +72,66 @@ AgentGate is a single, zero-dependency Go binary. |
72 | 72 |
|
73 | 73 | **Option 1 — Homebrew (macOS/Linux)** |
74 | 74 | ```bash |
75 | | -brew tap AgentStack-AI/agentgate |
| 75 | +brew tap AgentStaqAI/agentgate |
76 | 76 | brew install agentgate |
77 | 77 | ``` |
78 | 78 |
|
79 | 79 | **Option 2 — Build from Source** |
80 | 80 | ```bash |
81 | | -git clone https://github.com/AgentStack-AI/agentgate.git |
| 81 | +git clone https://github.com/AgentStaqAI/agentgate.git |
82 | 82 | cd agentgate |
83 | 83 | go build -o agentgate . |
84 | 84 | ``` |
85 | 85 |
|
86 | 86 | --- |
87 | 87 |
|
| 88 | +## 5-Minute Example |
| 89 | + |
| 90 | +Define your MCP servers in `agentgate.yaml`: |
| 91 | + |
| 92 | +```yaml |
| 93 | +version: "1.0" |
| 94 | +network: |
| 95 | + port: 8083 |
| 96 | +auth: |
| 97 | + require_bearer_token: "my-secret-token" |
| 98 | +audit_log_path: "audit.log" |
| 99 | + |
| 100 | +mcp_servers: |
| 101 | + filesystem: |
| 102 | + upstream: "exec:npx -y @modelcontextprotocol/server-filesystem /home/user/projects" |
| 103 | + policies: |
| 104 | + access_mode: "allowlist" |
| 105 | + allowed_tools: ["read_file", "list_directory"] |
| 106 | + rate_limit: |
| 107 | + max_requests: 60 |
| 108 | + window_seconds: 60 |
| 109 | + |
| 110 | + my_postgres: |
| 111 | + upstream: "http://localhost:9090" # An already-running MCP HTTP server |
| 112 | + policies: |
| 113 | + allowed_tools: ["query"] |
| 114 | + human_approval: |
| 115 | + require_for_tools: ["query"] |
| 116 | + webhook: |
| 117 | + type: "slack" |
| 118 | + url: "https://hooks.slack.com/services/..." |
| 119 | +``` |
| 120 | +
|
| 121 | +Start AgentGate, then point your LLM client at it using the protocol your MCP server speaks: |
| 122 | +
|
| 123 | +| Protocol | Your MCP server speaks | URL to give your LLM client | |
| 124 | +|---|---|---| |
| 125 | +| **Streamable HTTP** (MCP spec 2025) | Native MCP / Go & TS SDKs | `http://localhost:8083/filesystem/mcp` | |
| 126 | +| **Server-Sent Events** (SSE legacy) | Python SDK, FastMCP | `http://localhost:8083/filesystem/sse` | |
| 127 | +| **Synchronous JSON-RPC** (plain HTTP) | Custom HTTP servers, curl | `http://localhost:8083/filesystem/` | |
| 128 | + |
| 129 | +All three paths go through the **same firewall** — auth, RBAC, regex sandbox, rate limiting, and HITL checks apply equally regardless of the transport protocol. |
| 130 | + |
| 131 | +> See the **[API & Endpoints guide](api_docs.md)** for a detailed breakdown of how each protocol works. |
| 132 | + |
| 133 | +--- |
| 134 | + |
88 | 135 | ## ⚙️ Usage |
89 | 136 |
|
90 | 137 | **1. Configure your Firewall** |
|
0 commit comments