Labsco
sinch logo

Sinch

β˜… 1

from sinch

Interact with Sinch APIs for communication services like conversation, email, verification, and voice.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedPaid serviceAdvanced setup

Sinch MCP Server β€” Developer Preview

Latest Release

This repository contains the source code for the Sinch MCP server, which provides a set of tools to interact with the Sinch APIs. This README focuses on using the MCP server with the Claude Desktop client, but it can also be used with any other MCP client.

Tools Overview

Here is the list of tools available in the MCP server (all the phone numbers must be provided in E.164 format, e.g., +33612345678 for France).

Conversation Tools

ToolDescriptionTags
send-text-messageSend a plain text message to a recipient on a supported channel. <br> Example prompt: "Send a quick update to the phone number +33612345678 on SMS."conversation, notification
send-media-messageSend an image, video, or document via a media message. <br> Example prompt: "Send the product brochure PDF to the phone number +33612345678 on WhatsApp."conversation, notification
send-template-messageSend a message using a predefined template (omni-template only). <br> Example prompt: "Send the appointment reminder template in Spanish to this user on Messenger."conversation, notification
send-whatsapp-template-messageSend a message using a predefined WhatsApp template. <br> Example prompt: "Send a message using the template "appointment-reminder" on WhatsApp."conversation, notification
send-choice-messageSend a message that includes interactive choices (buttons or quick replies). <br> Example prompt: "Send a RCS survey about preferred ice cream flavor to +33612345678 with the following choices: Vanilla, Strawberry, Hazelnut".conversation, notification
send-location-messageSend a location pin or coordinates to a user. <br> Example prompt: "Send a pin to the Guggenheim Museum location in Bilbao to the phone number +33612345678."conversation, notification
list-conversation-appsList all configured Conversation apps in the Sinch account. <br> Example prompt: "What messaging apps do I have set up in my account?"conversation, notification
create-conversation-appCreate a new Conversation API app (no channels required at creation). <br> Example prompt: "Create a Conversation app named My Support Bot in the EU region."conversation, configuration
set-sms-channel-on-appSet (create or replace) the SMS channel on a Conversation app. <br> Example prompt: "Set SMS on app abc123 using service plan XYZ and API token …"conversation, configuration
set-rcs-channel-on-appSet (create or replace) the RCS channel on a Conversation app. <br> Example prompt: "Set RCS on app abc123 with sender ID … and bearer token …"conversation, configuration
set-whatsapp-channel-on-appSet (create or replace) the WhatsApp channel on a Conversation app. <br> Example prompt: "Set WhatsApp on app abc123 with sender ID … and bearer token …"conversation, configuration
list-messaging-templatesList all omni-channel and channel-specific message templates. <br> Example prompt: "Show me all message templates in my account."conversation, notification
list-webhooksList webhooks configured for a Conversation app. <br> Example prompt: "List all webhooks for my Conversation app."conversation, configuration
get-webhookGet a webhook by ID. <br> Example prompt: "Show me the details of webhook ID abc123."conversation, configuration
create-webhookCreate a webhook that delivers Conversation API events to a target URL. <br> Example prompt: "Create a webhook for inbound messages at https://example.com/callback."conversation, configuration
update-webhookUpdate a webhook target URL and/or triggers. <br> Example prompt: "Update webhook abc123 to also receive MESSAGE_DELIVERY events."conversation, configuration
delete-webhookDelete a webhook by ID. <br> Example prompt: "Delete webhook abc123."conversation, configuration

Email tools (Mailgun)

ToolDescriptionTags
send-emailSend an email using a predefined HTML template or raw HTML/text content. <br> Example prompt: "Send a welcome email to john@example.com using our onboarding template."email, notification
list-email-templatesList all email templates available for a specific domain. <br> Example prompt: "What email templates do I have available?"email, notification
retrieve-email-infoRetrieve metadata, content and delivery status for a specific email message. <br> Example prompt: "Can you get the delivery status of the email with ID <email-id>?"email, notification
list-email-eventsRetrieve and group recent email delivery events, such as bounces, opens, or clicks. <br> Example prompt: "Show me all recent email activity for my account."email
analytics-metricsRetrieve email analytics metrics, such as open rates or click-through rates. <br> Example prompt: "What are the open rates during the last week?"email

Verification Tools

ToolDescriptionTags
number-lookupLookup a phone number for its status and capabilities. <br> Example prompt: "Lookup for the following phone number capabilities: +33501020304."verification
start-sms-verificationInitiate an SMS verification by sending an OTP to a user's phone number. <br> Example prompt: "Start phone verification for the number +33612345678."verification
report-sms-verificationSubmit a one-time password (OTP) to complete SMS verification. <br> Example prompt: "Verify the phone number with this code: 1234."verification

