A Model Context Protocol (MCP) server that connects to Bark, a notification server for iOS. This allows LLM applications to send notifications to iOS devices through the MCP standard.
- Simple MCP server implementation using FastMCP
- Single tool:
notify
to send notifications to iOS devices - Configurable via environment variables
- Easy to use command-line interface
# Install from PyPI
pip install bark-mcp
# Or install from source
git clone https://github.com/yourusername/bark-mcp.git
cd bark-mcp
pip install -e .
The server requires the following environment variables:
BARK_SERVER_URL
: URL of the Bark server (e.g.,https://api.day.app
)BARK_API_KEY
: Your Bark API key/device key
You can set these variables in your environment or create a .env
file:
BARK_SERVER_URL=https://api.day.app
BARK_API_KEY=your_api_key_here
The server uses the Bark API with the following URL formats:
GET /{bark-key}/{title}/{content}?url={url}
(when title and URL are provided)GET /{bark-key}/{title}/{content}
(when only title is provided)GET /{bark-key}/{content}
(when only content is provided)
Start the MCP server using either of these commands:
# Using the standard command (after installing the package)
bark-mcp
# Using uvx (runs without installing the package)
uvx bark-mcp
Both commands support the same options:
# Specify a .env file
bark-mcp --env-file /path/to/.env
# or
uvx bark-mcp --env-file /path/to/.env
# Enable debug logging
bark-mcp --debug
# or
uvx bark-mcp --debug
Note:
uvx
is a command from theuv
package manager that runs Python tools in temporary, isolated environments without installing them permanently. Install it withpip install uv
.Important: Make sure to use
uvx bark-mcp
with a hyphen, notuvx bark_mcp
with an underscore. The command name must match the entry point defined in the package.
The server provides a single tool:
notify
: Send a notification to an iOS device- Parameters:
title
(optional): Title of the notificationcontent
(required): Content of the notificationurl
(optional): URL to open when the notification is tapped
- Parameters:
Example usage in an MCP client:
# This would be handled by the MCP client
result = await call_tool("notify", {
"title": "Hello from MCP",
"content": "This is a notification sent via MCP",
"url": "https://example.com"
})
- Python 3.8+
- FastMCP
- Requests
- Python-dotenv
# TODO: Add testing instructions
If you see an error like:
The executable `bark_mcp` was not found.
warning: An executable named `bark_mcp` is not provided by package `bark-mcp`.
Make sure you're using the correct command name: bark-mcp
with a hyphen, not bark_mcp
with an underscore.
If you see errors about missing environment variables:
BARK_SERVER_URL environment variable is required
Make sure to:
- Create a
.env
file based on the.env.example
template - Set the required environment variables in your shell or use the
--env-file
option
This project is licensed under the MIT License - see the LICENSE file for details.