消息服务集成工具

一个封装MessageBird Conversations API的MCP服务器,为LLM代理提供语义工具,支持发送和接收WhatsApp消息、管理模板和处理联系人。

  • by pauloFroes
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 pauloFroes/mcp-messagebird

使用说明

mcp-messagebird

MCP server that wraps the MessageBird Conversations API as semantic tools for LLM agents. Send and receive WhatsApp messages, manage templates, and handle contacts.

Works with Claude Code, Codex, Claude Desktop, Cursor, VS Code, Windsurf, and any MCP-compatible client.


Prerequisites

Variable Where to find
MESSAGEBIRD_API_KEY Dashboard → Developers → API access

Installation

Claude Code

Three installation scopes are available:

Scope Flag Config file Use case
local -s local .mcp.json This project only (default)
project -s project .claude/mcp.json Shared with team via git
user -s user ~/.claude/mcp.json All your projects

Quick setup (inline env vars):

claude mcp add messagebird -s user \
  -e MESSAGEBIRD_API_KEY=your-key \
  -- npx -y github:pauloFroes/mcp-messagebird

Replace -s user with -s local or -s project as needed.

Persistent setup (.env file):

Add to your .mcp.json:

{
  "messagebird": {
    "command": "npx",
    "args": ["-y", "github:pauloFroes/mcp-messagebird"],
    "env": {
      "MESSAGEBIRD_API_KEY": "${MESSAGEBIRD_API_KEY}"
    }
  }
}

Then define the values in your .env file:

MESSAGEBIRD_API_KEY=your-api-key

See .env.example for all required variables.

Codex

Add to your Codex configuration:

[mcp_servers.messagebird]
command = "npx"
args = ["-y", "github:pauloFroes/mcp-messagebird"]
env_vars = ["MESSAGEBIRD_API_KEY"]

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "messagebird": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-messagebird"],
      "env": {
        "MESSAGEBIRD_API_KEY": "your-key"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "messagebird": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-messagebird"],
      "env": {
        "MESSAGEBIRD_API_KEY": "your-key"
      }
    }
  }
}

VS Code

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "messagebird": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-messagebird"],
      "env": {
        "MESSAGEBIRD_API_KEY": "your-key"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "messagebird": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-messagebird"],
      "env": {
        "MESSAGEBIRD_API_KEY": "your-key"
      }
    }
  }
}

Available Tools

Messaging

Tool Description
send_text Send a WhatsApp text message
send_media Send image, video, audio, or file
send_location Send a location with coordinates
send_template Send a pre-approved template (HSM) message
send_interactive_buttons Send quick reply buttons (max 3)
send_interactive_list Send selectable list menu

Conversations

Tool Description
list_conversations List conversation threads with filters (see below)
get_conversation Get conversation details by ID
update_conversation Update conversation status (active/archived)
list_conversation_messages List messages in a conversation
get_message Get a specific message
reply_to_conversation Send a reply in an existing conversation
list_messages Fetch messages by ids or recent from window (max 5 min)

list_conversations filters

Param Values Notes
status active (default), archived, all Native Conversations API lifecycle filter.
ids comma-separated (max 20) Fetch specific conversations
offset / limit pagination API max limit = 20
proxy none, waiting_for_reply, assigned_open, assigned_open_waiting Client-side approximations (see below)
scan_limit 1–100 (default 40) With a proxy: how many recent active conversations to inspect
message_scan_limit 20–100 (default 40) With a proxy: max messages loaded per conversation

Proxies (MessageBird Conversations API only — incomplete by design)

The Conversations API has no assignee field. Proxies reconstruct state from message rows:

Proxy Rule
waiting_for_reply Last non-event message is from the contact; no later human Inbox agent reply (origin=inbox + real agentId). Flow Builder does not clear waiting.
assigned_open Conversation is active and the latest ticketLifecycleAssigned event (real agent) is more recent than any Unassigned in the scanned message window.
assigned_open_waiting Both of the above

Threads with no ticketLifecycle* events in the scanned window are invisible to assigned_open (typical of bot-only contacts).

Templates

Tool Description
list_templates List all WhatsApp message templates
get_template Get template details by name and language
create_template Create a new template for Meta approval
update_template Update an existing template
delete_template Delete template and all language variants
delete_template_variant Delete a specific language variant

Contacts

Tool Description
list_contacts List all contacts
get_contact Get contact by ID, phone, or name
create_contact Create a new contact
update_contact Update contact information
delete_contact Permanently delete a contact

Account

Tool Description
get_balance Get the account balance (payment model, currency, and amount)

Authentication

Uses MessageBird API Key authentication. The key is passed via the Authorization: AccessKey {key} header on every request. The API key is set as the MESSAGEBIRD_API_KEY environment variable at installation time.

License

MIT