Skip to main content
Glama

SendPulse Chatbots MCP Server

by dshemendiuk
README.md3.67 kB
# MCP Server for SendPulse Chatbots This project is an implementation of a [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server designed to work with the [SendPulse Chatbots API](https://sendpulse.com/swagger/chatbots/?lang=en). It allows Large Language Models (LLMs) like those from OpenAI to interact with the SendPulse API through a standardized set of tools. This server is built with TypeScript and runs on Node.js using the Express framework. ## Features The server exposes a combination of global and universal, channel-specific tools to the LLM. ### Global Tools These tools provide general, account-wide information. - `get_account_info`: Returns information about the current SendPulse account, including pricing plan, message counts, bots, contacts, etc. - `get_bots_list`: Returns a list of all connected chatbots with details for each. - `get_dialogs`: Returns a list of dialogs from all channels, with support for pagination and sorting. ### Universal Tools These tools perform actions on specific channels. They require a `channel` parameter to be specified. - **`send_message`**: Sends a text message to a contact. - **`channel`**: The channel to use. Supported values: `whatsapp`, `telegram`, `instagram`, `messenger`, `livechat`, `viber`. - **`contact_id`**: The ID of the recipient. - **`text`**: The message content. ## Authentication The server supports two flexible methods for authenticating requests to the SendPulse API, which are handled on a per-session basis. ### Method 1: API ID & Secret (Recommended) The client can provide SendPulse API credentials by sending two custom HTTP headers: - `x-sp-id`: Your SendPulse API ID. - `x-sp-secret`: Your SendPulse API Secret. Upon receiving these headers, the MCP server will automatically perform the OAuth 2.0 `client_credentials` flow to obtain a temporary access token from SendPulse. These tokens are cached in memory to improve performance for subsequent requests from the same user (same API ID). ### Method 2: Direct OAuth Token The client can provide a pre-existing, valid SendPulse OAuth 2.0 token directly. This is supported in two ways: 1. **Via `Authorization` Header (Standard):** - `Authorization: Bearer <your_oauth_token>` 2. **Via MCP `initialize` Request Body (Legacy/Compatibility):** - As part of the MCP JSON configuration. ## Getting Started ### Prerequisites - [Node.js](https://nodejs.org/) (v18 or later recommended) - [npm](https://www.npmjs.com/) (usually comes with Node.js) ### Installation 1. Clone the repository (if applicable). 2. Install the project dependencies: ```bash npm install ``` ### Build To build the project, run the following command. ```bash npm run build ``` ### Running the Server Once the project is built, you can start the server: ```bash npm start ``` You should see a confirmation message in your console: `SendPulse MCP HTTP Server running on http://localhost:3000/mcp` ### Exposing the TEST Server with ngrok To make your local server accessible to services like the OpenAI sandbox, you need to expose it to the internet. You can use [ngrok](https://ngrok.com/download) for this purpose. Open a **new terminal window** and run: ```bash ngrok http 3000 ``` Ngrok will provide you with a public `https://` URL (e.g., `https://random-string.ngrok-free.app`). Use this URL (`https://random-string.ngrok-free.app/mcp`) when configuring the MCP tool in your LLM client. **Note:** To bypass the ngrok browser warning page, you may need to configure your LLM client to send an additional header with every request, for example: `ngrok-skip-browser-warning: "true"`.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dshemendiuk/mcp-sendpulse'

If you have feedback or need assistance with the MCP directory API, please join our Discord server