# Development documentation
## Sandbox
Use those commands to set up a development sandbox and install the
project in editable mode.
```shell
git clone https://github.com/crate/cratedb-mcp
cd cratedb-mcp
uv venv --python 3.13 --seed .venv
source .venv/bin/activate
uv pip install --upgrade --editable='.[develop,test]'
```
## Software tests
The project uses the [poethepoet] task runner, which provides convenience entry
points for invoking linters and software tests. The top-level one-shot command
will invoke both and is also used on CI/GHA.
```shell
poe check
```
To invoke individual software tests for working on the spot, use a
traditional `pytest` invocation. Examples:
```shell
pytest --no-cov tests/test_knowledge.py
```
```shell
pytest --no-cov -k query
```
## Release
The project uses [versioningit] so you don't need to do any version bumping
within files because the version number will be derived from the Git tag.
However, you need to designate the new release within the [CHANGES.md](./changes.md)
file, and commit it. The release procedure currently looks like this:
```shell
git commit -m 'Release v0.0.1'
git tag v0.0.1
git push && git push --tags
```
[poethepoet]: https://pypi.org/project/poethepoet/
[versioningit]: https://pypi.org/project/versioningit/