Skip to content

Commit fc392e6

Browse files
authored
Merge pull request #22 from ayhammouda/fix/autonomous-launch-pack
chore: prepare launch metadata and package rename
2 parents 62a830f + 737aa7b commit fc392e6

23 files changed

Lines changed: 1498 additions & 154 deletions

.github/INTEGRATION-TEST.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ Release-specific sign-off still lives in [`.github/RELEASE.md`](RELEASE.md).
1313
- `uv run pyright src/`
1414
- `uv run pytest --tb=short -q`
1515
- Local index build completed:
16-
- `uv run mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14`
16+
- `uv run python-docs-mcp-server build-index --versions 3.10,3.11,3.12,3.13,3.14`
1717
- Doctor passes:
18-
- `uv run mcp-server-python-docs doctor`
18+
- `uv run python-docs-mcp-server doctor`
1919
- Slow E2E workflow passes when preparing a release:
2020
- GitHub Actions: `Slow E2E`
2121
- Expected: Python 3.13 and 3.14 jobs both complete `build-index`, `doctor`,
@@ -29,7 +29,7 @@ Use Inspector for fast local iteration before checking real clients.
2929
### Start Inspector
3030

3131
```bash
32-
npx @modelcontextprotocol/inspector uv --directory . run mcp-server-python-docs
32+
npx @modelcontextprotocol/inspector uv --directory . run python-docs-mcp-server
3333
```
3434

3535
### Verify
@@ -62,7 +62,7 @@ npx @modelcontextprotocol/inspector uv --directory . run mcp-server-python-docs
6262
"mcpServers": {
6363
"python-docs": {
6464
"command": "uvx",
65-
"args": ["mcp-server-python-docs"]
65+
"args": ["python-docs-mcp-server"]
6666
}
6767
}
6868
}
@@ -90,7 +90,7 @@ npx @modelcontextprotocol/inspector uv --directory . run mcp-server-python-docs
9090
2. Add a server:
9191
- Name: `python-docs`
9292
- Command: `uvx`
93-
- Args: `mcp-server-python-docs`
93+
- Args: `python-docs-mcp-server`
9494
3. Confirm the server shows as connected
9595

9696
### Checks
@@ -111,11 +111,11 @@ locked.
111111

112112
### Checks
113113

114-
- [ ] `uvx mcp-server-python-docs --version`
114+
- [ ] `uvx python-docs-mcp-server --version`
115115
- Expected: prints the current package version
116-
- [ ] `uvx mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14`
116+
- [ ] `uvx python-docs-mcp-server build-index --versions 3.10,3.11,3.12,3.13,3.14`
117117
- Expected: index build completes successfully
118-
- [ ] `uvx mcp-server-python-docs doctor`
118+
- [ ] `uvx python-docs-mcp-server doctor`
119119
- Expected: all required checks pass
120120
- [ ] Follow the README from scratch
121121
- Expected: a new user can get to a working client configuration without using `.planning/`
@@ -130,7 +130,7 @@ or supported Python versions.
130130
- [ ] Start the `Slow E2E` workflow from GitHub Actions
131131
- Expected: both Python 3.13 and Python 3.14 jobs start
132132
- [ ] Confirm each job installs the built wheel into a clean virtual environment
133-
- Expected: the command path is the installed `mcp-server-python-docs`, not editable source
133+
- Expected: the command path is the installed `python-docs-mcp-server`, not editable source
134134
- [ ] Confirm `build-index --versions 3.10,3.11,3.12,3.13,3.14` passes
135135
- Expected: all five versions produce content, not symbol-only fallback
136136
- [ ] Confirm `doctor` and `validate-corpus` pass

.github/RELEASE.md

Lines changed: 56 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Before the first release, configure PyPI Trusted Publishing:
66

