jons-mcp-pushover

jonmmease/jons-mcp-pushover

3.3

If you are the rightful owner of jons-mcp-pushover and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

Jon's Pushover MCP Server is designed to facilitate sending push notifications through the Pushover service using a Model Context Protocol (MCP) server.

Tools
1
Resources
0
Prompts
0

Jon's Pushover MCP Server

An MCP server for sending push notifications via Pushover.

Requirements

  • Python 3.10+
  • Pushover account with API token and user key

Environment Variables

VariableRequiredDescription
PUSHOVER_API_TOKENYesApplication API token from https://pushover.net/apps
PUSHOVER_USER_KEYYesUser key from https://pushover.net

Installation

# Clone the repository
git clone <your-repo-url>
cd jons-mcp-pushover

# Install with uv
uv pip install -e .

Running the Server

uv run jons-mcp-pushover

Claude Desktop Configuration

Add this to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "pushover": {
      "command": "uv",
      "args": ["run", "--project", "/path/to/jons-mcp-pushover", "jons-mcp-pushover"],
      "env": {
        "PUSHOVER_API_TOKEN": "your-api-token-here",
        "PUSHOVER_USER_KEY": "your-user-key-here"
      }
    }
  }
}

Adding to Claude Code

# Register the MCP server with Claude Code
claude mcp add jons-mcp-pushover \
  -e PUSHOVER_API_TOKEN=your-api-token-here \
  -e PUSHOVER_USER_KEY=your-user-key-here \
  -- uv run --directory /path/to/jons-mcp-pushover jons-mcp-pushover

Available Tools

send_notification

Send a push notification to your devices.

ParameterTypeRequiredDefaultDescription
messagestringYes-The notification message body
titlestringNoApp nameTitle shown at top of notification
urlstringNo-URL to include (tappable in notification)
url_titlestringNo-Label for the URL
priorityintegerNo0Priority: -2 (silent) to 2 (emergency)
soundstringNodevice defaultNotification sound name

Example:

send_notification(
    message="Build completed successfully!",
    title="CI Pipeline",
    url="https://github.com/user/repo/actions",
    url_title="View Build",
    priority=1,
    sound="magic"
)

Development

Setup

# Install with dev dependencies
uv pip install -e ".[dev]"

Running Tests

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=src

# Run a specific test
uv run pytest tests/test_pushover.py::test_send_notification_success

Code Quality

# Type check
uv run mypy src/jons_mcp_pushover

# Format code
uv run black src tests

# Lint code
uv run ruff check src tests

Project Structure

jons-mcp-pushover/
├── src/
│   ├── __init__.py
│   └── jons_mcp_pushover/
│       ├── __init__.py          # Package exports
│       ├── constants.py         # Configuration constants
│       ├── exceptions.py        # Custom exceptions
│       ├── utils.py             # Utility functions
│       ├── server.py            # FastMCP server setup
│       └── tools/
│           ├── __init__.py      # Tool exports
│           └── pushover.py      # Pushover notification tool
├── tests/
│   ├── conftest.py              # Test fixtures
│   └── test_pushover.py         # Pushover tool tests
├── pyproject.toml               # Project configuration
├── CLAUDE.md                    # AI assistant guidance
└── README.md                    # This file

Adding New Tools

  1. Create a new file in src/jons_mcp_pushover/tools/ or add to an existing file
  2. Write an async function with type hints and a docstring:
    async def my_tool(param: str) -> str:
        """Brief description for the MCP tool listing.
    
        Args:
            param: What this parameter does.
    
        Returns:
            What the tool returns.
        """
        return f"Result: {param}"
    
  3. Export from src/jons_mcp_pushover/tools/__init__.py
  4. Register in server.py with mcp.tool(my_tool)

License

MIT