The main way to manage your director instance is via the CLI or Studio UI. These tools are functionally equivalent, and ultimately, they both use the same configuration files:
  • ~/.director/config.json - This is the main configuration file that contains the list of proxies, their targets and their configuration.
  • ~/.director/config.env - This file is not created by default, but can be used to override the service level configuration (which can also be ser via environment variables directly).
Note: If you’d like to manually edit the configuration files, you’ll need to make sure you restart the service for the changes to take effect.

config.json

Your configuration file is a JSON file that defines proxy connections (it’s location is ~/.director/config.json). Here’s how to structure it:
{
  // The list of available proxy servers
  "proxies": [
    {
      "id": "unique-proxy-name",
      "name": "Display Name for Proxy",
      "description": "What this proxy does (optional)",
      // The list of servers that this proxy aggregates
      "servers": [
        {
          "name": "stdio-server",
          "transport": {
            "type": "stdio",
            "command": "/path/to/program",
            "args": ["--option", "value"],
            "env": {
              "API_KEY": "your-key-here"
            }
          },
          // Optional: prefix all tool names from this server
          "add_prefix": false
        },
        {
          "name": "streamable-or-sse-server",
          "transport": {
            "type": "http",
            // The url of the server, this can be either Streamable or SSE transports
            "url": "https://api.example.com/mcp"
          },
          // When true, all tools will be prefixed with "streamable-or-sse-server__"
          "add_prefix": true
        }
      ]
    }
  ]
}

Server Configuration Options

Each server in the servers array supports the following fields:
  • name (required): A unique identifier for the server within this proxy
  • transport (required): The transport configuration (either stdio or http)
  • add_prefix (optional, default: false): When enabled, all tool names from this server will be prefixed with the server name followed by double underscores (__)

Tool Name Prefixing

The add_prefix option helps prevent naming conflicts when multiple MCP servers expose tools with the same name. When add_prefix: true:
  • A tool named search from a server named github becomes github__search
  • A tool named execute from a server named code-runner becomes code-runner__execute
This is particularly useful when:
  • You’re aggregating multiple MCP servers that might have overlapping tool names
  • You want to clearly identify which server provides which tool
  • You need to maintain compatibility with clients that expect specific tool naming patterns
Example scenario:
{
  "servers": [
    {
      "name": "github",
      "transport": { "type": "http", "url": "https://api.github.com/mcp" },
      "add_prefix": true  // Tools: github__search, github__create_issue, etc.
    },
    {
      "name": "gitlab", 
      "transport": { "type": "http", "url": "https://api.gitlab.com/mcp" },
      "add_prefix": true  // Tools: gitlab__search, gitlab__create_issue, etc.
    }
  ]
}
Without prefixing, only one server’s search tool would be accessible. With prefixing, both are available as distinct tools.

config.env

The config.env file is not created by default, but can be used to override the service level configuration (which can also be ser via environment variables directly).
# The port that the gateway will listen on (if running locally)
GATEWAY_PORT=3673 
# The url that the cli should connect to (change if you're using a remote instance)
GATEWAY_URL=http://localhost:3673 
# The GUI url, used for the `quickstart` and `studio` commands
STUDIO_URL=https://studio.director.run 
# The registry url, you can change this if you're running your own registry somewhere else
REGISTRY_API_URL=https://registry.director.run 
# When running your own registry, you can set an api key to use to write to the registry
REGISTRY_API_KEY=secret-api-write-key 
# The path to the main config file
CONFIG_FILE_PATH=/path/to/config.json 
# Enable debug cli commands (for example the registry write commands)
ENABLE_DEBUG_COMMANDS=false 
# The log level to use for the service
LOG_LEVEL=debug