77
1. Go to https://pypi.org/manage/account/publishing/
88
2. Add a new pending publisher:
9-
- **PyPI project name**: `mcp-server-python-docs`
9+
- **PyPI project name**: `python-docs-mcp-server`
1010
- **Owner**: your GitHub username or org
1111
- **Repository**: `python-docs-mcp-server`
1212
- **Workflow name**: `release.yml`
@@ -41,36 +41,36 @@ versions 3.10 through 3.14.
4141
2. Verify the version in `pyproject.toml` is correct:
4242
```bash
4343
grep '^version' pyproject.toml
44-
# Should show: version = "0.1.0"
44+
# Should show: version = "0.1.1"
4545
```
4646

4747
3. Create and push the tag:
4848
```bash
49-
git tag -a v0.1.0 -m "Release v0.1.0"
50-
git push origin v0.1.0
49+
git tag -a v0.1.1 -m "Release v0.1.1"
50+
git push origin v0.1.1
5151
```
5252

5353
4. Monitor the release workflow at:
5454
https://github.com/<owner>/python-docs-mcp-server/actions/workflows/release.yml
5555

5656
5. Verify the package on PyPI:
57-
https://pypi.org/project/mcp-server-python-docs/0.1.0/
57+
https://pypi.org/project/python-docs-mcp-server/0.1.1/
5858

5959
## Post-Release Verification
6060

6161
After the package is published:
6262

6363
```bash
6464
# In a fresh environment:
65-
uvx mcp-server-python-docs --version
66-
# Should print: 0.1.0
65+
uvx python-docs-mcp-server --version
66+
# Should print: 0.1.1
6767

6868
# Or via pipx:
69-
pipx run mcp-server-python-docs --version
70-
# Should print: 0.1.0
69+
pipx run python-docs-mcp-server --version
70+
# Should print: 0.1.1
7171
```
7272

73-
## v0.1.0 Release Checklist
73+
## v0.1.1 Release Checklist
7474

7575
Complete these steps in order. Each step has a checkbox -- do not skip ahead.
7676

@@ -81,20 +81,20 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
8181
```bash
8282
uv run pytest --tb=short -q
8383
```
84-
- [ ] Version in `pyproject.toml` is `0.1.0`:
84+
- [ ] Version in `pyproject.toml` is `0.1.1`:
8585
```bash
8686
grep '^version' pyproject.toml
8787
```
8888
- [ ] Integration tests from `.github/INTEGRATION-TEST.md` are complete and signed off
8989
- [ ] Doctor subcommand passes:
9090
```bash
91-
mcp-server-python-docs doctor
91+
uv run python-docs-mcp-server doctor
9292
```
9393

9494
### PyPI Trusted Publishing Setup (one-time)
9595

9696
- [ ] PyPI pending publisher configured at https://pypi.org/manage/account/publishing/:
97-
- PyPI project name: `mcp-server-python-docs`
97+
- PyPI project name: `python-docs-mcp-server`
9898
- Owner: `<your-github-username>`
9999
- Repository: `python-docs-mcp-server`
100100
- Workflow name: `release.yml`
@@ -105,47 +105,47 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
105105

106106
- [ ] Create the annotated tag:
107107
```bash
108-
git tag -a v0.1.0 -m "Release v0.1.0
108+
git tag -a v0.1.1 -m "Release v0.1.1
109109
110-
First public release of mcp-server-python-docs.
110+
First public release of python-docs-mcp-server.
111111
112112
A read-only, version-aware MCP retrieval server over Python
113113
standard library documentation (3.10 through 3.14).
114114
115-
Installable via: uvx mcp-server-python-docs"
115+
Installable via: uvx python-docs-mcp-server"
116116
```
117117
- [ ] Push the tag to trigger the release workflow:
118118
```bash
119-
git push origin v0.1.0
119+
git push origin v0.1.1
120120
```
121121
- [ ] Monitor the workflow run: https://github.com/<owner>/python-docs-mcp-server/actions/workflows/release.yml
122122
- [ ] Verify all three jobs pass: `build` -> `publish` -> `github-release`
123123

