Skip to main content
Glama
sesonet

freelo-mcp-server

Official
by sesonet
README.md
# @sesonet/freelo-mcp-server

MCP (Model Context Protocol) server for [Freelo](https://www.freelo.io/) project management API.

**Key Features:**
- **33 curated tools** (reduced from 98 in original)
- **Readonly mode** by default (`--readonly` flag)
- **Audit logging** (JSONL + optional webhook)
- **All MCP clients supported** (Claude Code, Cursor, VS Code, etc.)

Fork of [karlost/FreeloMCP](https://github.com/karlost/FreeloMCP).

## Installation

> **Note:** This package is **not published to npm registry**. Install directly from GitHub.

```bash
# Install globally from GitHub
npm install -g github:sesonet/freelo-mcp-server
```

## Quick Start

```bash
# Set credentials
export FREELO_EMAIL="your@email.com"
export FREELO_API_KEY="your-api-key"

# Run in readonly mode (default)
freelo-mcp-server

# Run with all tools (including edit operations)
FREELO_READONLY=false freelo-mcp-server
```

## Documentation

- [Installation Guide](docs/INSTALLATION.md) - Detailed setup for all clients
- [Tools Reference](docs/TOOLS.md) - Complete list of available tools
- [Configuration](docs/CONFIGURATION.md) - Environment variables and options

## Tool Categories

| Category | Tools | Description |
|----------|-------|-------------|
| Projects | 4 | List, details, workers |
| Tasks | 11 | CRUD, finish, activate, templates |
| Tasklists | 2 | List, details |
| Subtasks | 2 | List, create |
| Comments | 1 | List all comments |
| Notes | 3 | Get, create, update |
| Users | 2 | List, assignable workers |
| Time Tracking | 2 | Start, stop timer |
| Work Reports | 3 | List, create, update |
| Search | 2 | Elasticsearch, custom filters |
| States | 1 | List task states |

**Total: 33 tools** (20 readonly + 13 edit)

## Modes

### Readonly Mode (Default)
```bash
FREELO_READONLY=true freelo-mcp-server
```
Only 20 read-only tools available. Safe for browsing and reporting.

### Full Mode
```bash
FREELO_READONLY=false freelo-mcp-server
```
All 33 tools available including create, update, and finish operations.

## Audit Logging

All tool calls are logged to `audit.jsonl`:

```json
{"timestamp":"2025-01-12T10:30:00.000Z","tool":"freelo_get_projects","params":{},"status":"success","durationMs":245}
```

Configure via environment:
```bash
FREELO_AUDIT_LOG=./logs/audit.jsonl  # Log file path
FREELO_AUDIT_WEBHOOK=https://...      # Optional webhook URL
FREELO_AUDIT_ENABLED=false            # Disable logging
```

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `FREELO_EMAIL` | Yes | Freelo account email |
| `FREELO_API_KEY` | Yes | Freelo API key |
| `FREELO_USER_AGENT` | No | Custom User-Agent |
| `FREELO_READONLY` | No | Enable readonly mode |
| `FREELO_AUDIT_LOG` | No | Audit log path |
| `FREELO_AUDIT_WEBHOOK` | No | Webhook URL |
| `FREELO_AUDIT_ENABLED` | No | Enable/disable audit |

## Client Configuration

### Claude Code (CLI)

Add to `~/.claude.json` (macOS/Linux) or `%USERPROFILE%\.claude.json` (Windows):

```json
{
  "mcpServers": {
    "freelo": {
      "type": "stdio",
      "command": "freelo-mcp-server",
      "env": {
        "FREELO_EMAIL": "your@email.com",
        "FREELO_API_KEY": "your-api-key",
        "FREELO_READONLY": "true"
      }
    }
  }
}
```

### Other Clients

See [Installation Guide](docs/INSTALLATION.md) for Cursor, VS Code, Windsurf, and Continue.dev setup.

## License

MIT License - see [LICENSE](LICENSE) for details.

Dual copyright:
- Original: (c) 2024 Chodeec
- Fork: (c) 2025 sesonet

TDQS

A3.5/5.0

Scored across 33 tools

Disambiguation3/5

Several tools have overlapping scopes: freelo_get_projects vs freelo_get_all_projects, freelo_get_task_details vs freelo_get_task_description, and freelo_get_finished_tasks vs filtered freelo_get_all_tasks. The descriptions help clarify boundaries, but the similarity is enough to cause misselection. Most tools target distinct entities, but the overlaps prevent a higher score.

Naming Consistency4/5

The freelo_ prefix and verb_noun structure are used consistently across most tools, making the surface predictable. Minor deviations exist: freelo_edit_task uses 'edit' while related tools use 'update', and freelo_search_elasticsearch uses a product name rather than a noun. These are small enough not to break the overall pattern.

Tool Count2/5

33 tools is well beyond the 25+ threshold and includes several near-duplicate getters such as freelo_get_projects/freelo_get_all_projects, freelo_get_task_details/freelo_get_task_description, and freelo_get_finished_tasks plus filtered freelo_get_all_tasks. While Freelo is a broad PM platform, the toolset could be consolidated significantly without losing capability.

Completeness2/5

The surface covers a broad read/create/update landscape, but has clear dead ends: comments can only be listed, subtasks can only be created and read, notes cannot be listed, and there is no delete task or project creation. Common PM operations like adding a comment or removing a task would fail, so the set is not sufficiently complete.

Maintenance

ActivityInactive
ResponsivenessNo issues