Skip to content

Commit 32405f0

Browse files
bluecloud-gilfoyle[bot]ayhammouda
authored andcommitted
chore: prepare autonomous launch pack
1 parent 62a830f commit 32405f0

5 files changed

Lines changed: 202 additions & 31 deletions

File tree

.github/RELEASE.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,20 @@ 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/mcp-server-python-docs/0.1.1/
5858

5959
## Post-Release Verification
6060

@@ -63,14 +63,14 @@ After the package is published:
6363
```bash
6464
# In a fresh environment:
6565
uvx mcp-server-python-docs --version
66-
# Should print: 0.1.0
66+
# Should print: 0.1.1
6767

6868
# Or via pipx:
6969
pipx run mcp-server-python-docs --version
70-
# Should print: 0.1.0
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,7 +81,7 @@ 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
```
@@ -105,7 +105,7 @@ 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
110110
First public release of mcp-server-python-docs.
111111
@@ -116,14 +116,14 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
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/mcp-server-python-docs/0.1.1/
127127
- [ ] Attestation visible on PyPI package page (look for "Provenance" badge)
128128
- [ ] Fresh install test:
129129
```bash
@@ -132,13 +132,13 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
132132

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

143143
# Step 2: Build index
144144
uvx mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14
@@ -161,10 +161,10 @@ Complete these steps in order. Each step has a checkbox -- do not skip ahead.
161161
### Release Complete
162162

163163
- [ ] GitHub Release exists with attached artifacts
164-
- [ ] PyPI page shows 0.1.0 with attestation
164+
- [ ] PyPI page shows 0.1.1 with attestation
165165
- [ ] README install instructions verified end-to-end
166166
- [ ] Slow E2E workflow passed for the release candidate
167-
- [ ] Tag v0.1.0 exists in git
167+
- [ ] Tag v0.1.1 exists in git
168168

169169
**Release date**: _______________
170170
**Released by**: _______________

README.md

Lines changed: 51 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,33 @@ exposes a small MCP tool surface tuned for high-signal retrieval.
5858
The model gets the exact symbol match and the relevant documentation section
5959
instead of a full-page dump.
6060

61+
## 30-second demo
62+
63+
Ask your MCP client:
64+
65+
> In Python 3.13, how should I use `asyncio.TaskGroup` and what changed from older asyncio patterns?
66+
67+
The agent should use `search_docs` for the exact symbol, then `get_docs` for the
68+
matching section. Instead of generic web results or an entire docs page, it gets
69+
the official stdlib text for the requested Python version, trimmed to the useful
70+
section.
71+
72+
Local source smoke test until the PyPI package is published:
73+
74+
```bash
75+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs --version
76+
```
77+
6178
## Install
6279

63-
Run it directly with `uvx`:
80+
Until the first PyPI release is published, run from GitHub:
81+
82+
```bash
83+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs --version
84+
```
85+
86+
After PyPI publishing is complete, the package will also run directly with
87+
`uvx`:
6488

6589
```bash
6690
uvx mcp-server-python-docs --version
@@ -80,9 +104,11 @@ shell or use `python -m uv ...` as a fallback for local contributor commands.
80104
Build the local documentation index:
81105

82106
```bash
83-
uvx mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14
107+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs build-index --versions 3.10,3.11,3.12,3.13,3.14
84108
```
85109

110+
After PyPI publishing, `uvx mcp-server-python-docs build-index ...` is enough.
111+
86112
If you installed the package persistently, you can drop the `uvx` prefix:
87113

