Skip to main content

Model Context Protocol (MCP)

Unizo offers an MCP server that integrates communication platforms with any LLM provider supporting the MCP protocol. This enables your AI agent to send messages, manage channels, and automate communication workflows across Slack, Microsoft Teams, Discord, and other messaging platforms via a single MCP server.

Supported Tools & Use Cases

The following tools are available in the Communication MCP Server:

Tool NameDescription
comms_list_connectorsGet list of available communication services
comms_list_integrationsGet integrations for a specific communication service
comms_list_organizationsBrowse organizations with pagination
comms_get_organization_detailsRetrieve detailed organization information
comms_list_channelsBrowse channels within an organization
comms_get_channel_detailsRetrieve detailed channel information
comms_create_messageCreate a new message in a channel

Tool Reference

Service Discovery Tools

comms_list_connectors

Get list of available communication services

Parameters:
None

Returns:
List of available communication services (e.g., Slack, Microsoft Teams, Discord)

Example Response:

[
{"name": "slack"},
{"name": "microsoft_teams"},
{"name": "discord"},
{"name": "mattermost"}
]

comms_list_integrations

Get integrations for a specific communication service

Parameters:

  • connector (string, required): Name of the service (e.g., "slack", "microsoft_teams")

Returns: List of integrations available for the specified service

Example Response:

[
{
"id": "integration-123",
"name": "Production Slack Workspace"
},
{
"id": "integration-456",
"name": "Development Teams"
}
]

Organization Management Tools

comms_list_organizations

Browse organizations with pagination and sorting

Parameters:

  • integration_id (string, required): Unique identifier for the integration

Returns: Paginated list of organizations

Example Response:

{
"status": "success",
"message": "Retrieved 3 organizations",
"data": {
"organizations": [
{
"id": "T01234ABCD",
"login": "acme-workspace",
"name": "Acme Inc Workspace",
"url": "https://acme-inc.slack.com",
"changeLog": {
"createdDateTime": "2020-01-15T10:00:00Z",
"lastUpdatedDateTime": "2024-11-01T14:30:00Z"
}
},
{
"id": "T56789EFGH",
"login": "acme-dev-workspace",
"name": "Acme Development",
"url": "https://acme-dev.slack.com",
"changeLog": {
"createdDateTime": "2021-06-20T11:00:00Z",
"lastUpdatedDateTime": "2024-10-28T16:45:00Z"
}
}
],
"pagination": {
"total": 3,
"offset": 0,
"limit": 20,
"next": null,
"previous": null
},
"total_count": 3
}
}

comms_get_organization_details

Retrieve detailed organization information

Parameters:

  • integration_id (string, required): Unique identifier for the integration
  • organization_id (string, required): Unique identifier of the organization

Returns: Comprehensive organization information

Example Response:

{
"status": "success",
"message": "Retrieved organization details for T01234ABCD",
"data": {
"organization": {
"id": "T01234ABCD",
"login": "acme-workspace",
"name": "Acme Inc Workspace",
"url": "https://acme-inc.slack.com",
"changeLog": {
"createdDateTime": "2020-01-15T10:00:00Z",
"lastUpdatedDateTime": "2024-11-01T14:30:00Z"
}
}
}
}

Channel Management Tools

comms_list_channels

Browse channels within an organization

Parameters:

  • integration_id (string, required): Unique identifier for the integration
  • organization_id (string, required): Unique identifier of the organization

Returns: Paginated list of channels

Example Response:

{
"status": "success",
"message": "Retrieved 15 channels for organization T01234ABCD",
"data": {
"channels": [
{
"id": "C01234ABC",
"name": "general",
"description": "General discussion channel for all team members",
"changeLog": {
"createdDateTime": "2020-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-11-05T09:30:00Z"
}
},
{
"id": "C56789DEF",
"name": "engineering",
"description": "Engineering team discussions and updates",
"changeLog": {
"createdDateTime": "2020-02-20T11:00:00Z",
"lastUpdatedDateTime": "2024-11-04T16:45:00Z"
}
},
{
"id": "C98765GHI",
"name": "product-announcements",
"description": "Product launch announcements and updates",
"changeLog": {
"createdDateTime": "2020-03-10T14:20:00Z",
"lastUpdatedDateTime": "2024-11-03T10:15:00Z"
}
},
{
"id": "C45678JKL",
"name": "random",
"description": "Off-topic conversations and team bonding",
"changeLog": {
"createdDateTime": "2020-01-15T10:30:00Z",
"lastUpdatedDateTime": "2024-11-05T15:20:00Z"
}
}
],
"pagination": {
"total": 15,
"offset": 0,
"limit": 20,
"next": null,
"previous": null
},
"organization_id": "T01234ABCD",
"parent_id": null,
"total_count": 15
}
}

