Configuration and transports

Config shapes for Claude Desktop, Cursor, Claude Code, and the stdio versus HTTP+SSE transport model.

UMT generates the same mcpServers shape every host understands, then writes it to the right file. This page shows the shapes and the transport model.

Claude Desktop

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@universal-mcp-toolkit/server-github", "--transport", "stdio"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@universal-mcp-toolkit/server-filesystem", "--transport", "stdio"],
      "env": {
        "FILESYSTEM_ROOTS": "${FILESYSTEM_ROOTS}"
      }
    }
  }
}

Replace ${...} with real values before pasting. UMT does not write secrets into generated snippets.

Cursor

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": ["-y", "@universal-mcp-toolkit/server-slack", "--transport", "stdio"],
      "env": { "SLACK_BOT_TOKEN": "${SLACK_BOT_TOKEN}" }
    },
    "linear": {
      "command": "npx",
      "args": ["-y", "@universal-mcp-toolkit/server-linear", "--transport", "stdio"],
      "env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
    }
  }
}

Generate it instead of hand-editing:

umt config -s slack linear -t cursor --write

Claude Code

umt config -s github hackernews -t claude-code --write

Or let Claude Code write it:

claude mcp add github -- npx -y @universal-mcp-toolkit/server-github --transport stdio

Codex

umt config -t codex --write edits ~/.codex/config.toml:

[mcp_servers.github]
command = "npx"
args = ["-y", "@universal-mcp-toolkit/server-github", "--transport", "stdio"]

[mcp_servers.github.env]
GITHUB_TOKEN = "${GITHUB_TOKEN}"

Transport model

TransportUse it for
stdioLocal child-process integrations
Streamable HTTPCurrent remote MCP integrations
HTTP+SSELegacy compatibility only

Every server is built on the same core, so the transport flags and lifecycle behave consistently. umt run <server> --transport http starts the HTTP mode.

What --write does

  1. Reads the existing config file.
  2. Merges the new server entries without dropping existing ones.
  3. Writes a <file>.umt-bak backup first.
  4. Writes the merged file atomically.

If the merge goes wrong, restore the backup. If the harness still cannot see the server, restart it; most hosts read config only at startup.

Environment variables

ServerRequired
GitHubGITHUB_TOKEN
SlackSLACK_BOT_TOKEN
NotionNOTION_TOKEN
LinearLINEAR_API_KEY
JiraJIRA_BASE_URL, JIRA_EMAIL, JIRA_API_TOKEN
PostgreSQLPOSTGRESQL_URL
MongoDBMONGODB_URI
RedisREDIS_URL
SupabaseSUPABASE_URL, SUPABASE_KEY
VercelVERCEL_TOKEN
CloudflareCLOUDFLARE_API_TOKEN, CLOUDFLARE_ACCOUNT_ID
FileSystemFILESYSTEM_ROOTS
AirtableAIRTABLE_API_KEY, AIRTABLE_BASE_ID
TrelloTRELLO_API_KEY, TRELLO_TOKEN
DiscordDISCORD_BOT_TOKEN
OpenAIOPENAI_API_KEY

The full list is in Server catalog and the root .env.example.

Verify

umt doctor
umt test github
umt conformance

umt doctor checks build output, config state, and env vars. umt test performs a live MCP handshake. umt conformance checks registry config and local handshakes where build output exists.