Getting Started
Prerequisites
Section titled “Prerequisites”- Linux server
- Docker + Docker Compose
- An OpenAI Secure MCP Tunnel
- A tunnel Runtime API Key with the permissions required by the official tunnel client
Base deployment
Section titled “Base deployment”git clone https://github.com/NTLx/ServerFS_MCP.gitcd ServerFS_MCPcp .env.example .envchmod 600 .envConfigure at least one workdir and the tunnel credentials in .env, then:
docker compose pulldocker compose up -ddocker compose psdocker compose logs -f openai-tunnelThe base deployment exposes the 11 filesystem tools and remains read-only unless a workdir explicitly sets WORKDIR_XX_READ_ONLY=false.
Agent deployment
Section titled “Agent deployment”Agent support is deliberately an explicit overlay:
docker compose -f compose.yml -f compose.agent.yml up -dBefore enabling it, install and verify the host-side Agent Bridge as described in the repository’s Agent Bridge deployment guide.
Optional Jev advisors
Section titled “Optional Jev advisors”If you want advisory task preflight, runtime routing, and provider-approval context, add a TypeSafe API key to the existing untracked .env before installing/updating the Bridge:
SERVERFS_JEV_API_KEY=<your key>Leave it empty to keep the Agent Bridge completely Jev-free. No extra MCP container configuration or ChatGPT plugin refresh is required. See Jev Advisors for details.
ChatGPT file-parameter ingress
Section titled “ChatGPT file-parameter ingress”v0.5.0 can accept a ChatGPT/OpenAI file parameter as the source for upload_binary_file without giving the main MCP container Internet egress. Binary transfer and file ingress are separate opt-ins. For the common ChatGPT path, set:
SERVERFS_BINARY_TRANSFER_ENABLED=trueSERVERFS_FILE_INGRESS_ENABLED=trueSERVERFS_FILE_INGRESS_ALLOW_OPENAI_BLOB_HOSTS=trueThen start the isolated sidecar with the file-ingress profile:
docker compose --profile file-ingress pulldocker compose --profile file-ingress up -dIf Agent Bridge is also enabled, keep both the Agent overlay and the file-ingress profile in the same invocation:
docker compose --profile file-ingress -f compose.yml -f compose.agent.yml pulldocker compose --profile file-ingress -f compose.yml -f compose.agent.yml up -dThe sidecar has no workdir mounts, tunnel/OpenAI credentials, or published port. Generic hostname wildcards are not supported; see Binary Transfer and Security Model for the v0.5.0 host policy and network boundary.
v0.7.1 release images
Section titled “v0.7.1 release images”After v0.7.1 is published, these stable GHCR tags are available:
ghcr.io/ntlx/serverfs_mcp:latestghcr.io/ntlx/serverfs_mcp:0.7ghcr.io/ntlx/serverfs_mcp:0.7.1For production deployments, pin 0.7.1 after release rather than following latest or edge.