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:
- Screenshot
- File tree

├── otto
│  ├── agents
│  │  ├── custom_agent.md
│  ├── mcp.yaml
│  ├── otto.yaml
│  └── rules
│  └── demo_welcome.yaml
│  └── git_commits.yaml
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 functionalitySLACK_APP_TOKEN
- Your Slack app's authentication token (stored in the Environment Vault)SLACK_TEAM_ID
- Your Slack workspace identifierSLACK_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