Skip to main content
Glama
Cronlytic

Cronlytic MCP Server

Official
by Cronlytic
README.md
# Cronlytic MCP Server

**šŸŽ‰ PROJECT COMPLETED - PRODUCTION READY šŸŽ‰**

A comprehensive Model Context Protocol (MCP) server that integrates with the Cronlytic API to provide seamless cron job management through LLM applications like Claude Desktop.

**Final Status**: āœ… All 6 phases complete | 88/88 tests passing | Production documentation ready

## Overview

The Cronlytic MCP Server enables AI agents and LLM applications to:

- šŸ” **Health Check**: Test connectivity and authentication with the Cronlytic API āœ…
- šŸ“Š **Job Management**: Create, read, update, and delete cron jobs āœ…
- āÆļø **Job Control**: Pause, resume, and monitor job execution āœ…
- šŸ“ **Logs & Monitoring**: Access execution logs and performance metrics āœ…
- šŸ¤– **Smart Prompts**: 18 comprehensive prompts for guided assistance āœ…
- šŸ“š **Resources**: Dynamic job resources and cron templates āœ…
- ⚔ **Performance**: Built-in monitoring and optimization āœ…

## šŸ† Project Status: ALL PHASES COMPLETED āœ…

**šŸŽÆ Final Achievement Summary:**
- āœ… **Phase 1**: Core infrastructure and authentication
- āœ… **Phase 2**: Basic CRUD operations (13 tests)
- āœ… **Phase 3**: Advanced job management (22 tests)
- āœ… **Phase 4**: Resources implementation (14 tests)
- āœ… **Phase 5**: Prompts & UX (39 tests)
- āœ… **Phase 6**: Testing & documentation (performance monitoring)

**šŸ“Š Key Metrics:**
- **88/88 Tests Passing** (100% success rate)
- **18 Interactive Prompts** (225% of original scope)
- **9 Comprehensive Tools** (Full job lifecycle)
- **Complete Documentation Suite** (8 detailed guides)
- **Production Ready** (Multi-platform deployment support)

## Installation

### Prerequisites

- Python 3.8 or higher
- Cronlytic account with API access

### Install from Source

#### Quick Setup (Recommended)

```bash
# Clone the repository
git clone https://github.com/Cronlytic/cronlytic-mcp-server.git
cd cronlytic-mcp-server

# Run the setup script (creates venv and installs everything)
./setup_dev_env.sh

# Activate the virtual environment
source venv/bin/activate
```

#### Manual Setup

```bash
# Clone the repository
git clone https://github.com/Cronlytic/cronlytic-mcp-server.git
cd cronlytic-mcp-server

# Create virtual environment
python3 -m venv venv
source venv/bin/activate

# Upgrade pip
pip install --upgrade pip

# Install dependencies
pip install -r requirements.txt

# Install development dependencies (optional)
pip install -r requirements-dev.txt

# Install in development mode
pip install -e .
```

## Configuration

The server needs your Cronlytic API credentials to function. You can provide these in several ways:

### Method 1: Environment Variables (Recommended)

```bash
export CRONLYTIC_API_KEY="your_api_key_here"
export CRONLYTIC_USER_ID="your_user_id_here"
```

### Method 2: Configuration File

Create a configuration file at one of these locations:
- `./cronlytic_config.json` (current directory)
- `~/.cronlytic/config.json` (user home directory)
- `/etc/cronlytic/config.json` (system-wide)

```json
{
  "api_key": "your_cronlytic_api_key_here",
  "user_id": "your_cronlytic_user_id_here",
  "base_url": "https://api.cronlytic.com/prog",
  "timeout": 30,
  "max_retries": 3,
  "retry_delay": 1.0
}
```

### Method 3: Command Line Arguments

```bash
python -m cronlytic_mcp_server.server --api-key "your_key" --user-id "your_id"
```

### Getting API Keys