Voice Tools

ToolDescriptionTags
tts-calloutPlace a voice call and read aloud a message using Text-to-Speech. <br> Example prompt: "Call the phone number +33612345678 and say: 'Your appointment is tomorrow at 10 AM.'"voice, notification
conference-calloutStart a voice call to one or more participants and connect them to a shared conference. <br> Example prompt: "Call John (+33612345678) and Lisa (+34987654321) and connect them to a conference room."voice
manage-conference-participantMute, unmute, hold, or resume an individual participant in a conference call. <br> Example prompt: "Mute the caller with ID xyz789 in the conference."voice
close-conferenceEnd a conference call by disconnecting all the participants using the ID of the conference. <br> Example prompt: "End the current conference call with ID abc123."voice
get-call-informationGet information about a call using its ID. <br> Example prompt: "Get the details of call ID abc123."voice, notification

RCS Sender Tools

ToolDescriptionTags
list-rcs-sendersList all RCS senders for the project, with pagination support. <br> Example prompt: "Show me all my RCS senders."rcs, configuration
get-rcs-senderGet a full RCS sender by ID, including credentials, state, brand details, test numbers, and country status. <br> Example prompt: "Get the details of my RCS sender abc123."rcs, configuration
create-rcs-senderCreate a new RCS sender. Brand details, questionnaire, and countries can be provided upfront or added incrementally via update-rcs-sender. <br> Example prompt: "Create an RCS sender for the EU region with a CONVERSATIONAL billing category."rcs, configuration
update-rcs-senderUpdate an RCS sender's brand, countries, test numbers, or questionnaire. <br> Example prompt: "Update my RCS sender abc123 with the brand logo URL."rcs, configuration
launch-rcs-senderSubmit an RCS sender for Google and carrier review. All brand details, countries, and questionnaire sections must be complete before launching. <br> Example prompt: "Launch my RCS sender abc123."rcs, configuration
add-rcs-test-numberAdd test phone numbers to an RCS sender (max 20 per request, 200 total per sender). <br> Example prompt: "Add +14155552671 as a test number to my RCS sender."rcs, configuration
delete-rcs-test-numberDelete a test number from an RCS sender. <br> Example prompt: "Remove test number +14155552671 from my RCS sender."rcs, configuration
resend-rcs-test-number-inviteResend a test number invite when state is PENDING or UNVERIFIED. <br> Example prompt: "Resend the invite for test number +14155552671 on sender abc123."rcs, configuration
get-rcs-test-number-stateGet the verification state of a single RCS test number. <br> Example prompt: "What is the state of test number +14155552671 on sender abc123?"rcs, configuration
get-rcs-number-capabilitiesGet the RCS features supported by a test number's device (actions, rich card layouts, revocation). <br> Example prompt: "What RCS features does +14155552671 support?"rcs, configuration

Numbers Tools

ToolDescriptionTags
list-available-regionsList all regions where phone numbers are available for the project. Can filter by number type (MOBILE, LOCAL, TOLL_FREE). <br> Example prompt: "Which regions have toll-free numbers available?"numbers
list-rented-numbersList all active (rented) phone numbers for the project. Can filter by region, type, pattern, and capability. <br> Example prompt: "Show me all my active phone numbers in the US."numbers
search-for-available-numbersSearch for phone numbers available to rent, with filters for region, type, pattern, and capabilities. <br> Example prompt: "Find available local numbers in the US that support SMS."numbers
rent-sinch-virtual-numbersRent (activate) one or more phone numbers by providing them in E.164 format. <br> Example prompt: "Rent the phone number +12025551234."numbers
release-rented-numberRelease a rented phone number from your project. <br> Example prompt: "Release the phone number +12025551234."numbers

Configuration Tools

ToolDescriptionTags
sinch-mcp-configurationList all available tools in the Sinch MCP server and their status. If a tool is disabled, it will display the reason why. <br> Example prompt: "Which tools are available in the Sinch MCP server?"

Option 1: Start the MCP server with stdio using Claude Desktop

To run the MCP server locally with Claude Desktop, you will need to clone the repository and build the MCP server. This option is useful for local development and testing.

Step 1: Clone the repository

Copy & paste β€” that's it
git clone https://github.com/sinch/sinch-mcp-server.git

Step 2: Build the MCP server

Copy & paste β€” that's it
cd sinch-mcp-server
npm install
npm run build

Step 3: Setup Claude Desktop configuration

Here is an example of how to configure the MCP server in the Claude Desktop configuration file (claude_desktop_config.json):