comms_get_channel_details

Retrieve detailed channel information

Parameters:

  • integration_id (string, required): Unique identifier for the integration
  • organization_id (string, required): Unique identifier of the organization
  • channel_id (string, required): Unique identifier of the channel

Returns: Comprehensive channel information

Example Response:

{
"status": "success",
"message": "Retrieved channel details for C01234ABC",
"data": {
"channel": {
"id": "C01234ABC",
"name": "engineering",
"description": "Engineering team discussions, code reviews, and technical updates",
"changeLog": {
"createdDateTime": "2020-02-20T11:00:00Z",
"lastUpdatedDateTime": "2024-11-04T16:45:00Z"
}
},
"organization_id": "T01234ABCD"
}
}

Message Management Tools

comms_create_message

Create a new message in a channel

Parameters:

  • integration_id (string, required): Unique identifier for the integration
  • organization_id (string, required): Unique identifier of the organization
  • channel_id (string, required): Unique identifier of the channel
  • message_body (string, required): Content of the message to be sent

Returns: Created message information

Example Response:

{
"status": "success",
"message": "Message created successfully in channel C01234ABC",
"data": {
"message": {
"id": "1234567890.123456",
"name": null,
"messageBody": "Hello team! Just wanted to share an update on the latest release.",
"attachments": [],
"changeLog": {
"createdDateTime": "2024-11-06T10:30:00Z",
"lastUpdatedDateTime": "2024-11-06T10:30:00Z"
}
},
"organization_id": "T01234ABCD",
"channel_id": "C01234ABC"
}
}

Example with Attachments:

{
"status": "success",
"message": "Message created successfully in channel C01234ABC",
"data": {
"message": {
"id": "1234567890.123457",
"name": "Q4 Performance Report",
"messageBody": "Please review the Q4 performance metrics attached below.",
"attachments": [
{
"id": "F01234567",
"contentType": "application/pdf",
"authorName": "John Doe",
"title": "Q4_Performance_Report.pdf",
"titleLink": "https://files.slack.com/files-pri/T01234ABCD-F01234567/q4_report.pdf",
"text": "Quarterly performance analysis and KPI tracking",
"fields": [
{
"title": "Size",
"value": "2.5 MB",
"short": true
},
{
"title": "Type",
"value": "PDF Document",
"short": true
}
]
}
],
"changeLog": {
"createdDateTime": "2024-11-06T10:35:00Z",
"lastUpdatedDateTime": "2024-11-06T10:35:00Z"
}
},
"organization_id": "T01234ABCD",
"channel_id": "C01234ABC"
}
}

Installation

Prerequisites

  • A Unizo API key
  • An active Communications integration (Slack, Google Chat, Microsoft Teams)
  • Node.js v20 or higher

MCP Configuration

Here is an example configuration for setting up the Unizo Communications MCP server:

{
"mcpServers": {
"unizo": {
"command": "npx",
"args": [
"mcp-remote",
"https://api.unizo.ai/mcp",
"--header",
"apikey:${UNIZO_API_KEY}",
"--header",
"x-mcp-scopes:comms"
],
"env": {
"UNIZO_API_KEY": "your_api_key"
}
}
}
}

Client Setup

For detailed setup instructions with specific AI clients:

Environment Variables

The following environment variables are required:

Error Handling

All tools return errors in a consistent format:

{
"status": "error",
"message": "Channel 'C01234ABC' not found in organization 'T01234ABCD'",
"traceback": "..."
}