Skip to content
Secure MCP Gateway

The control plane
between AI agents
and MCP servers.

Security policies. Audit logging. Daemon mode.
Project isolation. One binary. Zero tokens upfront.

$ brew install codestz/tap/mcpx
terminal
$mcpx list
serena serena (daemon)
postgres postgres-mcp
$mcpx serena find_symbol --name "Auth"
[{"name": "AuthService", "kind": "class", "file": "src/auth.go"}]
$mcpx postgres query --sql "DROP TABLE users"
error: policy "no-mutations" denied tool "query"
Reason: Mutation queries blocked
_
0
tokens upfront
<5ms
startup time
3
transports
servers, same cost
The Problem

MCP servers are expensive and unrestricted.

Every server dumps its schema into context. Every tool call has zero access control. mcpx fixes both.

Without mcpx
# 5 servers loaded at session start
"serena": { ... } # ~20K tokens
"postgres": { ... } # ~15K tokens
"jira": { ... } # ~12K tokens
"slack": { ... } # ~8K tokens
"github": { ... } # ~30K tokens
 
~85K tokens gone. No security. No audit.
With mcpx
# .mcpx/config.yml — one file
5 servers configured
Security policies per server
Audit log for every call
Scoped daemon isolation
Per-server security modes
 
0 tokens. Full security. Full audit.
Security

Every call. Every server. Enforced.

Policies evaluate tool names, arguments, and content before the call reaches the server.

.mcpx/config.yml
security:
  enabled: true
  global:
    audit:
      enabled: true
      log: .mcpx/audit.jsonl
    policies:
      - name: no-path-traversal
        match:
          args:
            "*path*":
              deny_pattern: "\\.\\.\\/|\\.\\.\\\\\\/"
        action: deny
        message: Path traversal blocked

servers:
  postgres:
    security:
      mode: read-only
result
$mcpx serena replace_symbol_body \
--relative_path "../../../etc/passwd"
error: policy "no-path-traversal" denied
Reason: Path traversal blocked
relative_path = "../../../etc/passwd"
$cat .mcpx/audit.jsonl | jq .action
"allowed"
"allowed"
"denied"

Three commands to start

1
Install
brew install codestz/tap/mcpx
2
Configure
mcpx init
3
Call
mcpx serena find_symbol --name "Auth"

Security Policies

Tool allow/deny, argument inspection, content regex. Global + per-server cascading rules.

Audit Logging

Every tool call recorded in JSONL. Timestamps, args, policy decisions. Secret redaction built in.

Scoped Daemons

Project-scoped daemon isolation. Each project gets its own daemon instance. No cross-session conflicts.

Serena Integration

Daemon mode for fast startup. Security modes and path-restricted editing. Zero-config integration.

Daemon Mode

Heavy servers stay warm via unix socket. Zero spawn cost after first invocation.

On-Demand Discovery

Tools discovered lazily with mcpx list and --help. Zero context overhead.

Three Transports

stdio for local, HTTP (streamable) and SSE for remote. Auth headers and bearer tokens built in.

Single Binary

Go. No runtime deps. Sub-millisecond startup. Homebrew, go install, or build from source.

The missing control plane for MCP.

Security, audit, daemon mode — from CLI to production.

Released under the MIT License.