1. Log into your [Cronlytic dashboard](https://cronlytic.com)
2. Navigate to "API Keys" section
3. Click "Generate New API Key"
4. Copy your API key and User ID

## Usage

### Running the Server

```bash
# Basic usage (reads from environment variables or config file)
python -m cronlytic_mcp_server.server

# With command line arguments
python -m cronlytic_mcp_server.server --api-key "your_key" --user-id "your_id"

# With debug logging
python -m cronlytic_mcp_server.server --debug

# With custom config file
python -m cronlytic_mcp_server.server --config /path/to/config.json
```

### Available Tools (Phase 1)

#### Health Check

Test connectivity and authentication with the Cronlytic API:

```python
# The health_check tool requires no parameters
# It will test:
# - API connectivity
# - Authentication validity
# - Response times
# - Basic functionality
```

**Example Output:**
```
# Cronlytic API Health Check

**Status:** āœ… Cronlytic API connection is healthy and working correctly
**Timestamp:** 2025-01-27T10:30:00Z
**Response Time:** 150 ms

## Connection Details
- **Base URL:** https://api.cronlytic.com/prog
- **Connectivity:** āœ…
- **Authentication:** āœ…

## Job Information
- **Job Count:** 3
- **Can List Jobs:** āœ…

## Performance
- **Performance Rating:** Good

## Recommendations
- šŸ’” Found 3 job(s). All systems appear to be working correctly.
```

### Claude Desktop Integration

To use with Claude Desktop, add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "cronlytic": {
      "command": "python",
      "args": ["-m", "cronlytic_mcp_server.server"],
      "env": {
        "CRONLYTIC_API_KEY": "your_api_key_here",
        "CRONLYTIC_USER_ID": "your_user_id_here"
      }
    }
  }
}
```

To run virtual environment of python
```json
{
  "mcpServers": {
          "cronlytic": {
        "command": "python",
        "args": ["-m", "src.server"],
        "cwd": "PATH/cronlytic-mcp-server",
        "env": {
          "VIRTUAL_ENV": "PATH/cronlytic-mcp-server/.venv",
          "PATH": "PATH/cronlytic-mcp-server/.venv/bin:${PATH}",
          "CRONLYTIC_API_KEY": "your_api_key_here",
          "CRONLYTIC_USER_ID": "your_user_id_here"
        }
      }
  }
}
```

## Development

### Project Structure

```
cronlytic-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ __init__.py              # Package initialization
│   ā”œā”€ā”€ server.py                # Main MCP server implementation
│   ā”œā”€ā”€ cronlytic_client.py      # Cronlytic API client wrapper
│   ā”œā”€ā”€ tools/                   # Tool implementations
│   │   ā”œā”€ā”€ __init__.py
│   │   └── health_check.py      # Health check tool
│   ā”œā”€ā”€ resources/               # Resource implementations (Phase 4)
│   ā”œā”€ā”€ prompts/                 # Prompt implementations (Phase 5)
│   └── utils/                   # Utility modules
│       ā”œā”€ā”€ __init__.py
│       ā”œā”€ā”€ auth.py              # Authentication handling
│       ā”œā”€ā”€ errors.py            # Custom error classes
│       └── validation.py        # Input validation
ā”œā”€ā”€ tests/                       # Test files (Phase 6)
ā”œā”€ā”€ config/
│   └── example_config.json      # Example configuration
ā”œā”€ā”€ requirements.txt
ā”œā”€ā”€ pyproject.toml
└── README.md
```

### Running in Development Mode

```bash
# Activate virtual environment (if not already active)
source venv/bin/activate

# Install in development mode (if not already done)
pip install -e .

# Set environment variables for testing
export CRONLYTIC_API_KEY="your_test_key"
export CRONLYTIC_USER_ID="your_test_user_id"

# Run with debug logging
python -m cronlytic_mcp_server.server --debug

# Run validation tests
python validate_phase1.py

# Format code (if you have development dependencies)
black src/
ruff check src/

# Type checking
mypy src/
```

### Testing with MCP Inspector

```bash
# Install MCP Inspector
npm install -g @modelcontextprotocol/inspector

# Test the server
mcp-inspector python -m cronlytic_mcp_server.server
```

## Error Handling

The server provides comprehensive error handling:

- **Authentication Errors**: Clear guidance on credential issues
- **Connection Errors**: Network and connectivity diagnostics
- **Validation Errors**: Detailed field-by-field validation messages
- **API Errors**: Proper error codes and user-friendly messages
- **Rate Limiting**: Automatic retry with exponential backoff

## Logging

Structured logging is provided at multiple levels:

```bash
# Normal operation
2025-01-27 10:30:00 - cronlytic_mcp_server.server - INFO - Cronlytic MCP Server initialized

# Debug mode
python -m cronlytic_mcp_server.server --debug
```

## Roadmap

### Phase 2: Basic CRUD Operations (Next)
- `create_job` - Create new cron jobs
- `list_jobs` - List all user jobs
- `get_job` - Get specific job details
- `update_job` - Update existing jobs
- `delete_job` - Delete jobs permanently

### Phase 3: Advanced Job Management
- `pause_job` - Pause job execution
- `resume_job` - Resume paused jobs
- `get_job_logs` - Retrieve execution logs

### Phase 4: Resources Implementation
- Dynamic job resources
- Cron template library
- Real-time resource updates

### Phase 5: Prompts & UX
- Interactive job creation flows
- Monitoring and troubleshooting guidance
- User experience optimization

### Phase 6: Testing & Documentation
- Comprehensive test suite
- Performance optimization
- Complete documentation

## Contributing

This project follows a structured development approach with clearly defined phases. Each phase builds upon the previous one to ensure stability and maintainability.

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests (Phase 6)
5. Submit a pull request

## License

MIT License - see LICENSE file for details.

## Support

- **Documentation**: See `docs/` directory for detailed specifications
- **Issues**: Report bugs and feature requests on GitHub
- **API Reference**: Check `docs/cronlytic-API-specification.md`

## Related Projects

- [Cronlytic](https://cronlytic.com) - The cron job monitoring service
- [Model Context Protocol](https://modelcontextprotocol.io) - The open protocol for AI integration
- [Claude Desktop](https://claude.ai) - AI assistant with MCP support

---

**Current Version:** 0.1.0
**Last Updated:** Jun 2025