You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/mcps.md
+36-1Lines changed: 36 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -194,6 +194,41 @@ tools:
194
194
X-Custom-Key: "${secrets.CUSTOM_KEY}"
195
195
```
196
196
197
+
## Network Egress Permissions
198
+
199
+
Restrict outbound network access for containerized MCP servers using a per‑tool domain allowlist. Define allowed domains under `mcp.permissions.network.allowed`.
200
+
201
+
```yaml
202
+
tools:
203
+
fetch:
204
+
mcp:
205
+
container: mcp/fetch
206
+
permissions:
207
+
network:
208
+
allowed:
209
+
- "example.com"
210
+
allowed: ["fetch"]
211
+
```
212
+
213
+
Enforcement in compiled workflows:
214
+
215
+
- A [Squid proxy](https://www.squid-cache.org/) is generated and pinned to a dedicated Docker network for each proxy‑enabled MCP server.
216
+
- The MCP container is configured with `HTTP_PROXY`/`HTTPS_PROXY` to point at Squid; iptables rules only allow egress to the proxy.
217
+
- The proxy is seeded with an `allowed_domains.txt` built from your `allowed` list; requests to other domains are blocked.
218
+
219
+
Notes:
220
+
221
+
- **Only applies to stdio MCP servers with `container`** - Non‑container stdio and `type: http` servers will cause compilation errors
222
+
- Use bare domains without scheme; list each domain you intend to permit.
223
+
224
+
### Validation Rules
225
+
226
+
The compiler enforces these network permission rules:
227
+
228
+
- ❌ **HTTP servers**: `network egress permissions do not apply to remote 'type: http' servers`
229
+
- ❌ **Non-container stdio**: `network egress permissions only apply to stdio MCP servers that specify a 'container'`
230
+
- ✅ **Container stdio**: Network permissions work correctly
231
+
197
232
## Debugging and Troubleshooting
198
233
199
234
### MCP Server Inspection
@@ -255,4 +290,4 @@ Error: Tool 'my_tool' not found
Copy file name to clipboardExpand all lines: docs/security-notes.md
+27-1Lines changed: 27 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -174,7 +174,33 @@ tools:
174
174
175
175
#### Egress Filtering
176
176
177
-
A critical guardrail is strict control over outbound network connections. Consider using network proxies to enforce allowlists for outbound hosts.
177
+
A critical guardrail is strict control over outbound network connections. Agentic Workflows now supports declarative network allowlists for containerized MCP servers.
178
+
179
+
Example (domain allowlist):
180
+
181
+
```yaml
182
+
tools:
183
+
fetch:
184
+
mcp:
185
+
type: stdio
186
+
container: mcp/fetch
187
+
permissions:
188
+
network:
189
+
allowed:
190
+
- "example.com"
191
+
allowed: ["fetch"]
192
+
```
193
+
194
+
Enforcement details:
195
+
196
+
- Compiler generates a per‑tool Squid proxy and Docker network; MCP egress is forced through the proxy via iptables.
197
+
- Only listed domains are reachable; all others are denied at the network layer.
198
+
- Applies to `mcp.container` stdio servers. Non‑container stdio and `type: http` servers are not supported and will cause compilation errors.
199
+
200
+
Operational guidance:
201
+
202
+
- Use bare domains (no scheme). Explicitly list each domain you intend to permit.
203
+
- Prefer minimal allowlists; review the compiled `.lock.yml` to verify proxy setup and rules.
returnfmt.Errorf("tool '%s' has network permissions configured, but network egress permissions do not apply to remote 'type: http' servers", toolName)
502
+
case"stdio":
503
+
// Network permissions only apply to stdio servers with container
504
+
_, hasContainer:=mcpConfig["container"]
505
+
if!hasContainer {
506
+
returnfmt.Errorf("tool '%s' has network permissions configured, but network egress permissions only apply to stdio MCP servers that specify a 'container'", toolName)
0 commit comments