Model Context Protocol (MCP) extends Ona Agent with external tools like GitHub, Linear, and browser automation. MCP servers run as separate processes in your environment and communicate over stdio or HTTP. There are two ways to add MCP servers to Ona:Documentation Index
Fetch the complete documentation index at: https://ona.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
- Custom organization integrations: Administrators add HTTP MCP servers from the dashboard so everyone in the organization can use them. Requires the MCP server to support Dynamic Client Registration for OAuth.
- Repo-local configuration: Developers commit
.ona/mcp-config.jsonto a repository to configure servers per project. Supports both stdio and HTTP transports, and lets you inject secrets at runtime.
Custom organization MCP integrations
Administrators can add custom MCP servers to an organization from the dashboard. Custom integrations use HTTP transport and Dynamic Client Registration (DCR) for OAuth. The MCP server must expose a DCR endpoint so Ona can register itself without a pre-shared client ID or secret. Use custom integrations when you want to make an MCP server available to everyone in the organization without each developer configuring it locally.Add a custom integration
- Go to Settings > Integrations
- Click Add MCP Integration

- Enter:
- Name: Display name shown to members (for example,
Hex) - MCP URL: The MCP server endpoint (for example,
https://hex.tech/mcp/sse) - Description (optional): Short description shown on the integration card
- Name: Display name shown to members (for example,
- Click Create

Authenticate
Once enabled, each user connects their own account from User Settings > Integrations. Ona performs DCR against the MCP server on first use, then kicks off the OAuth flow so the agent acts with the user’s permissions.Repo-local MCP configuration
Create.ona/mcp-config.json in your repository:
Transport types
Each server uses either stdio or HTTP transport. Ona detects the transport from your config:- Set
commandfor stdio transport (runs a local process) - Set
urlfor HTTP transport (connects to a remote endpoint)
command and url.
Configuration options
| Field | Transport | Description |
|---|---|---|
name | both | Display name for the server (defaults to the map key) |
command | stdio | Executable to run the server |
args | stdio | Command arguments |
url | HTTP | Server endpoint (must start with http:// or https://) |
headers | HTTP | HTTP headers sent with requests (supports ${exec:...} and ${file:...}) |
env | stdio | Environment variables (supports ${exec:...} and ${file:...}) |
timeout | both | Per-server timeout in seconds (default: 30) |
toolDenyList | both | Tools to block (supports wildcards like delete_*) |
workingDir | stdio | Working directory for the server process |
disabled | both | Set true to disable without removing config |
globalTimeout at the top level of the config to apply a default timeout to all servers.
Checking MCP server status
Click the MCP Integrations button in the session input to see server status. Each server shows whether it is connected, disabled, or experiencing errors.
Examples
Stdio transport (local process)
@executeautomation/playwright-mcp-server runs as a local process vianpx:
HTTP transport (remote server)
Connect to an MCP server running over HTTP. Useurl instead of command:
headers supports ${exec:...} and ${file:...} expansion, like env. Inject tokens at runtime instead of committing secrets.
Credentials
Use Ona Secrets to inject credentials intoenv (stdio) or headers (HTTP):
headers:
- Environment variables:
${exec:printenv VAR_NAME} - Files:
${file:/path/to/secret} - External stores:
${exec:aws secretsmanager get-secret-value ...}
DevContainer requirements
MCP servers run inside your environment. The base image must include the tools they need (npx for Node-based servers, docker for container-based servers). If a server fails to start, verify the required runtime is in your Dev Container image.
Applying configuration changes
Ona reads MCP configuration once at the start of each agent execution. Changes are not picked up mid-conversation, regardless of whether they are in.ona/mcp-config.json, organization integrations, or the org-level MCP toggle.
Local config (.ona/mcp-config.json)
After creating or modifying the file:
- Save the file in your workspace
- Start a new agent execution: open a new Ona conversation, or wait for the current execution to finish and send a new message
Organization integrations (dashboard)
Changes to MCP integrations in Settings > Integrations take effect on the next agent execution. No environment changes are needed.Organization MCP toggle
Enabling or disabling MCP in Settings > Agents > Policies takes effect on the next agent execution.Organization controls

.ona/mcp-config.jsonfiles are ignored- Agent operates with built-in tools only
- External MCP connections are blocked
Troubleshooting
MCP tools not appearing
MCP tools not appearing
The agent may not list MCP tools when asked, but can still invoke them. Type
/support-bundle in your Ona session to verify servers are connecting.Configuration errors
Configuration errors
If your MCP configuration has syntax errors or invalid server definitions, the agent logs the error and skips the misconfigured server. Check the MCP Integrations panel in the conversation input for error details.