124124
### Post-Release Verification (SHIP-06)
125125

126-
- [ ] Package visible on PyPI: https://pypi.org/project/mcp-server-python-docs/0.1.0/
126+
- [ ] Package visible on PyPI: https://pypi.org/project/python-docs-mcp-server/0.1.1/
127127
- [ ] Attestation visible on PyPI package page (look for "Provenance" badge)
128128
- [ ] Fresh install test:
129129
```bash
130130
# Clear any cached version
131-
uv cache clean mcp-server-python-docs 2>/dev/null || true
131+
uv cache clean python-docs-mcp-server 2>/dev/null || true
132132

133133
# Install and verify version
134-
uvx mcp-server-python-docs --version
135-
# Expected output: 0.1.0
134+
uvx python-docs-mcp-server --version
135+
# Expected output: 0.1.1
136136
```
137137
- [ ] Full README flow test (from a clean environment):
138138
```bash
139139
# Step 1: Install
140-
uvx mcp-server-python-docs --version
141-
# Should print 0.1.0
140+
uvx python-docs-mcp-server --version
141+
# Should print 0.1.1
142142

143143
# Step 2: Build index
144-
uvx mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14
144+
uvx python-docs-mcp-server build-index --versions 3.10,3.11,3.12,3.13,3.14
145145
# Should complete successfully
146146

147147
# Step 3: Doctor check
148-
uvx mcp-server-python-docs doctor
148+
uvx python-docs-mcp-server doctor
149149
# All checks should PASS
150150
```
151151
- [ ] Slow E2E workflow passes:
@@ -154,17 +154,45 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
154154
- Confirm each job installs the built wheel, runs
155155
`build-index --versions 3.10,3.11,3.12,3.13,3.14`, `doctor`, and
156156
`validate-corpus`
157+
158+
### Post-PyPI Launch Pack Cleanup
159+
160+
- [ ] Remove every temporary PyPI pre-release block from `README.md`:
161+
- Mechanical pass: delete every region from `<!-- PRE-PYPI:` to `<!-- /PRE-PYPI -->` (inclusive). Each block now encloses its surrounding heading + lead-in sentence + code, so a single pass produces a clean README.
162+
- Reference command:
163+
`perl -0777 -i -pe 's/<!-- PRE-PYPI:.*?<!-- \/PRE-PYPI -->\n*//gs' README.md`
164+
- Make the published package commands (`uvx python-docs-mcp-server ...`) the
165+
primary install, build-index, MCP client, `doctor`, and `validate-corpus`
166+
examples
167+
- [ ] Verify `README.md` has no temporary pre-release install artifacts:
168+
```bash
169+
rg -n 'PRE[-]PYPI|Before PyPI publishing|Until the first PyPI|After PyPI publishing|git\\+https://github.com/.*/python-docs-mcp-server' README.md
170+
```
171+
The command should return no output.
172+
- [ ] Review `docs/launch/` so no public launch copy still asks users to install
173+
from GitHub source after the PyPI package is available. Intentional historical
174+
pre-release drafts may remain, but they must stay clearly labeled as
175+
pre-PyPI-only.
176+
- [ ] Submit `server.json` to https://registry.modelcontextprotocol.io/ via the
177+
`mcp-publisher` CLI after the PyPI smoke test passes; verify the registry
178+
listing appears and points at version 0.1.1
179+
- [ ] Use the post-PyPI draft in `docs/launch/show-hn.md` for the HN submission
180+
- [ ] Use `docs/launch/reddit-posts.md` for the r/Python and r/LocalLLaMA
181+
submissions after the PyPI release smoke test passes
182+
- [ ] Commit and push the README cleanup before public launch posts go out
183+
157184
- [ ] Claude Desktop test with published package:
158-
Configure `mcpServers` with `uvx mcp-server-python-docs` and verify
185+
Configure `mcpServers` with `uvx python-docs-mcp-server` and verify
159186
"what is asyncio.TaskGroup" returns a correct hit
160187

