Skip to main content
Glama
vdloureiro

MCP-manychat

by vdloureiro
README.md
# ManyChat MCP Server

MCP (Model Context Protocol) server for ManyChat API integration. Enables Claude and other LLMs to manage ManyChat accounts, subscribers, tags, custom fields, flows, and messaging.

## Features

- **14 MCP tools** across 5 domains
- **Bearer authentication** with automatic rate limit retry (429 handling)
- **Type-safe** with Zod schema validation
- **Read-only and write operations** with proper annotations
- **Comprehensive error handling** with actionable messages

## Tools

### Page & Configuration (3 tools)
- `manychat_page_info` — Get account status, page name, connected channels
- `manychat_list_flows` — List all automation flows with IDs and names
- `manychat_list_growth_tools` — List comment triggers, ad tools, widgets

### Tags (4 tools)
- `manychat_list_tags` — List all tags
- `manychat_create_tag` — Create a new tag
- `manychat_tag_subscriber` — Add tag to subscriber by name
- `manychat_untag_subscriber` — Remove tag from subscriber by name

### Custom Fields (3 tools)
- `manychat_list_custom_fields` — List all custom fields
- `manychat_create_custom_field` — Create custom field (text, number, date, datetime, boolean)
- `manychat_set_field` — Set custom field value for subscriber by name

### Subscribers (3 tools)
- `manychat_get_subscriber` — Get full subscriber info by ID
- `manychat_find_subscriber` — Search subscribers by name
- `manychat_find_by_field` — Search subscribers by custom field value

### Sending (1 tool)
- `manychat_send_flow` — Trigger a flow for a subscriber

## Installation

```bash
npm install
npm run build
```

## Configuration

Add to your MCP client config (e.g., Claude Code `.mcp.json`):

```json
{
  "mcpServers": {
    "manychat": {
      "command": "node",
      "args": ["/path/to/manychat-mcp/dist/index.js"],
      "env": {
        "MANYCHAT_API_TOKEN": "your_manychat_api_token"
      }
    }
  }
}
```

### Getting Your ManyChat API Token

1. Log into ManyChat: https://manychat.com
2. Go to Settings → API
3. Generate a new API token
4. Copy the token (format: `PAGE_ID:TOKEN_STRING`)

**Permissions required:**
- Read access: Page info, flows, tags, custom fields, subscribers
- Write access: Create tags, create fields, tag subscribers, send flows

## Usage Examples

### Check Account Info
```
manychat_page_info()
```

### Create Tags for Segmentation
```
manychat_create_tag(name: "quiz_completed")
manychat_create_tag(name: "purchased")
```

### Create Custom Fields
```
manychat_create_custom_field(
  name: "wellnessGoal",
  type: "text",
  description: "Primary wellness goal from quiz"
)
```

### Find and Tag a Subscriber
```
# Find subscriber
manychat_find_subscriber(name: "John Doe")

# Add tag
manychat_tag_subscriber(
  subscriber_id: "1234567890",
  tag_name: "quiz_completed"
)
```

### Trigger a Flow
```
# First get flow ID
manychat_list_flows()

# Then trigger it
manychat_send_flow(
  subscriber_id: "1234567890",
  flow_ns: "content20250101000000_123456"
)
```

## API Rate Limits

ManyChat API allows **10 requests per second**. This server automatically:
- Retries on 429 (rate limit) errors
- Uses exponential backoff
- Maximum 3 retry attempts

## Development

```bash
# Install dependencies
npm install

# Run in development mode with auto-reload
npm run dev

# Build for production
npm run build

# Clean build artifacts
npm run clean
```

## Project Structure

```
manychat-mcp/
├── src/
│   ├── index.ts            # Server entry point
│   ├── client.ts           # ManyChat API client
│   └── tools/
│       ├── page.ts         # Page info, flows, growth tools
│       ├── tags.ts         # Tag management
│       ├── fields.ts       # Custom field management
│       ├── subscribers.ts  # Subscriber search
│       └── sending.ts      # Flow triggering
├── dist/                   # Compiled JavaScript
├── package.json
└── tsconfig.json
```

## Error Handling

The server provides clear, actionable error messages:

- **401 Unauthorized** → Check your API token
- **403 Forbidden** → Token lacks required scope
- **404 Not Found** → Resource doesn't exist
- **429 Rate Limit** → Auto-retries with backoff
- **400 Bad Request** → Invalid parameters (check Zod validation errors)

## Tech Stack

- **TypeScript** — Type-safe implementation
- **MCP SDK** — Official Model Context Protocol SDK
- **Zod** — Runtime schema validation
- **Native fetch** — HTTP client (Node 18+)

## Requirements

- Node.js 18+
- ManyChat PRO account (required for API access)
- Valid ManyChat API token

## Use Cases

- **Automation**: Bulk tag/field management via LLM
- **DM Ecosystems**: Build conversational flows with AI assistance
- **Analytics**: Query subscriber data and engagement
- **Customer Support**: Find and manage subscribers programmatically
- **Integration**: Connect ManyChat with other tools via Claude

## ManyChat API Documentation

For full API reference: https://manychat.com/api-docs

## License

MIT

## Contributing

Issues and pull requests welcome! This is a community-maintained MCP server.

## Acknowledgments

Built with the [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic.

---

**Note:** This is an unofficial ManyChat integration. Not affiliated with or endorsed by ManyChat.

TDQS

A3.6/5.0

Scored across 17 tools

Disambiguation4/5

Most tools target a distinct resource/action pair, and the list_* tools clearly separate tags, fields, flows, and growth tools. The send_* family has some overlap, but send_text, send_content, send_sequence, and send_flow are differentiated by message complexity and workflow type.

Naming Consistency4/5

Tool names mostly follow a consistent manychat_verb_noun pattern, such as list_tags, create_tag, get_subscriber, and send_flow. Minor deviations like manychat_page_info and manychat_find_by_field break the strict pattern but do not cause confusion.

Tool Count3/5

With 17 tools, this sits at the high/borderline end of a reasonable tool count. The four send_* variants add some redundancy, but the overall number is understandable for a platform integration covering subscribers, tags, fields, flows, and messaging.

Completeness3/5

Core workflows around subscriber lookup, tagging, custom fields, and sending messages are covered, but there are notable gaps: no update/delete for tags or custom fields, no flow/growth-tool management beyond listing, and no way to enumerate all subscribers. Agents can complete common operational tasks but may hit dead ends for lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues