DailyBot MCP
by allen-n
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.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues