OneSignal MCP Server

OneSignal MCP Server

一个模型上下文协议服务器,它封装了 OneSignal REST API,从而能够跨多个 OneSignal 应用程序管理推送通知、电子邮件、短信、用户设备和用户分群。

Category
访问服务器

README

OneSignal MCP 服务器

一个用于与 OneSignal API 交互的模型上下文协议 (MCP) 服务器。该服务器提供了一个方便的接口,用于通过 OneSignal 的 REST API 管理推送通知、电子邮件、短信、用户设备、细分、模板等。

License: MIT Version

概述

此 MCP 服务器包装了 OneSignal REST API,提供了一组工具来管理您的 OneSignal 应用程序并向您的用户发送消息。它支持所有主要的 OneSignal 操作,包括:

  • 发送推送通知、电子邮件和短信
  • 管理用户设备和订阅
  • 创建和管理细分
  • 创建和管理模板
  • 查看应用程序信息和分析
  • 组织级别操作
  • 管理多个 OneSignal 应用程序

要求

  • Python 3.7 或更高版本
  • python-dotenv
  • requests
  • 具有 API 凭据的 OneSignal 帐户

安装

选项 1:从 GitHub 克隆

# 克隆存储库
git clone https://github.com/weirdbrains/onesignal-mcp.git
cd onesignal-mcp

# 安装依赖项
pip install -r requirements.txt

选项 2:作为包安装(即将推出)

pip install onesignal-mcp

配置

  1. 在根目录中创建一个 .env 文件,其中包含您的 OneSignal 凭据:

    # 默认应用程序凭据(可选,您也可以通过 API 添加应用程序)
    ONESIGNAL_APP_ID=your_app_id_here
    ONESIGNAL_API_KEY=your_rest_api_key_here
    
    # 组织 API 密钥(用于组织级别操作)
    ONESIGNAL_ORG_API_KEY=your_organization_api_key_here
    
  2. 您可以在 OneSignal 仪表板中找到您的 OneSignal 凭据:

    • 应用程序 ID:设置 > 密钥和 ID > OneSignal 应用程序 ID
    • REST API 密钥:设置 > 密钥和 ID > REST API 密钥
    • 组织 API 密钥:组织设置 > API 密钥

用法

运行服务器

python onesignal_server.py

服务器将启动并向 MCP 系统注册自身,使其工具可供使用。

基本用法示例

发送推送通知

# 向所有订阅用户发送通知
result = await send_notification(
    title="Hello World",
    message="This is a test notification",
    segment="Subscribed Users"
)
print(result)

使用多个应用程序

# 添加新的应用程序配置
await add_app(
    key="my_second_app", 
    app_id="second-app-id", 
    api_key="second-app-api-key", 
    name="My Second App"
)

# 列出所有已配置的应用程序
apps = await list_apps()
print(apps)

# 切换到新应用程序
await switch_app("my_second_app")

# 使用当前应用程序发送通知
await send_notification(
    title="Hello", 
    message="This is from my second app"
)

# 从特定应用程序发送通知(无需切换)
await send_notification(
    title="Hello", 
    message="This is from my first app", 
    app_key="mandible"
)

管理细分

# 列出所有细分
segments = await view_segments()
print(segments)

# 创建新的细分
result = await create_segment(
    name="High Value Users",
    filters='[{"field":"amount_spent", "relation":">", "value":"100"}]'
)
print(result)

使用模板

# 创建电子邮件模板
result = await create_template(
    name="Welcome Email",
    title="Welcome to Our App",
    message="<html><body><h1>Welcome!</h1><p>Thank you for joining us.</p></body></html>",
    template_type="email"
)
print(result)

多应用支持

此服务器支持管理多个 OneSignal 应用程序。 您可以:

  1. 添加具有不同标识符的多个应用程序配置
  2. 在进行 API 调用时在应用程序之间切换
  3. 指定要用于单个操作的应用程序

应用程序管理工具

  • list_apps:列出服务器中所有已配置的 OneSignal 应用程序
  • add_app:添加新的 OneSignal 应用程序配置
  • update_app:更新现有的 OneSignal 应用程序配置
  • remove_app:删除 OneSignal 应用程序配置
  • switch_app:切换当前应用程序以用于 API 请求

可用工具

消息管理

  • send_notification:发送新的推送通知、电子邮件或短信
  • view_messages:列出通过 OneSignal 发送的最近消息
  • view_message_details:获取有关特定消息的详细信息
  • cancel_message:取消计划的消息

设备管理

  • view_devices:列出在您的 OneSignal 应用程序中注册的设备(用户)
  • view_device_details:获取有关特定设备的详细信息

细分管理

  • view_segments:列出您的 OneSignal 应用程序中所有可用的细分
  • create_segment:使用指定的过滤器创建新的细分
  • delete_segment:删除现有的细分

模板管理

  • view_templates:列出您的 OneSignal 应用程序中所有可用的模板
  • view_template_details:获取有关特定模板的详细信息
  • create_template:为通知或电子邮件创建新的模板

应用程序信息

  • view_app_details:获取有关已配置的 OneSignal 应用程序的详细信息

日志记录

服务器包括全面的日志记录,以帮助进行调试和监控。 默认情况下,日志输出到控制台,格式如下:

YYYY-MM-DD HH:MM:SS - onesignal-mcp - LEVEL - Message

您可以通过修改服务器文件中的 logging.basicConfig 调用来调整日志记录级别。

测试

OneSignal MCP 服务器包含一个全面的测试套件,以确保所有功能都能按预期工作。 这些测试使用 Python 的内置 unittest 框架并模拟外部 API 调用来测试服务器的行为。

运行测试

要运行测试,请使用以下命令:

python -m unittest discover tests

这将发现并运行 tests 目录中的所有测试。

测试覆盖率

测试套件涵盖:

  • 应用程序配置管理
  • 使用适当的身份验证处理 API 请求
  • 错误处理和恢复
  • 多应用支持
  • 组织级别操作

编写新测试

如果您向服务器添加新功能,请同时添加相应的测试。 测试应放置在 tests 目录中,并遵循命名约定 test_*.py

故障排除

常见问题

没有可用的应用程序配置

如果您看到错误“No app configuration available”,请确保您:

  1. 使用正确的凭据设置了您的 .env 文件,或者
  2. 使用 add_app 工具添加了应用程序配置

API 密钥错误

如果您收到身份验证错误,请验证:

  1. 您的 API 密钥是否正确
  2. 您是否为操作使用了正确的密钥(REST API 密钥与组织 API 密钥)
  3. 密钥在 OneSignal 中是否具有必要的权限

速率限制

OneSignal 对 API 请求有速率限制。 如果您遇到速率限制:

  1. 降低请求的频率
  2. 使用指数退避实现重试逻辑

获得帮助

如果您遇到此处未涵盖的问题:

  1. 查看 OneSignal API 文档
  2. 在 GitHub 存储库上打开一个 issue

贡献

我们欢迎您为改进 OneSignal MCP 服务器做出贡献! 请参阅 CONTRIBUTING.md 了解指南。

许可证

本项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

  • OneSignal 感谢他们出色的通知服务和 API
  • 感谢 Weirdbrains 团队对该项目的支持

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选