Copy & paste β€” that's it
{
  "mcpServers": {
    "sinch": {
      "command": "node",
      "args": ["/your/path/to/sinch-mcp-server/dist/index.js"],
      "env": {
        "PROJECT_ID": "",
        "KEY_ID": "",
        "KEY_SECRET": "",
        "CONVERSATION_APP_ID": "",
        "CONVERSATION_REGION": "",
        "DEFAULT_SMS_ORIGINATOR": "",
        "GEOCODING_API_KEY": "",
        "APPLICATION_KEY": "",
        "APPLICATION_SECRET": "",
        "CALLING_LINE_IDENTIFICATION": "",
        "MAILGUN_API_KEY": "",
        "MAILGUN_DOMAIN": "",
        "MAILGUN_SENDER_ADDRESS": ""
      }
    }
  }
}

Step 4: (Optional) Filter the tools available in the MCP server

Too many tools mean bigger context, mean higher tokens usage and more confusion for the LLM to select the right tool to use.<br> You can filter the tools that are available in the MCP server by using the tags options. For example, if you want to only use the conversation tools, you can add the following options to the args array:

Copy & paste β€” that's it
      "args": [
        "/your/path/to/sinch-mcp-server/dist/index.js",
        "--tags",
        "conversation"
      ],

You can combine multiple tags by separating them with commas. For example, if you want to use both conversation and verification tools, you can use the following command:

Copy & paste β€” that's it
      "args": [
        "/your/path/to/sinch-mcp-server/dist/index.js",
        "--tags",
        "conversation,verification"
      ],

Available tags: conversation, rcs, email, verification, voice, numbers, notification, configuration, all.

If you want to use all the tools, you can omit the --tags option, or use the tag all:

Copy & paste β€” that's it
      "args": [
        "/your/path/to/sinch-mcp-server/dist/index.js",
        "--tags",
        "all"
      ],

Option 2: Start the MCP server remotely and connect to it using SSE

With this option, you can run the MCP server on a remote machine and connect to it using Server-Sent Events (SSE). This is useful if you want to run the MCP server on a cloud server or a dedicated machine. By default, Claude Desktop will connect to the MCP server using STDIO; we will use the supergateway library to connect to the MCP server using SSE.

Step 1: Build the MCP server

Copy & paste β€” that's it
cd sinch-mcp-server
npm install
npm run build

Step 2: Set up the MCP server configuration

Copy the file .template.env and rename it .env. Then replace the placeholders with your own credentials and delete any key you don't need. Environment variables are parsed and typed at server startup via T3 Env; missing credentials only cause errors when you invoke a tool that requires them. The .env file should look like this ():

Copy & paste β€” that's it
# Conversation / Numbers tools related environment variables
PROJECT_ID=
KEY_ID=
KEY_SECRET=

## Optional, defaults to "us". Other possible values are "eu" and "br"

CONVERSATION_REGION=

## Needed only if you want to send SMS messages: it is the number that will be used as the sender for SMS messages

DEFAULT_SMS_ORIGINATOR=

## Needed only if you want to send location messages: it converts an address to a latitude/longitude pair

GEOCODING_API_KEY=

# Verification / Voice tools related environment variables
APPLICATION_KEY=
APPLICATION_SECRET=

## Needed only if you want to make calls: it is the number that will be displayed to the user when they receive a call

CALLING_LINE_IDENTIFICATION=

# Mailgun tools related environment variables
MAILGUN_DOMAIN=
MAILGUN_API_KEY=
MAILGUN_SENDER_ADDRESS=

Step 3: Start the MCP server

Copy & paste β€” that's it
npm run start:stdio

By default, this command will start the MCP with all the tools available. If you want to filter the tools that are available in the MCP server, you can use the --tags option. For example, if you want to only use the conversation tools, you can modify the command as follows:

Copy & paste β€” that's it
# Original command
"start:sse": "tsc --project tsconfig.build.json && (npx -y supergateway --stdio \"node dist/index.js\" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message)"

# Modified command to only use conversation tools
"start:sse": "tsc --project tsconfig.build.json && (npx -y supergateway --stdio \"node dist/index.js --tag conversation\" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message)"

You can combine multiple tags by separating them with commas. For example, if you want to use both conversation and verification tools, you can use the following command:

Copy & paste β€” that's it
"start": "tsc --project tsconfig.build.json && (npx -y supergateway --stdio \"node dist/index.js --tag conversation,verification\" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message)"

Step 4: Configure the MCP server in Claude Desktop

You can then configure the MCP server in the Claude configuration file as follows:

Copy & paste β€” that's it
{
  "mcpServers": {
    "sinch": {
      "command": "npx",
      "args": ["-y", "supergateway", "--sse", "http://localhost:8000/sse"]
    }
  }
}

(Replace the http://localhost:8000/sse with the URL of your MCP server if it is not running locally)

Contributing

See CONTRIBUTING.md for contributor guidelines, including how to add new tools and pin GitHub Actions.