Good news — this project is already structured as a proper Python package. It has:
- A pyproject.toml with uv_build as the build backend
- src/explicator/ layout with an init.py
- Entry points defined for explicator and explicator-mcp CLI scripts
What's missing to fully "publish" it depends on what you mean. Here are the typical next steps:
Build a distributable wheel/sdist: uv build This creates a dist/ directory with .whl and .tar.gz files.
Publish to PyPI: uv publish You'll need a PyPI account and API token. Set UV_PUBLISH_TOKEN or use --token.
Install it locally (editable/dev mode): uv pip install -e .
Things you may want to add to pyproject.toml before publishing:
[project] authors = [{name = "Your Name", email = "you@example.com"}] license = {text = "MIT"} readme = "README.md" keywords = ["ai", "mcp", "llm"] classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", ]
[project.urls] Homepage = "https://github.com/yourorg/explicator" Repository = "https://github.com/yourorg/explicator"
What's your goal — local install, PyPI publish, or something else?
❯ what's involved with publishing to pypi?
● Here's the full process:
- Prep your pyproject.toml
Make sure these are filled in before publishing:
- version — must be unique per release (PyPI rejects re-uploads to the same version)
- description, readme, authors, license
- classifiers — helps people find your package
- [project.urls] — links to repo, docs, etc.
- Create a PyPI account
- Register at https://pypi.org
- Enable 2FA (now required)
- Generate an API token under Account Settings → API tokens (scoped to the project after first upload)
- Build
uv build Produces dist/explicator-0.1.0.tar.gz and dist/explicator-0.1.0-py3-none-any.whl.
- Publish
uv publish --token pypi-your-token-here Or set the env var so you don't expose it: UV_PUBLISH_TOKEN=pypi-your-token-here uv publish
- Verify
pip install explicator Or check https://pypi.org/project/explicator/.
Things to know before you go live
- Name squatting check — explicator may already be taken on PyPI. Check first.
- TestPyPI — publish there first to test the whole flow without affecting the real index: uv publish --publish-url https://test.pypi.org/legacy/
- Version bumping — once a version is published you can't overwrite it; you must bump the version for every release
- Yanking — if you publish a broken version you can "yank" it on PyPI (it stays downloadable but won't be installed by default)
Want to start with TestPyPI first?