ry-ops/pulseway-rmm-a2a-mcp-server
If you are the rightful owner of pulseway-rmm-a2a-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Pulseway MCP Server integrates with the Pulseway RMM API, enabling AI assistants to interact with Pulseway's monitoring and management capabilities.
Pulseway MCP Server
A Model Context Protocol (MCP) server that provides integration with the Pulseway RMM (Remote Monitoring and Management) API. This server enables AI assistants to interact with Pulseway's monitoring and management capabilities.
Features
- š„ļø System Management: List and query managed systems
- š Monitoring: Retrieve system status, metrics, and notifications
- š Notifications: Get system alerts and notifications
- š¢ Organization Management: List and manage organizations
- š Secure Authentication: Token-based authentication with Pulseway API
Installation
Using uv
(Recommended)
# Clone the repository
git clone https://github.com/yourusername/pulseway-mcp-server.git
cd pulseway-mcp-server
# Install using uv
uv pip install -e .
Using pip
pip install pulseway-mcp-server
Configuration
Environment Variables
Create a .env
file in your project root or set the following environment variables:
PULSEWAY_SERVER_URL=https://your-instance.pulseway.com
PULSEWAY_TOKEN_ID=your_token_id
PULSEWAY_TOKEN_SECRET=your_token_secret
Obtaining Pulseway API Credentials
- Log in to your Pulseway instance
- Navigate to Administration ā Configuration ā API Access
- Click Create Token
- Enter a name and optional description
- Set token validity dates
- Choose access level (All Companies or Select Organizations)
- Copy the Token ID and Token Secret
Usage
With Claude Desktop
Add this to your claude_desktop_config.json
:
{
"mcpServers": {
"pulseway": {
"command": "uv",
"args": [
"--directory",
"/path/to/pulseway-mcp-server",
"run",
"pulseway-mcp-server"
],
"env": {
"PULSEWAY_SERVER_URL": "https://your-instance.pulseway.com",
"PULSEWAY_TOKEN_ID": "your_token_id",
"PULSEWAY_TOKEN_SECRET": "your_token_secret"
}
}
}
}
Standalone
# Run the server
uv run pulseway-mcp-server
# Or with environment variables
PULSEWAY_SERVER_URL=https://your-instance.pulseway.com \
PULSEWAY_TOKEN_ID=your_token_id \
PULSEWAY_TOKEN_SECRET=your_token_secret \
uv run pulseway-mcp-server
Available Tools
1. list_systems
Lists all systems managed by Pulseway.
Parameters:
organization_id
(optional): Filter by organization IDonline_only
(optional): Show only online systems
Example:
{
"organization_id": "12345",
"online_only": true
}
2. get_system_details
Get detailed information about a specific system.
Parameters:
system_id
(required): The system ID
Example:
{
"system_id": "abc123"
}
3. get_system_notifications
Retrieve notifications for a specific system.
Parameters:
system_id
(required): The system IDstatus
(optional): Filter by status (active, acknowledged, resolved)
Example:
{
"system_id": "abc123",
"status": "active"
}
4. list_organizations
List all organizations in your Pulseway account.
Example:
{}
5. get_system_metrics
Get performance metrics for a system.
Parameters:
system_id
(required): The system IDmetric_type
(optional): Type of metric (cpu, memory, disk, network)
Example:
{
"system_id": "abc123",
"metric_type": "cpu"
}
Resources
The server provides access to Pulseway documentation and system information through MCP resources:
pulseway://docs/api
- Pulseway API documentationpulseway://systems
- List of managed systems
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/yourusername/pulseway-mcp-server.git
cd pulseway-mcp-server
# Install development dependencies
uv pip install -e ".[dev]"
Running Tests
# Run tests
uv run pytest
# Run tests with coverage
uv run pytest --cov=pulseway_mcp --cov-report=html
Code Quality
# Format code
uv run ruff format .
# Lint code
uv run ruff check .
# Type checking
uv run mypy src/pulseway_mcp
Project Structure
pulseway-mcp-server/
āāā src/
ā āāā pulseway_mcp/
ā āāā __init__.py
ā āāā server.py # Main MCP server implementation
ā āāā client.py # Pulseway API client
ā āāā models.py # Data models
āāā tests/
ā āāā __init__.py
ā āāā test_server.py
ā āāā test_client.py
āāā .github/
ā āāā workflows/
ā āāā ci.yml
āāā pyproject.toml # Project configuration
āāā README.md
āāā LICENSE
āāā .gitignore
API Rate Limits
The Pulseway API has rate limits:
- Default: 1500 requests per hour per endpoint
- Consider implementing caching for frequently accessed data
Security Best Practices
- Never commit credentials: Use environment variables or secure vaults
- Token rotation: Regularly rotate your API tokens
- Minimal permissions: Use tokens with the minimum required permissions
- Secure storage: Store credentials securely in production
Troubleshooting
Connection Issues
If you're having trouble connecting:
- Verify your server URL is correct
- Check that your token ID and secret are valid
- Ensure your IP is whitelisted (if configured in Pulseway)
- Check firewall rules
Authentication Errors
Error: Unauthorized (401)
- Verify your token ID and secret are correct
- Check that the token hasn't expired
- Ensure the token has appropriate permissions
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
License
This project is licensed under the MIT License - see the file for details.
Links
Support
For issues and questions:
- Open an issue on GitHub
- Check the Pulseway Help Center
Acknowledgments
- Built with the Model Context Protocol SDK
- Powered by Pulseway RMM API