Drip MCP服务器

一个基于模型上下文协议(MCP)的服务器,用于与Drip电子邮件营销自动化平台无缝集成,支持订阅者管理、活动自动化和分析跟踪。

  • by GravityKit
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 gravitykit/drip-mcp-server

使用说明

滴注MCP服务器

一个模型上下文协议(MCP)服务器,提供与 滴落 电子邮件营销自动化平台。该服务器使Claude等人工智能助手能够与Drip的API交互,用于用户管理、活动自动化和分析跟踪。

🌟 特性

核心能力

  • 🧑‍🤝‍🧑 用户管理 -使用完全自定义字段支持创建、更新、删除和搜索订阅者
  • 🏷️ 标签操作 -应用和删除标签以实现分割和自动化
  • 📧 活动管理 -列出活动并管理订阅者注册
  • 🔄 工作流程自动化 -控制工作流和订阅者参与
  • 📊 事件跟踪 -跟踪自定义事件以实现行为自动化
  • 💰 电子商务整合 -创纪录的购买和转换
  • 📝 表单和广播访问 -检索表格和广播信息
  • ⚡ 批量操作 -高效处理批量用户操作
  • 🔍 高级搜索 -使用复杂的筛选条件查找订阅者

技术特性

  • 🛡️ 自动速率限制 -利用指数退避处理Drip的API限值
  • 🔧 智能现场测绘 -自动组织标准和自定义字段
  • 🎯 错误处理 -调试的详细错误消息
  • 🧪 综合测试 -包括单元和集成测试套件
  • 🔍 MCP检查员支持 -内置开发调试界面

📦 安装

先决条件

  • Node.js 20.0.0或更高版本
  • npm或yarn包管理器
  • 具有API访问权限的滴水帐户
  • MCP兼容客户端(例如。, 克劳德桌面)

软件包安装

# Using npm
npm install @gravitykit/drip-mcp-server

# Using yarn
yarn add @gravitykit/drip-mcp-server

# For global installation
npm install -g @gravitykit/drip-mcp-server

来源

# Clone the repository
git clone https://github.com/GravityKit/drip-mcp-server.git
cd drip-mcp-server

# Install dependencies
npm install

# Set up environment variables
cp .env.example .env
# Edit .env with your credentials

🔑 配置

获取API凭据

  1. API密钥:

    • 登录到您的 滴水账户
    • 引导到 设置 → 我的用户设置 → API
    • 复制API密钥
    • 直接链接:https://www.getdrip.com/user/edit
  2. 帐户ID:

    • 在中找到 设置 → 基本信息
    • 也可以在您的Drip仪表板URL中看到
    • 格式:数字ID(例如。, 12345678)

环境变量

创建一个 .env 项目根目录中的文件:

DRIP_API_KEY=your_api_key_here
DRIP_ACCOUNT_ID=your_account_id_here

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "drip": {
      "command": "npx",
      "args": ["@gravitykit/drip-mcp-server"],
      "env": {
        "DRIP_API_KEY": "your_api_key_here",
        "DRIP_ACCOUNT_ID": "your_account_id_here"
      }
    }
  }
}

替代方案:使用本地安装

{
  "mcpServers": {
    "drip": {
      "command": "node",
      "args": ["/path/to/drip-mcp-server/src/index.js"],
      "env": {
        "DRIP_API_KEY": "your_api_key_here",
        "DRIP_ACCOUNT_ID": "your_account_id_here"
      }
    }
  }
}

🚀 用法

快速开始

配置后,MCP服务器通过标准化工具公开Drip功能。您的AI助手可以使用自然语言与这些工具进行交互。

AI助手提示示例

"Add john@example.com to my Drip subscribers with the tag 'customer'"

"Find all subscribers tagged as 'vip' who joined this month"

"Track a 'Product Viewed' event for user@example.com with product_id ABC123"

"Start the 'Welcome Series' workflow for new@subscriber.com"

"Show me the last 10 unsubscribes and their reasons"

可用工具

用户管理

工具 说明
drip_create_subscriber 创建或更新订阅者
drip_list_subscribers 按页码列出所有订阅者
drip_get_subscriber 通过ID或电子邮件获取特定订阅者
drip_delete_subscriber 永久删除订阅者
drip_search_subscribers 使用过滤器进行高级搜索
drip_batch_create_subscribers 批量创建/更新(最多1000个)

标签和细分

工具 说明
drip_tag_subscriber 将标签应用于订阅者
drip_remove_tag 从订阅者中删除标签

活动和工作流程

工具 说明
drip_list_campaigns 列出所有活动
drip_subscribe_to_campaign 将订阅者添加到活动
drip_list_workflows 列出所有工作流
drip_activate_workflow 激活工作流
drip_pause_workflow 暂停工作流
drip_start_workflow 为订阅者启动工作流
drip_remove_from_workflow 从工作流中删除订阅者

分析和跟踪

工具 说明
drip_track_event 跟踪自定义事件
drip_record_conversion 记录转换
drip_record_purchase 记录购买
drip_recent_unsubscribes 获取最近的取消订阅
drip_unsubscribe_stats 获取取消订阅统计信息

表格和广播

工具 说明
drip_list_forms 列出所有表单
drip_get_form 获取特定表单详细信息
drip_list_broadcasts 列出所有广播
drip_get_broadcast 获取特定的广播详细信息

代码示例

