Connect via MCP
proto connects to external tools and data sources through the Model Context Protocol (MCP). MCP servers give proto access to databases, APIs, file systems, and any custom tooling you expose.
Add your first server
proto mcp add --transport http my-server http://localhost:3000/mcpThen open a session and ask proto to use tools from that server. MCP tools appear automatically in the model's tool list.
Configuration scopes
- Project (default):
.proto/settings.json - User:
~/.proto/settings.json(add--scope usertoproto mcp add)
Transport types
| Transport | Use when | Key field |
|---|---|---|
http | Remote services, cloud MCP servers | httpUrl |
sse | Legacy servers (Server-Sent Events) | url |
stdio | Local process (scripts, CLIs, Docker) | command + args |
Prefer HTTP over SSE when a server supports both.
Configure via settings.json
Stdio (local process)
{
"mcpServers": {
"pythonTools": {
"command": "python",
"args": ["-m", "my_mcp_server"],
"cwd": "./mcp-servers/python",
"env": { "DATABASE_URL": "$DB_CONNECTION_STRING" },
"timeout": 15000
}
}
}HTTP (remote)
{
"mcpServers": {
"httpServer": {
"httpUrl": "http://localhost:3000/mcp",
"headers": { "Authorization": "Bearer your-token" },
"timeout": 5000
}
}
}SSE (legacy)
{
"mcpServers": {
"sseServer": {
"url": "http://localhost:8080/sse",
"timeout": 30000
}
}
}Server configuration options
| Property | Type | Description |
|---|---|---|
command | string | Executable path (stdio) |
url | string | SSE endpoint URL |
httpUrl | string | HTTP streaming endpoint URL |
args | string[] | Arguments for stdio command |
env | object | Environment variables ($VAR syntax supported) |
cwd | string | Working directory for stdio |
timeout | number | Request timeout in ms (default: 600,000) |
trust | boolean | Skip all confirmation prompts for this server |
includeTools | string[] | Allowlist of tool names from this server |
excludeTools | string[] | Denylist of tool names (excludeTools wins over includeTools) |
headers | object | HTTP headers for url/httpUrl transports |
Safety controls
Trust a server — skip confirmations (use sparingly):
{ "trust": true }Filter tools per server:
{
"mcpServers": {
"myServer": {
"command": "my-server",
"includeTools": ["safe_tool", "read_data"],
"excludeTools": ["delete_all"]
}
}
}Global allow/deny lists:
{
"mcp": {
"allowed": ["my-trusted-server"],
"excluded": ["experimental-server"]
}
}proto mcp CLI
proto mcp # open management dialog
proto mcp add <name> <command-or-url> [args...] # add a server
proto mcp add --transport http <name> <url> # add HTTP server
proto mcp add --scope user <name> ... # add to user scope
proto mcp remove <name> # remove a server
proto mcp list # list configured serversCommon add flags:
| Flag | Description |
|---|---|
-s, --scope | project (default) or user |
-t, --transport | stdio, sse, http |
-e, --env | Environment variable (KEY=value) |
-H, --header | HTTP header |
--timeout | Timeout in ms |
--trust | Trust the server |
--include-tools | Comma-separated allowlist |
--exclude-tools | Comma-separated denylist |
Server instructions
MCP servers can embed usage guidance in their initialize response via an instructions field. proto automatically appends these to the system prompt:
# MCP Server Instructions
## MCP Server: my-server
<instructions from the server>If you are building an MCP server, implement the instructions field to guide the model without requiring users to write AGENTS.md entries.
Troubleshooting
| Symptom | Fix |
|---|---|
| Server shows "Disconnected" | Verify the URL/command is correct; increase timeout |
| Stdio server fails to start | Use absolute path for command; check cwd and env |
| Env vars don't resolve in JSON | Ensure the variable exists in the shell that runs proto |