Verboo

MCP — Model Context Protocol

MCP (Model Context Protocol) is an open protocol that allows external servers to expose tools and resources to AI agents. Verboo Code works both as an MCP client (connecting to external servers) and as an MCP server (exposing its tools to other clients).

How it works

Verboo Code (client)
  │
  ├── Connects to configured MCP servers
  │     ├── Loads tools exposed by the server
  │     └── Injects tools into the agent's context
  │
  └── When invoked as server:
        └── Exposes built-in tools via MCP protocol

MCP tools appear alongside native tools (Bash, FileRead, etc.) and take priority in case of duplicate names.

Configure MCP servers

Add MCP servers in settings.json (project) or ~/.verboo/settings.json (global):

json
{
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["/path/to/server.js"],
      "env": {
        "API_KEY": "${MY_API_KEY}"
      }
    }
  }
}

Or via the /mcp command interactively.

Supported transport types

stdio (default)

The server runs as a subprocess, communicating via stdin/stdout:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    }
  }
}

SSE (Server-Sent Events)

For HTTP servers that stream:

json
{
  "mcpServers": {
    "my-api": {
      "url": "https://my-server.com/mcp/sse",
      "headers": {
        "Authorization": "Bearer ${TOKEN}"
      }
    }
  }
}

HTTP (REST)

For servers with REST endpoints:

json
{
  "mcpServers": {
    "rest-server": {
      "url": "https://my-server.com/mcp",
      "transport": "http"
    }
  }
}

WebSocket

json
{
  "mcpServers": {
    "ws-server": {
      "url": "ws://localhost:3001/mcp",
      "transport": "ws"
    }
  }
}

Environment variable expansion

Values in MCP configurations support env var expansion with ${VAR}:

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "${GITHUB_TOKEN}"
      }
    }
  }
}

Allowlist and denylist policy

Control which MCP servers are allowed or blocked:

json
{
  "mcpAllowlist": {
    "serverName": ["filesystem", "github"],
    "serverCommand": ["node", "npx"]
  },
  "mcpDenylist": {
    "serverUrl": ["http://insecure-server.com"]
  }
}

Matching criteria:

  • serverName — key name in mcpServers
  • serverCommand — first element of the command array
  • serverUrl — URL for SSE/HTTP/WebSocket transports

Enable and disable servers

/mcp enable server-name
/mcp disable server-name

Disabled servers remain in the configuration but are not loaded.

Diagnostics

/mcp

Displays the status of all MCP connections, loaded tools, and possible connection errors.

Filesystem

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    }
  }
}

GitHub

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
    }
  }
}

PostgreSQL

json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": { "DATABASE_URL": "${DATABASE_URL}" }
    }
  }
}
json
{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": { "BRAVE_API_KEY": "${BRAVE_API_KEY}" }
    }
  }
}

Verboo Code as an MCP server

Verboo Code can be used as an MCP server, exposing its built-in tools (Bash, File, Web, etc.) to other MCP clients.

Start as MCP server

bash
verboo --mcp
# or, when compiling from source:
node dist/cli.mjs --mcp

The server starts on stdio transport and exposes all loaded tools via ListTools and CallTool.

Connect another client

Add Verboo Code as a server in any compatible MCP client:

json
{
  "mcpServers": {
    "verboo-code": {
      "command": "verboo",
      "args": ["--mcp"]
    }
  }
}

Tool deduplication

When an MCP tool has the same name as a built-in tool, the MCP version takes priority. This allows MCP servers to override default CLI behaviors.

Deferred loading

MCP tools with many schemas can be loaded on demand to avoid impacting the context window:

json
{
  "mcpServers": {
    "large-server": {
      "command": "node",
      "args": ["server.js"],
      "defer_loading": true
    }
  }
}