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 protocolMCP 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):
{
"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:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
}
}
}SSE (Server-Sent Events)
For HTTP servers that stream:
{
"mcpServers": {
"my-api": {
"url": "https://my-server.com/mcp/sse",
"headers": {
"Authorization": "Bearer ${TOKEN}"
}
}
}
}HTTP (REST)
For servers with REST endpoints:
{
"mcpServers": {
"rest-server": {
"url": "https://my-server.com/mcp",
"transport": "http"
}
}
}WebSocket
{
"mcpServers": {
"ws-server": {
"url": "ws://localhost:3001/mcp",
"transport": "ws"
}
}
}Environment variable expansion
Values in MCP configurations support env var expansion with ${VAR}:
{
"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:
{
"mcpAllowlist": {
"serverName": ["filesystem", "github"],
"serverCommand": ["node", "npx"]
},
"mcpDenylist": {
"serverUrl": ["http://insecure-server.com"]
}
}Matching criteria:
serverName— key name inmcpServersserverCommand— first element of thecommandarrayserverUrl— URL for SSE/HTTP/WebSocket transports
Enable and disable servers
/mcp enable server-name
/mcp disable server-nameDisabled servers remain in the configuration but are not loaded.
Diagnostics
/mcpDisplays the status of all MCP connections, loaded tools, and possible connection errors.
Popular server examples
Filesystem
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
}
}
}GitHub
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
}
}
}PostgreSQL
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": { "DATABASE_URL": "${DATABASE_URL}" }
}
}
}Brave Search
{
"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
verboo --mcp
# or, when compiling from source:
node dist/cli.mjs --mcpThe 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:
{
"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:
{
"mcpServers": {
"large-server": {
"command": "node",
"args": ["server.js"],
"defer_loading": true
}
}
}