Skip to main content

Configure MCP servers

Configure Model Context Protocol (MCP) servers to extend Otto's capabilities with external integrations and services.

Otto is compatible with most MCP servers, including Slack, GitHub, Grafana, and PagerDuty.

note

Otto supports MCP servers that run as processes on the runtime, including:

  • npx for Node.js-based MCP servers (recommended)
  • uvx for Python-based MCP servers
  • Direct executable commands

Otto does not support MCP servers that require Docker containers.

Organization​

The mcp.yaml configuration must be located within a dedicated otto directory in your Ascend Project:

folder

Basic configuration​

Configure MCP servers in your mcp.yaml file:

otto/mcp.yaml
mcpServers:
server_name:
command: npx
args:
- --cache
- /tmp/npm-cache
- -y
- "@modelcontextprotocol/server-<your-tool>"
env:
API_TOKEN: ${vaults.environment.API_TOKEN}
CONFIG_VALUE: <YOUR_CONFIG_VALUE>

Multiple MCP servers can be configured in the same mcp.yaml file by adding them as separate server entries under the mcpServers section.

Command execution:

  • command: npx - Runs Node.js-based MCP servers without requiring global installation
  • command: uvx - Runs Python-based MCP servers with automatic package management
  • Supports other commands like python, node, or direct executable paths

NPX configuration:

  • --cache /tmp/npm-cache - Uses a temporary directory for npm cache to improve performance
  • -y - Automatically accepts installation prompts for unattended execution
  • @modelcontextprotocol/server-<tool-name> - Replace <tool-name> with the specific service (e.g., slack)

Environment variables:

  • Use ${vaults.environment.VARIABLE_NAME} for secure credential management
  • Reference Environment Vault secrets for sensitive data
  • Set configuration values directly for non-sensitive Parameters
danger

Be cautious when configuring MCP servers with external services. Always store sensitive credentials like API tokens and keys in Environment Vaults rather than hardcoding them. Verify that external MCP servers are from trusted sources before installation, as they will have access to your configured credentials and can interact with external services on your behalf.

Environment variable patterns​

MCP servers commonly use these environment variable patterns:

env:
# API credentials
API_TOKEN: ${vaults.environment.API_TOKEN}
API_KEY: ${vaults.environment.API_KEY}

# Service identifiers
WORKSPACE_ID: <YOUR_WORKSPACE_ID>
TEAM_ID: <YOUR_TEAM_ID>

# Configuration options
CHANNEL_IDS: <COMMA_SEPARATED_IDS>
BASE_URL: <SERVICE_BASE_URL>

Example​

Here's a complete configuration for the Slack MCP server:

otto/mcp.yaml
mcpServers:
slack:
command: npx
args:
- --cache
- /tmp/npm-cache
- -y
- "@zencoderai/slack-mcp-server"
env:
SLACK_BOT_TOKEN: ${vaults.environment.SLACK_APP_TOKEN}
SLACK_TEAM_ID: <YOUR_SLACK_TEAM_ID>
SLACK_CHANNEL_IDS: <YOUR_SLACK_CHANNEL_ID>

Configuration details:

  • @zencoderai/slack-mcp-server - Slack MCP functionality
  • SLACK_APP_TOKEN - Your Slack app's authentication token (stored in the Environment Vault)
  • SLACK_TEAM_ID - Your Slack workspace identifier
  • SLACK_CHANNEL_IDS - Comma-separated list of channel IDs where Otto can post

Next steps​

After configuring MCP servers: