MCP server that exposes the full Celery Flower REST API — monitor workers, manage tasks, inspect queues from any AI assistant.
Project description
🌸 celery-flower-mcp
Give your AI assistant full control over Celery — monitor workers, manage tasks, inspect queues.
Features · Quick Start · Configuration · Tools · Development · Contributing
What is this?
celery-flower-mcp is a Model Context Protocol server that exposes the full Celery Flower REST API as MCP tools. Point it at your Flower instance and your AI assistant (Claude, Cursor, Windsurf, etc.) can:
- Monitor workers, tasks, and queues in real time
- Control worker pools — grow, shrink, autoscale, restart, shut down
- Manage tasks — apply, revoke, abort, set timeouts and rate limits
- Inspect queues — check depths, add/remove consumers
All 21 Flower API endpoints are covered.
Features
- Full API coverage — every Flower REST endpoint exposed as an MCP tool
- Dependency injection via dishka — clean, testable architecture
- Pydantic Settings — typed configuration with
.envfile support - Async throughout — built on
httpx+FastMCP - 99% test coverage — 49 tests, zero flakes
- Strict typing — mypy strict mode, fully annotated
Quick Start
Install via Smithery (recommended)
npx @smithery/cli install celery-flower-mcp --client claude
Install via uvx
FLOWER_URL=http://localhost:5555 uvx celery-flower-mcp
Install from source
git clone https://github.com/Darius1223/celery-flower-mcp
cd celery-flower-mcp
uv sync
uv run python -m source.main
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"celery-flower": {
"command": "uvx",
"args": ["celery-flower-mcp"],
"env": {
"FLOWER_URL": "http://localhost:5555"
}
}
}
}
Configuration
Configuration is read from environment variables or a .env file in the project root. Copy .env.example to get started:
cp .env.example .env
| Variable | Default | Description |
|---|---|---|
FLOWER_URL |
http://localhost:5555 |
Base URL of your Flower instance |
FLOWER_USERNAME |
— | Basic auth username |
FLOWER_PASSWORD |
— | Basic auth password |
FLOWER_API_TOKEN |
— | Bearer token (takes priority over basic auth) |
Available Tools
Workers (8 tools)
| Tool | Description |
|---|---|
list_workers |
List all workers — optionally filter by name, refresh live stats, or get status only |
shutdown_worker |
Gracefully shut down a worker |
restart_worker_pool |
Restart a worker's process pool |
grow_worker_pool |
Add N processes to a worker's pool |
shrink_worker_pool |
Remove N processes from a worker's pool |
autoscale_worker_pool |
Configure autoscale min/max bounds |
add_queue_consumer |
Make a worker start consuming from a queue |
cancel_queue_consumer |
Make a worker stop consuming from a queue |
Tasks (11 tools)
| Tool | Description |
|---|---|
list_tasks |
List tasks with filters: state, worker, name, date range, search, pagination |
list_task_types |
List all registered task types across workers |
get_task_info |
Get full details for a task by UUID |
get_task_result |
Retrieve a task's result (with optional timeout) |
apply_task |
Execute a task synchronously and wait for the result |
async_apply_task |
Dispatch a task asynchronously, returns task UUID |
send_task |
Send a task by name — no registration required on worker side |
abort_task |
Abort a running task |
revoke_task |
Revoke a task; optionally terminate with a signal |
set_task_timeout |
Set soft and/or hard time limits for a task on a worker |
set_task_rate_limit |
Set rate limit for a task on a worker (e.g. 100/m) |
Queues & Health (2 tools)
| Tool | Description |
|---|---|
get_queue_lengths |
Get the current depth of all configured queues |
healthcheck |
Check whether the Flower instance is reachable and healthy |
Architecture
source/
├── main.py # FastMCP server entry point + dishka container wiring
├── settings.py # Pydantic Settings — typed config from env / .env
├── client.py # Async HTTP client wrapping Flower REST API
├── providers.py # dishka Provider — manages FlowerClient lifecycle
└── tools/
├── workers.py # 8 worker management tools
├── tasks.py # 11 task management tools
└── queues.py # 2 queue / health tools
dishka manages the FlowerClient lifecycle: created once at startup, closed cleanly on shutdown via an async generator provider.
Development
make fmt # auto-format with ruff
make lint # lint with ruff
make typecheck # type-check with mypy (strict)
make test # run 49 tests
make cov # tests + coverage report
make all # fmt + lint + typecheck
See CONTRIBUTING.md for details on adding new tools or submitting a PR.
Changelog
See CHANGELOG.md.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file celery_flower_mcp-0.1.0.tar.gz.
File metadata
- Download URL: celery_flower_mcp-0.1.0.tar.gz
- Upload date:
- Size: 49.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b5bad44d2e8ce89025805d8718a67f0b6fd81cc84e8b6d68849156b0b6cde7c
|
|
| MD5 |
4c15d72a3e57c933c8b8d2398ac1eaef
|
|
| BLAKE2b-256 |
c2d809e17e63b5fe9112298a7aa8c870ac24ec08ccb2566bd0b8bb6c2a87c594
|
Provenance
The following attestation bundles were made for celery_flower_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on Darius1223/celery-flower-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
celery_flower_mcp-0.1.0.tar.gz -
Subject digest:
6b5bad44d2e8ce89025805d8718a67f0b6fd81cc84e8b6d68849156b0b6cde7c - Sigstore transparency entry: 1340150300
- Sigstore integration time:
-
Permalink:
Darius1223/celery-flower-mcp@2bea5c8f6b2359c5b06eb58b8276f967aeaaacdd -
Branch / Tag:
refs/tags/0.0.1 - Owner: https://github.com/Darius1223
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2bea5c8f6b2359c5b06eb58b8276f967aeaaacdd -
Trigger Event:
release
-
Statement type:
File details
Details for the file celery_flower_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: celery_flower_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d72093099435aa74ddb29e5f48112ddabf127d00878c4fd4ad856a22f165ac
|
|
| MD5 |
c4d5334279033f00fb9994a6f75eed51
|
|
| BLAKE2b-256 |
e8d8fc30e15a8af6f3c47c67046652f719069baf4e27a49b4ee16154d4b3a50d
|
Provenance
The following attestation bundles were made for celery_flower_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Darius1223/celery-flower-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
celery_flower_mcp-0.1.0-py3-none-any.whl -
Subject digest:
95d72093099435aa74ddb29e5f48112ddabf127d00878c4fd4ad856a22f165ac - Sigstore transparency entry: 1340150308
- Sigstore integration time:
-
Permalink:
Darius1223/celery-flower-mcp@2bea5c8f6b2359c5b06eb58b8276f967aeaaacdd -
Branch / Tag:
refs/tags/0.0.1 - Owner: https://github.com/Darius1223
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@2bea5c8f6b2359c5b06eb58b8276f967aeaaacdd -
Trigger Event:
release
-
Statement type: