A comprehensive FastMCP server for integrating with the RescueTime API, providing tools to access productivity data, manage focus sessions, and interact with all RescueTime features through the Model Context Protocol (MCP).
Follow these steps in order to get RescueTime MCP working with Claude Desktop:
- Log in to your RescueTime account
- Go to https://www.rescuetime.com/anapi/manage
- Generate or copy your existing API key (you'll need this for Step 3)
# Clone the repository
git clone https://github.com/ebowman/rescuetime-mcp.git
cd rescuetime-mcp
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install the package in editable mode
pip install -e .Create a .env file in the project root with your API key:
echo "RESCUETIME_API_KEY=your_api_key_here" > .envReplace your_api_key_here with your actual RescueTime API key from Step 1.
# Get the full path to your installation (you'll need this for Step 5)
pwd
# This will output something like: /Users/yourname/projects/rescuetime-mcpOpen your Claude Desktop configuration file:
open ~/Library/Application\ Support/Claude/claude_desktop_config.jsonAdd this configuration, replacing /path/from/step4 with your actual path:
{
"mcpServers": {
"rescuetime": {
"command": "/path/from/step4/venv/bin/python",
"args": ["-m", "rescuetime_mcp.server"]
}
}
}For example, if your path from Step 4 was /Users/john/projects/rescuetime-mcp, your config would look like:
{
"mcpServers": {
"rescuetime": {
"command": "/Users/john/projects/rescuetime-mcp/venv/bin/python",
"args": ["-m", "rescuetime_mcp.server"]
}
}
}Quit Claude Desktop completely and restart it.
In Claude Desktop, try asking:
- "Check my RescueTime productivity data for today"
- "Start a 25-minute focus session"
- "Show me my daily productivity summary"
If Claude can access your RescueTime data, you're all set!
Once configured, you can ask Claude to:
- Get productivity data: "Show me my RescueTime data for the last week"
- Daily summaries: "Get my daily productivity summary" (Note: Has ~24 hour delay, returns previous days only)
- Manage alerts: "Show me my RescueTime alerts"
- Create highlights: "Add a highlight for completing the project presentation"
- Focus sessions: "Start a 45-minute focus session" or "End my focus session"
- Log offline time: "Log 2 hours of offline coding work"
- Check status: "Is my focus session still active?"
- Today's productivity score: "What's my productivity score today?" (Real-time data)
- Top distractions: "Show me my top distracting activities today"
- Latest daily summary: "Get the most recent daily summary" (Usually yesterday's data)
- Complete RescueTime API Coverage: Access all major RescueTime APIs including analytic data, daily summaries, alerts, highlights, focus sessions, and offline time tracking
- FastMCP Integration: Built on the FastMCP framework for robust MCP server functionality
- Async Support: Full asynchronous support for high-performance operations
- Type Safety: Comprehensive type hints and Pydantic models for data validation
- Error Handling: Robust error handling with custom exceptions and logging
While the .env file is recommended, you can also:
- Set in Claude Desktop config (if you prefer not to use .env):
{
"mcpServers": {
"rescuetime": {
"command": "/path/to/venv/bin/python",
"args": ["-m", "rescuetime_mcp.server"],
"env": {
"RESCUETIME_API_KEY": "your_api_key_here"
}
}
}
}- Use system environment variable:
export RESCUETIME_API_KEY="your_api_key_here"The steps are similar, but use:
python -m venv venvinstead ofpython3venv\Scripts\activateinstead ofsource venv/bin/activate- Config file location:
%APPDATA%\Claude\claude_desktop_config.json
# Activate virtual environment first
source venv/bin/activate
# Run all tests
pytest
# Run with coverage
pytest --cov=rescuetime_mcp --cov-report=html
# Run integration tests (requires real API key)
export RESCUETIME_API_KEY_REAL="your_real_api_key"
pytest tests/test_integration.py -m integration# Format code
black src tests
# Sort imports
isort src tests
# Lint code
ruff check src tests
# Type checking
mypy srcrescuetime-mcp/
├── src/rescuetime_mcp/
│ ├── __init__.py # Package initialization
│ ├── client.py # RescueTime API client
│ └── server.py # FastMCP server implementation
├── tests/
│ ├── conftest.py # Test configuration
│ ├── test_client.py # Client tests
│ ├── test_server.py # Server tests
│ └── test_integration.py # Integration tests
└── pyproject.toml # Project configuration
See CONTRIBUTING.md for development setup, code standards, and contribution guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright © 2025 Eric Bowman
- Built with FastMCP framework
- Uses RescueTime API
- Powered by Pydantic for data validation
- HTTP client powered by httpx
Special thanks to the FastMCP community and RescueTime for providing robust APIs.
- Documentation: This README and inline code documentation
- Bug Reports: Use GitHub Issues
- Feature Requests: Create an issue with detailed use cases
- Questions: Use GitHub Discussions
- Security: Email ebowman@boboco.ie for security-related issues
This project is actively maintained. We aim to respond to issues and pull requests promptly.
- Latest Version: v0.1.0
- Python Support: 3.9+
- Status: Beta Release
See CHANGELOG.md for detailed version history and changes.
Made with ❤️ by Eric Bowman
If this project helps you, please consider giving it a ⭐ on GitHub!