161188
### Release Complete
162189

163190
- [ ] GitHub Release exists with attached artifacts
164-
- [ ] PyPI page shows 0.1.0 with attestation
191+
- [ ] PyPI page shows 0.1.1 with attestation
165192
- [ ] README install instructions verified end-to-end
193+
- [ ] README no longer contains temporary pre-PyPI GitHub-source install blocks
166194
- [ ] Slow E2E workflow passed for the release candidate
167-
- [ ] Tag v0.1.0 exists in git
195+
- [ ] Tag v0.1.1 exists in git
168196

169197
**Release date**: _______________
170198
**Released by**: _______________

.github/workflows/e2e.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,18 @@ jobs:
3333
uv run --python ${{ matrix.python-version }} python -m venv .e2e-venv
3434
.e2e-venv/bin/python -m pip install --upgrade pip
3535
.e2e-venv/bin/python -m pip install dist/*.whl
36-
.e2e-venv/bin/mcp-server-python-docs --version
36+
.e2e-venv/bin/python-docs-mcp-server --version
3737
3838
- name: Build and validate full docs index
3939
env:
4040
HOME: ${{ runner.temp }}/mcp-python-docs-home
4141
XDG_CACHE_HOME: ${{ runner.temp }}/mcp-python-docs-cache
4242
run: |
4343
set -o pipefail
44-
.e2e-venv/bin/mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14 \
44+
.e2e-venv/bin/python-docs-mcp-server build-index --versions 3.10,3.11,3.12,3.13,3.14 \
4545
2>&1 | tee "${RUNNER_TEMP}/build-index-${{ matrix.python-version }}.log"
46-
.e2e-venv/bin/mcp-server-python-docs doctor
47-
.e2e-venv/bin/mcp-server-python-docs validate-corpus
46+
.e2e-venv/bin/python-docs-mcp-server doctor
47+
.e2e-venv/bin/python-docs-mcp-server validate-corpus
4848
4949
- name: Upload E2E logs and cache artifacts
5050
if: always()

AGENTS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Project
44

5-
`mcp-server-python-docs` is a read-only MCP server for the official Python
5+
`python-docs-mcp-server` is a read-only MCP server for the official Python
66
standard library documentation. It is built for end users who want precise,
77
version-aware stdlib answers inside MCP clients such as Claude, Cursor, and
88
Codex without relying on an external hosted docs API at query time.
@@ -39,9 +39,9 @@ uv run pytest --tb=short -q
3939
Build and inspect a local docs index:
4040

4141
```bash
42-
uv run mcp-server-python-docs build-index --versions 3.12,3.13
43-
uv run mcp-server-python-docs doctor
44-
uv run mcp-server-python-docs validate-corpus
42+
uv run python-docs-mcp-server build-index --versions 3.12,3.13
43+
uv run python-docs-mcp-server doctor
44+
uv run python-docs-mcp-server validate-corpus
4545
```
4646

4747
Package smoke check:

CONTRIBUTING.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Contributing to mcp-server-python-docs
1+
# Contributing to python-docs-mcp-server
22

33
Start here for current contributor workflow. You should not need `.planning/`
44
to set up, test, or validate the repo.
@@ -42,9 +42,9 @@ uv run pytest tests/test_retrieval_regression.py -q
4242
The server needs a local SQLite index before runtime validation:
4343

4444
```bash
45-
uv run mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14
46-
uv run mcp-server-python-docs doctor
47-
uv run mcp-server-python-docs validate-corpus
45+
uv run python-docs-mcp-server build-index --versions 3.10,3.11,3.12,3.13,3.14
46+
uv run python-docs-mcp-server doctor
47+
uv run python-docs-mcp-server validate-corpus
4848
```
4949

5050
`build-index` downloads the symbol inventories, clones CPython docs sources,

0 commit comments

Comments
 (0)