88114
```bash
@@ -110,7 +136,11 @@ Add this to your Claude Desktop configuration file:
110136
"mcpServers": {
111137
"python-docs": {
112138
"command": "uvx",
113-
"args": ["mcp-server-python-docs"]
139+
"args": [
140+
"--from",
141+
"git+https://github.com/ayhammouda/python-docs-mcp-server.git",
142+
"mcp-server-python-docs"
143+
]
114144
}
115145
}
116146
}
@@ -128,7 +158,11 @@ global settings):
128158
"mcpServers": {
129159
"python-docs": {
130160
"command": "uvx",
131-
"args": ["mcp-server-python-docs"]
161+
"args": [
162+
"--from",
163+
"git+https://github.com/ayhammouda/python-docs-mcp-server.git",
164+
"mcp-server-python-docs"
165+
]
132166
}
133167
}
134168
}
@@ -141,7 +175,7 @@ Add this to `.codex/config.toml`:
141175
```toml
142176
[mcp_servers.python-docs]
143177
command = "uvx"
144-
args = ["mcp-server-python-docs"]
178+
args = ["--from", "git+https://github.com/ayhammouda/python-docs-mcp-server.git", "mcp-server-python-docs"]
145179
```
146180

147181
## How quality is verified
@@ -174,20 +208,21 @@ The server currently exposes five MCP tools:
174208
| `list_versions` | List all indexed Python versions with metadata. |
175209
| `detect_python_version` | Detect the user's local Python version and report whether it matches an indexed documentation version. |
176210

177-
## When to use this instead of generic docs retrieval
178-
179-
Use this server when you need:
211+
## Why not Context7 or generic docs retrieval?
180212

181-
- exact Python stdlib symbol resolution
182-
- consistent version-aware answers across Python 3.10 through 3.14
183-
- token-efficient section retrieval from official docs
184-
- a local, read-only MCP server with a simple operational story
213+
Use this server when the question is about Python's standard library and you
214+
want the boring answer that is actually correct:
185215

186-
Use a generic fetcher or broader docs MCP when you need:
216+
- official Python docs, not scraped mirrors or mixed-source summaries
217+
- exact symbol resolution from `objects.inv`
218+
- Python-version-aware results across 3.10 through 3.14
219+
- token-efficient section retrieval instead of full-page dumps
220+
- local, read-only runtime behavior with no API keys
187221

188-
- arbitrary third-party package content beyond package-declared PyPI metadata
189-
- arbitrary web pages
190-
- mixed-source research across many frameworks
222+
Use Context7 or a generic docs fetcher when you need broader third-party library
223+
coverage, arbitrary web pages, or cross-framework research. This server is not a
224+
universal docs search engine. It is a precise stdlib retrieval tool for AI
225+
coding agents.
191226

192227
## Retrieved docs cache
193228

docs/launch/reddit-posts.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Reddit launch drafts
2+
3+
Do not post these until the package is published on PyPI and the release smoke
4+
test passes. Until then, use the GitHub `uvx --from git+...` install command.
5+
6+
## r/Python
7+
8+
Title: I built a local MCP server for official Python stdlib docs
9+
10+
I built `mcp-server-python-docs`, a small read-only MCP server that gives AI
11+
coding agents access to the official Python standard library docs.
12+
13+
Why I wanted it:
14+
15+
- exact stdlib symbol lookup via Python `objects.inv`
16+
- version-aware answers for Python 3.10 through 3.14
17+
- section-level retrieval instead of dumping whole pages into context
18+
- local SQLite/FTS index, no runtime web scraping, no API keys
19+
- read-only MCP tools, so the operational/security story is boring
20+
21+
Example use case: ask an agent about `asyncio.TaskGroup` in Python 3.13 and it
22+
can retrieve the exact official docs section instead of guessing from generic web
23+
results.
24+
25+
Repo: https://github.com/ayhammouda/python-docs-mcp-server
26+
27+
Current note: PyPI publishing is still being finalized. For now, test from
28+
source:
29+
30+
```bash
31+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs --version
32+
```
33+
34+
Feedback welcome, especially on retrieval quality, MCP client setup, and which
35+
stdlib docs workflows feel clunky in real use.
36+
37+
## r/LocalLLaMA
38+
39+
Title: Local MCP server for official Python docs, built for coding agents
40+
41+
I made a local MCP server for Python standard library documentation. It builds a
42+
local index from the official docs and exposes small read-only tools for search
43+
and section retrieval.
44+
45+
The goal is not to be a universal docs search engine. It is the opposite: a
46+
boring, precise source for Python stdlib questions where version matters and
47+
tokens are limited.
48+
49+
What it does:
50+
51+
- official Python docs only for stdlib retrieval
52+
- Python-version-aware results across 3.10-3.14
53+
- exact symbol lookup from `objects.inv`
54+
- local SQLite + FTS5 index
55+
- no API keys or hosted retrieval dependency at query time
56+
57+
Repo: https://github.com/ayhammouda/python-docs-mcp-server
58+
59+
PyPI publishing is not done yet, so don't use the plain `uvx` package command
60+
until that lands. Source install smoke test:
61+
62+
```bash
63+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs --version
64+
```
65+
66+
I'd appreciate practical feedback from people wiring MCP into local coding
67+
workflows.

docs/launch/show-hn.md

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Show HN launch draft
2+
3+
Do not submit until PyPI publishing is complete and the release smoke test passes.
4+
5+
## Title
6+
7+
Show HN: Local MCP server for official Python standard library docs
8+
9+
## Post
10+
11+
Hi HN — I built `mcp-server-python-docs`, a read-only MCP server that gives AI
12+
coding agents precise access to the official Python standard library docs.
13+
14+
The motivation: generic docs retrieval is often noisy for stdlib questions.
15+
Python answers are sensitive to exact symbols and versions, and agents do not
16+
need a whole docs page when one section answers the question.
17+
18+
What it does:
19+
20+
- builds a local SQLite/FTS index from official Python docs
21+
- resolves exact symbols from Python `objects.inv`
22+
- retrieves section-level docs with truncation and pagination
23+
- supports version-aware lookup across Python 3.10 through 3.14
24+
- runs locally, read-only, with no API keys
25+
26+
It is intentionally narrow. Use Context7 or generic retrieval for broad
27+
third-party docs and web research. Use this when you want official stdlib docs
28+
with less token waste.
29+
30+
Repo: https://github.com/ayhammouda/python-docs-mcp-server
31+
32+
PyPI publishing is still pending. Until that is finished, test from GitHub:
33+
34+
```bash
35+
uvx --from git+https://github.com/ayhammouda/python-docs-mcp-server.git mcp-server-python-docs --version
36+
```
37+
38+
I'd love feedback on the MCP interface, retrieval output, and whether the local
39+
indexing flow is clear enough.

server.json

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
{
2+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3+
"name": "io.github.ayhammouda/python-docs-mcp-server",
4+
"description": "Local, read-only MCP retrieval over official Python standard library docs.",
5+
"title": "Python Docs MCP Server",
6+
"websiteUrl": "https://github.com/ayhammouda/python-docs-mcp-server",
7+
"repository": {
8+
"url": "https://github.com/ayhammouda/python-docs-mcp-server",
9+
"source": "github"
10+
},
11+
"version": "0.1.1",
12+
"packages": [
13+
{
14+
"registryType": "pypi",
15+
"registryBaseUrl": "https://pypi.org",
16+
"identifier": "mcp-server-python-docs",
17+
"version": "0.1.1",
18+
"runtimeHint": "uvx",
19+
"transport": {
20+
"type": "stdio"
21+
}
22+
}
23+
],
24+
"_meta": {
25+
"io.modelcontextprotocol.registry/publisher-provided": {
26+
"status": "ready-for-validation-after-pypi-publish",
27+
"notes": "PyPI package metadata is included for the official MCP Registry, but package publication is tracked separately."
28+
}
29+
}
30+
}

0 commit comments

Comments
 (0)