Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OneSignal MCP Serversend a push notification to all iOS users about our new feature launch"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OneSignal MCP Server
A comprehensive Model Context Protocol (MCP) server for OneSignal push notifications, email, SMS, and user management. Enables AI assistants to interact with OneSignal through natural language.
Features
50+ tools for complete OneSignal API coverage
Multi-channel messaging: Push notifications, email, SMS/MMS
User management: Create, update, delete users and subscriptions
Segmentation: Dynamic targeting with filters and segments
Templates: Reusable message templates
iOS Live Activities: Start, update, and end Live Activities
Analytics: View outcomes, export data, track custom events
Multi-app support: Manage multiple OneSignal apps
Quick Start
Prerequisites
Python 3.10+
uv package manager (recommended) or pip
OneSignal account with API credentials
Installation
git clone https://github.com/chansearrington/onesignal-mcp.git
cd onesignal-mcpGet Your OneSignal Credentials
Log in to your OneSignal Dashboard
Go to Settings > Keys & IDs
Copy your App ID and REST API Key (format:
os_v2_app_xxxxx)(Optional) For org-level operations, get your Organization API Key from Organization Settings > API Keys
Client Setup
Claude Desktop
Add to your ~/.claude.json:
{
"mcpServers": {
"onesignal": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with", "mcp",
"--with", "python-dotenv",
"--with", "requests",
"/path/to/onesignal-mcp/onesignal_server.py"
],
"env": {
"ONESIGNAL_APP_ID": "your-app-id",
"ONESIGNAL_API_KEY": "os_v2_app_your-api-key"
}
}
}
}Claude Code (CLI)
Add to your ~/.claude/settings.json:
{
"mcpServers": {
"onesignal": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--with", "mcp",
"--with", "python-dotenv",
"--with", "requests",
"/path/to/onesignal-mcp/onesignal_server.py"
],
"env": {
"ONESIGNAL_APP_ID": "your-app-id",
"ONESIGNAL_API_KEY": "os_v2_app_your-api-key"
}
}
}
}Cursor
Add to your .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"onesignal": {
"command": "uv",
"args": [
"run",
"--with", "mcp",
"--with", "python-dotenv",
"--with", "requests",
"/path/to/onesignal-mcp/onesignal_server.py"
],
"env": {
"ONESIGNAL_APP_ID": "your-app-id",
"ONESIGNAL_API_KEY": "os_v2_app_your-api-key"
}
}
}
}VS Code (with Continue or GitHub Copilot)
Add to your .vscode/mcp.json:
{
"mcpServers": {
"onesignal": {
"command": "uv",
"args": [
"run",
"--with", "mcp",
"--with", "python-dotenv",
"--with", "requests",
"${workspaceFolder}/onesignal_server.py"
],
"env": {
"ONESIGNAL_APP_ID": "your-app-id",
"ONESIGNAL_API_KEY": "os_v2_app_your-api-key"
}
}
}
}Alternative: Using .env File
Instead of setting credentials in the config, create a .env file:
cp .env.example .env
# Edit .env with your credentialsThen simplify your MCP config:
{
"mcpServers": {
"onesignal": {
"command": "uv",
"args": ["run", "--with", "mcp", "--with", "python-dotenv", "--with", "requests", "/path/to/onesignal_server.py"],
"cwd": "/path/to/onesignal-mcp"
}
}
}Available Tools
Messaging
Tool | Description |
| Send basic push notification |
| Push with scheduling, images, buttons, filters |
| Send basic email |
| Email with HTML, scheduling, custom sender |
| Send SMS/MMS |
| SMS with scheduling, media, filters |
| Immediate transactional message |
Message Management
Tool | Description |
| List recent messages |
| Get message details |
| View delivery/click history |
| Cancel scheduled message |
| Export engagement CSV |
Users & Subscriptions
Tool | Description |
| Create user with identity |
| Get user details |
| Update user tags/properties |
| Delete user |
| Add email/SMS/push subscription |
| Enable/disable subscription |
| Remove subscription |
| Move to another user |
Segments & Templates
Tool | Description |
| List segments |
| Create segment with filters |
| Delete segment |
| List templates |
| Create template |
| Update template |
| Delete template |
iOS Live Activities
Tool | Description |
| Start Live Activity |
| Start with full options |
| Update running activity |
| End activity |
Analytics & Events
Tool | Description |
| View click/conversion metrics |
| Track user events for Journeys |
| Export message data |
App Management
Tool | Description |
| List configured apps |
| Switch current app |
| Add app configuration |
| Get app info |
| List API keys |
| Create new API key |
| Rotate API key |
Usage Examples
Send a Push Notification
"Send a push notification with title 'Hello!' and message 'Welcome to our app'"Target Specific Users
"Send a push notification to users with external_id user_123 and user_456"Schedule a Message
"Send a push notification tomorrow at 9am saying 'Good morning!' to the Daily Digest segment"Create a User
"Create a user with external_id 'customer_789', email 'user@example.com', and tags plan=premium, signup_date=2024-01-15"Track Events
"Track a purchase event for user customer_789 with amount 99.99 and product_id SKU-123"Configuration Options
Variable | Required | Description |
| Yes | Your OneSignal App ID |
| Yes | REST API Key (format: |
| No | Organization API Key for org-level operations |
| No | Logging level (DEBUG, INFO, WARNING, ERROR) |
Troubleshooting
"No app currently selected"
Make sure your ONESIGNAL_APP_ID and ONESIGNAL_API_KEY are set correctly.
"Organization API Key not configured"
Some operations (like view_apps, create_app_api_key) require the ONESIGNAL_ORG_API_KEY.
API Errors
Verify your API key format starts with
os_v2_app_oros_v2_org_Check that your API key has the necessary permissions in OneSignal dashboard
Ensure your App ID is correct (UUID format)
Credits
This project is based on WeirdBrains/onesignal-mcp. Special thanks for the original implementation.
License
MIT License - see LICENSE file for details.