创建订阅者

{
  "email": "user@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "tags": ["customer", "newsletter"],
  "custom_fields": {
    "company": "Acme Corp",
    "plan": "premium"
  },
  "time_zone": "America/New_York",
  "eu_consent": "granted"
}

跟踪事件

{
  "email": "user@example.com",
  "action": "Viewed Product",
  "properties": {
    "product_id": "SKU-12345",
    "product_name": "Premium Widget",
    "price": 99.99,
    "category": "Widgets"
  },
  "occurred_at": "2024-01-15T10:30:00Z"
}

高级搜索

{
  "tags": ["vip", "customer"],
  "created_after": "2024-01-01T00:00:00Z",
  "custom_field_filters": {
    "lifetime_value": { "greater_than": 1000 },
    "plan": "premium"
  },
  "status": "active",
  "per_page": 100
}

🧪 发展

以开发模式运行

# Watch mode with auto-restart
npm run dev

# Standard mode
npm start

使用MCP检查器

MCP检查器提供了一个基于web的用户界面,用于测试和调试:

# Launch the inspector
npm run inspect

特征:

  • 交互式工具测试
  • 实时消息监控
  • 架构验证
  • 请求/响应检查

访问检查员 http://localhost:5173 运行命令后。

测试

# Run all tests
npm run test:all

# Run specific test suites
npm test                    # Core functionality
npm run test:unit          # Unit tests (no network)
npm run test:validation    # Input validation
npm run test:names         # Field handling
npm run test:unsubscribes  # Unsubscribe tracking

项目结构

drip-mcp-server/
├── src/
│   ├── index.js           # MCP server implementation
│   ├── drip-client.js     # Drip API client wrapper
│   └── tests/             # Test suites
│       ├── run.js         # Test runner
│       ├── drip-client.test.js
│       ├── server-tools.test.js
│       └── server-e2e.test.js
├── package.json
├── mcp.json              # MCP Inspector config
├── .env.example          # Environment template
├── LICENSE               # MIT license
└── README.md             # Documentation

🔒 安全最佳实践

  1. API密钥管理

    • 永远不要将API密钥提交到版本控制
    • 使用环境变量或安全密钥管理
    • 定期旋转API键
    • 尽可能使用最少特权的API密钥
  2. 数据保护

    • 根据隐私法规(GDPR、CCPA)处理用户数据
    • 实施适当的同意管理
    • 仅使用安全连接(HTTPS)
  3. 速率限制

    • 遵守Drip的API限制(3600次请求/小时)
    • 实现重试的指数回退
    • 监控API使用情况以避免违反限制

🐛 故障排除

常见问题

身份验证错误(401)

  • 原因:API密钥或帐户ID无效
  • 解决方案:验证Drip设置和环境变量中的凭据

权限错误(403)

  • 原因:API密钥缺少所需的权限
  • 解决方案:检查Drip帐户设置中的API密钥权限

速率限制(429)

  • 原因:超过API费率限制
  • 解决方案:服务器自动重试并回退;如果持续存在,则降低请求频率

现场测绘问题

  • 原因:字段放置不正确(标准与自定义)
  • 解决方案:服务器自动处理;检查字段名称是否与滴水配置匹配

调试模式

启用详细日志记录:

DEBUG=* npm start

📚 API文档

字段类型

标准字段(根级别)

  • email (必填)
  • first_name
  • last_name
  • user_id
  • time_zone
  • eu_consent
  • eu_consent_message

自定义字段(嵌套)

所有其他字段都会自动放置在 custom_fields:

  • company
  • phone
  • address1, address2
  • city, state, zip, country
  • 任何自定义数据字段

速率限制

操作类型 限制 窗口
个人请求 3600 每小时
批量操作 50000 每小时
并发请求 50 同时

错误响应

状态代码 描述 所需操作
401 未经授权 检查API凭据
403 禁止 验证权限
422 验证错误 修复请求参数
429 速率受限 等待并重试
500 服务器错误 如果持续存在,请联系支持人员

❓ 常见问题

我可以通过API创建广播吗?

不,Drip API提供对广播的只读访问。使用Drip web界面创建广播。

如何处理欧盟同意?

使用 eu_consent 具有值的字段: granted, denied,或 pending.包括 eu_consent_message 用于审计跟踪。

活动和工作流之间有什么区别?

  • 活动:定时电子邮件系列
  • 工作流:由事件或条件触发的自动序列

我可以批量删除订阅者吗?

不,为了数据安全,Drip需要单独删除。使用 drip_delete_subscriber 对于每个订阅者。

我如何追踪收入?

使用 drip_record_purchase 随着 value 以美分为单位的字段(例如。, 9999 99.99美元)。

🤝 贡献

我们欢迎捐款!请遵循以下指南:

  1. 分叉存储库 并创建一个特征分支
  2. 编写测试 对于新功能
  3. 遵循代码风格 (ESM、异步/等待、明确命名)
  4. 更新文档 API变更
  5. 提交拉取请求 描述清晰

开发指南

  • 将Node.js 20+与ES模块一起使用
  • 保持测试覆盖率在80%以上
  • 遵循语义版本控制
  • 编写描述性提交消息
  • 尽量减少依赖关系

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🆘 支持

对于此MCP服务器

用于滴漏API

对于MCP协议

🙏 致谢


由以下材料制成❤️ 通过GravityKit