Thanks for your interest in contributing!
- Install uv
- Fork and clone the repo
uv sync --dev- Bring up a local pgvector instance:
docker compose -f docker-compose.dev.yml up -d export DATABASE_URL=postgresql://postgres:postgres@localhost:5434/postgres
uv run pytest
uv run ruff check .
uv run ruff format --check .
uv run pyrightCI (.github/workflows/ci.yml) runs the exact same commands against a
real pgvector container on every push and PR, across Python 3.10–3.13, plus a separate job that
builds the package and runs twine check on it. A green local run should mean a green CI run.
- Every table/column identifier a tool accepts must be validated against
information_schema/pg_catalogbefore being interpolated into SQL — seedb.py. Never build a query from an unvalidated identifier or an unbounded raw-SQL string. - New tools should have tests that exercise them against the real pgvector container in
docker-compose.dev.yml, not mocks — the whole point of this server is correct SQL generation. - Keep tools focused: one tool, one clear capability. If you're adding a flag that changes a tool's behavior substantially, consider whether it should be a separate tool instead.
If you used AI assistance, disclose it in the PR description. You should still understand and be able to explain every line of the change.