Skip to main content

MCP server setup

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

MCP server configuration​

Organization​

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

folder

Basic configuration structure​

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>

Command execution:

  • command: npx - Runs MCP servers without requiring global installation
  • 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

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>

Available MCP servers​

Currently, Ascend natively supports the Slack messaging integration via @modelcontextprotocol/server-slack.

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

Example​

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

otto/mcp.yaml
mcpServers:
slack:
command: npx
args:
- --cache
- /tmp/npm-cache
- -y
- "@modelcontextprotocol/server-slack"
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:

  • @modelcontextprotocol/server-slack - The npm package providing 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:

  • Configure Otto for Agent setup
  • Build custom agents that access MCP servers
  • Set up specific integrations like Slack
  • Test by instructing Otto to use your MCP integration in an Agent markdown file or an Automation prompt