Overview
Model Context Protocol (MCP) is a mechanism that allows OpenHands to communicate with external tool servers. These servers can provide additional functionality to the agent, such as specialized data processing, external API access, or custom tools. MCP is based on the open standard defined at modelcontextprotocol.io.Supported MCPs
OpenHands supports the following MCP transport protocols:How MCP Works
When OpenHands starts, it:- Reads the MCP configuration.
- Connects to any configured SSE and SHTTP servers.
- Starts any configured stdio servers.
- Registers the tools provided by these servers with the agent.
- OpenHands routes the call to the appropriate MCP server.
- The server processes the request and returns a response.
- OpenHands converts the response to an observation and presents it to the agent.
Configuration
MCP configuration can be defined in:- The OpenHands UI in the
Settings > MCP
page. - The
config.toml
file under the[mcp]
section if not using the UI.
Configuration Options
SSE Servers
SSE servers are configured using either a string URL or an object with the following properties:-
url
(required)- Type:
str
- Description: The URL of the SSE server.
- Type:
-
api_key
(optional)- Type:
str
- Description: API key for authentication.
- Type:
SHTTP Servers
SHTTP (Streamable HTTP) servers are configured using either a string URL or an object with the following properties:-
url
(required)- Type:
str
- Description: The URL of the SHTTP server.
- Type:
-
api_key
(optional)- Type:
str
- Description: API key for authentication.
- Type:
-
timeout
(optional)- Type:
int
- Default:
60
- Range:
1-3600
seconds (1 hour maximum) - Description: Timeout in seconds for tool execution. This prevents tool calls from hanging indefinitely.
- Use Cases:
- Short timeout (1-30s): For lightweight operations like status checks or simple queries.
- Medium timeout (30-300s): For standard processing tasks like data analysis or API calls.
- Long timeout (300-3600s): For heavy operations like file processing, complex calculations, or batch operations.
This timeout only applies to individual tool calls, not server connection establishment. - Type:
Stdio Servers
While stdio servers are supported, we recommend using MCP proxies for
better reliability and performance.
-
name
(required)- Type:
str
- Description: A unique name for the server.
- Type:
-
command
(required)- Type:
str
- Description: The command to run the server.
- Type:
-
args
(optional)- Type:
list of str
- Default:
[]
- Description: Command-line arguments to pass to the server.
- Type:
-
env
(optional)- Type:
dict of str to str
- Default:
{}
- Description: Environment variables to set for the server process.
- Type:
When to Use Direct Stdio
Direct stdio connections may still be appropriate in these scenarios:- Development and testing: Quick prototyping of MCP servers.
- Simple, single-use tools: Tools that don’t require high reliability or concurrent access.
- Local-only environments: When you don’t want to manage additional proxy processes.
Configuration Examples
Recommended: Using Proxy Servers (SSE/HTTP)
For stdio-based MCP servers, we recommend using MCP proxy tools likesupergateway
instead of direct stdio connections.
SuperGateway is a popular MCP proxy that converts stdio MCP servers to
HTTP/SSE endpoints.
Start the proxy servers separately:
Alternative: Direct Stdio Servers (Not Recommended for Production)
Other Proxy Tools
Other options include:- Custom FastAPI/Express servers: Build your own HTTP wrapper around stdio MCP servers.
- Docker-based proxies: Containerized solutions for better isolation.
- Cloud-hosted MCP services: Third-party services that provide MCP endpoints.