README.md•2.53 kB
# tinydb-emcipi

> **This repo is _docker-friendly_** – an MCP wrapper around TinyDB that gives chatbots long-term memory without leaving your laptop.
Tiny **MCP** server backed by **TinyDB** — drop-in long-term memory for chatbots and small-context LLM apps.
---
## Why?
Keeping structured facts in the prompt is wasteful. With `tinydb-emcipi` an agent can **store, search and mutate JSON records** through MCP tool calls, loading only what it needs.
* **Zero dependencies** – TinyDB stores JSON on disk.
* **Schema-first** – every record validated; the schema itself is queryable.
* **Opinionated tools** – list DBs, switch DB, introspect schema, CRUD, search.
* **Docker-friendly** – run locally or in CI with a single `docker compose up`.
---
## Quick Start
### Native
```bash
pip install -r requirements.txt
python -m main # MCP endpoint on http://localhost:8000/mcp
```
### Docker Compose
```bash
docker compose up # builds dependencies at first run
```
The compose file mounts the repo into `/app` inside a `python:3.12-slim` container and starts the same command.
---
## Available MCP Tools (summary)
| Category | Tool | Purpose |
|----------|------|---------|
| Discovery | `create_database_tool` | create new DB (optionally with initial schema) |
| | `list_databases_tool` | see all TinyDB files |
| | `switch_active_db_tool` | set the DB every other tool will use |
| | `get_database_info_tool` | schema, sample records, field list |
| Records | `search_records_tool` | field-value query, returns schema too |
| | `get_all_records_tool` | dump every record |
| | `add_record_tool` / `update_record_tool` | create / modify validated records |
| Schema | `set_schema_tool` | create / update JSON Schema for a DB |
---
## Project Structure (top-level)
```
config/ configuration & sample
logs/ runtime logs
sandbox/db/ TinyDB JSON databases
utils/ code modules (db, schema, mcp wrappers)
main.py entry-point
docker-compose.yml
requirements.txt
```
---
## Contributing
Pull requests are welcome! Please:
1. Follow PEP 8 and keep imports sorted.
2. Add or update unit tests.
3. Keep the README and doc-strings concise and useful.
---
### Example MCP Prompt
A ready-to-use JSON request lives at [`scratchpad/mcp.json.sample`](scratchpad/mcp.json.sample) showing how to invoke these tools from an MCP client.
---
© 2025 • MIT License