Skip to main content
Glama
README.md
# DailyBot MCP

A small local MCP server that lets Littlebird read and submit your DailyBot check-ins through the installed DailyBot CLI.

## Requirements

- Python 3.10+
- [`uv`](https://docs.astral.sh/uv/)
- DailyBot CLI 3.8+, authenticated as the user whose check-ins Littlebird should access

Verify DailyBot first:

```bash
dailybot --version
dailybot status --auth
```

If needed, authenticate with:

```bash
dailybot login
```

## Install

From this repository directory, install dependencies:

```bash
uv sync
```

## Run

For manual background operation:

```bash
./mcpctl start
./mcpctl status
./mcpctl logs  # Ctrl-C stops following logs, not the server
./mcpctl stop
```

Runtime state and logs are stored under the ignored `.run/` directory.

To run in the foreground instead:

```bash
uv run dailybot_mcp.py
```

The MCP endpoint is available only on your machine at:

```text
http://127.0.0.1:8765/mcp
```

This server is localhost-only; it does not provide a remote or hosted endpoint.

## Connect Littlebird

1. Open **Settings > Integrations** in Littlebird.
2. Add a custom MCP server.
3. Enter `http://127.0.0.1:8765/mcp` as the server URL.
4. Enable the integration for the chat or routine that needs DailyBot.

## Tools

```python
list_checkins(date: str | None = None) -> dict[str, Any]
get_checkin(checkin_id: str) -> dict[str, Any]
get_checkin_history(checkin_id: str, from_date: str, to_date: str, search: str | None = None, limit: int | None = None) -> dict[str, Any]
get_team_checkin_history(team: str, from_date: str, to_date: str, search: str | None = None, limit_per_checkin: int | None = None) -> dict[str, Any]
submit_checkin(checkin_id: str, answers: list[str], response_date: str | None = None, confirmed: bool = False) -> dict[str, Any]
```

- `list_checkins` lists pending and completed check-ins for one date.
- `get_checkin` returns a check-in's configuration and ordered questions.
- `get_checkin_history` returns responses DailyBot provides over any arbitrary inclusive date range, optionally filtered by `search` and capped by `limit`.
- `get_team_checkin_history` groups history for every active visible workflow associated with a team name or UUID over an arbitrary inclusive date range. It excludes archived and inactive workflows; `search` and `limit_per_checkin` apply independently to each matched workflow.
- `submit_checkin` submits answers in question order only when `confirmed=True` after you explicitly approve them.

Dates use `YYYY-MM-DD`. DailyBot permissions remain authoritative: admin and manager credentials can receive all participants' responses, while member credentials may receive only their own.

## Development

Tests mock DailyBot and never contact a live account:

```bash
uv run python -m unittest -v
```

## Troubleshooting

- **DailyBot is not on `PATH`:** ensure `dailybot --version` works in the same shell used to start the server.
- **DailyBot is not authenticated:** run `dailybot login`, then verify with `dailybot status --auth`.
- **Littlebird cannot connect:** confirm the server process is still running and the URL is exactly `http://127.0.0.1:8765/mcp`.
- **Port already in use:** stop the process using port `8765` before starting this server.