Integration Aliases
Register the same integration multiple times on an MCP server with different connections using aliases.
Integration aliases let you add the same integration to an MCP server multiple times, each with its own connection and identity. This is useful when you need separate connections for the same service — like a Slack bot token and a Slack user token.
Use Cases
- Slack Bot vs User —
slack_botfor automated messages,slack_userfor user-context messages - GitHub Org vs Personal —
github_workfor work repos,github_personalfor personal repos - Multiple Google Accounts —
google_marketingandgoogle_engineeringwith different OAuth connections - Staging vs Production —
airtable_stagingandairtable_prodpointing to different bases
Creating Aliased Tools
Open your MCP server
Navigate to MCP Servers and select the server you want to configure.
Add a tool
Click Add Tool and select the integration (e.g., Slack).
Set the alias
In the Alias field, enter a custom name like slack_bot. This overrides the default integration name for tool naming.
Choose a connection
Select the connection to use for this alias (e.g., your bot token connection).
Repeat for additional aliases
Add the same integration again with a different alias (e.g., slack_user) and a different connection.
Naming Rules
Aliases must follow these rules:
- Format: lowercase letters, numbers, hyphens, and underscores only (
/^[a-z][a-z0-9_-]*$/) - Length: maximum 64 characters
- Must start with a lowercase letter
- Consistent mapping: all tools with the same alias on a server must use the same
integrationName
Valid examples: slack_bot, github-work, airtable_prod, google_eng
Invalid examples: Slack_Bot (uppercase), 123slack (starts with number), slack bot (spaces)
Tool Naming with Aliases
In TOOLS mode, tool names use the alias instead of the integration name:
| Alias | Action | Tool Name |
|---|---|---|
slack_bot | send_channel_message | slack_bot__send_channel_message |
slack_user | send_channel_message | slack_user__send_channel_message |
github_work | create_issue | github_work__create_issue |
Without an alias, the tool name defaults to using the integration name (e.g., slack__send_channel_message).
Code Mode with Aliases
In CODE mode, aliases create separate namespaces under weavz.*:
// With aliases, each has its own namespace
await weavz.slack_bot.send_channel_message({
channel: '#alerts',
text: 'Automated alert!',
})
await weavz.slack_user.send_channel_message({
channel: '#general',
text: 'Message from user context',
})The weavz_read_api tool returns separate TypeScript declarations for each alias:
AI Agent calls: weavz_read_api({ integration: "slack_bot" })
Returns:
declare namespace weavz {
namespace slack_bot {
function send_channel_message(input: {
channel: string;
text: string;
}): Promise<{ ok: boolean }>;
}
}Alias Conflicts
If you try to add a tool with an alias that's already associated with a different integration on the same server, you'll get a 409 ALIAS_CONFLICT error:
{
"error": "Alias 'slack_bot' is already associated with integration 'slack' on this server",
"code": "ALIAS_CONFLICT"
}This prevents confusion — one alias always maps to one integration per server.
Default Behavior
When no integrationAlias is provided, the integration name itself is used as the alias. This means existing tools work without any changes, and aliases are an opt-in feature for advanced use cases.