Skip to content

fix(server.json): shorten description to ≤100 chars for MCP Registry#30

Merged
ayhammouda merged 1 commit into
mainfrom
fix/server-json-description
May 14, 2026
Merged

fix(server.json): shorten description to ≤100 chars for MCP Registry#30
ayhammouda merged 1 commit into
mainfrom
fix/server-json-description

Conversation

@ayhammouda
Copy link
Copy Markdown
Owner

@ayhammouda ayhammouda commented May 14, 2026

Summary

Hotfix for the MCP Registry validation failure surfaced during the v0.1.5 release pipeline.

Context

The v0.1.5 release ran successfully on PyPI (live with attestations) but the publish-mcp-registry job in release run #25876196215 failed at the Validate server.json step:

Error: validation failed: server returned status 422
{"errors":[{"message":"expected length <= 100","location":"body.description","value":"The canonical Python stdlib oracle for AI coding agents. Exact symbols, exact sections, exact versions — offline, always free, always MIT, token-frugal."}]}

MCP Registry's schema enforces body.description ≤ 100 chars. PyPI has no such limit (summary cap is 512), so v0.1.5 published successfully on PyPI with the 152-char description, but MCP Registry rejected it. The downstream github-release job was blocked; I created the v0.1.5 GH Release manually from local dist artifacts.

The fix

Shorten server.json description from 152 to 96 chars, preserving all three locked anchor phrases per .planning/POSITIONING.md:

"The canonical Python stdlib oracle for AI coding agents — always free, always MIT, token-frugal."

Anchor coverage verified:

  • canonical Python stdlib oracle
  • always free, always MIT
  • token-frugal

Pre-validated against MCP Registry's actual endpoint:

$ ./mcp-publisher validate server.json
Validating against https://registry.modelcontextprotocol.io...
✅ server.json is valid

Not touched

  • pyproject.toml description stays at 154 chars. PyPI's 512-char summary cap means the longer form is fine for the PyPI display; the surface-specific length contract in POSITIONING.md is intentional.
  • README hero positioning sentence stays at full length (152 chars). Not constrained by any schema; the longer form is the canonical "use verbatim" copy.

Next step

With this fix on main, the next tag push will publish to MCP Registry successfully. Whether to ship v0.1.6 now as a patch release (purely metadata; same wheel content) or fold this into the natural next release is a separate call — discussed in the post-merge follow-up.

Test plan

  • mcp-publisher validate server.json → valid (run locally with the actual mcp-publisher binary against the real registry endpoint)
  • CI green
  • Anchor phrases preserved
  • JSON parses

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Documentation
    • Updated project description to emphasize core capabilities and key values.

Review Change Stack

The v0.1.5 release.yml run failed at the publish-mcp-registry job's
validate step: MCP Registry's schema enforces body.description ≤ 100
chars, but the v0.1.5 server.json description was 152 chars.

PyPI accepted the longer form (no such limit there) so v0.1.5 is live
on PyPI with attestations, but MCP Registry stayed at v0.1.4.

Tightened to 96 chars while preserving all three locked anchor phrases
(canonical Python stdlib oracle / always free, always MIT / token-frugal)
per .planning/POSITIONING.md's adapt-for-length contract:

  "The canonical Python stdlib oracle for AI coding agents
  — always free, always MIT, token-frugal."

pyproject.toml description stays at 154 chars (PyPI summary limit is
512 — the surface-specific length contract intentionally varies).

This unblocks the next release: with this fix on main, the next tag
push will publish to MCP Registry successfully.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 14, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 6e4d5a04-21ac-4fa5-8426-5c401f556b29

📥 Commits

Reviewing files that changed from the base of the PR and between 276a387 and 9a1da4b.

📒 Files selected for processing (1)
  • server.json

📝 Walkthrough

Walkthrough

The PR updates the description field in server.json from a longer version highlighting offline and version-exactness features to a shorter, more concise description positioning the tool as a canonical Python stdlib oracle for AI coding agents.

Changes

Server Description Update

Layer / File(s) Summary
Server description text
server.json
The description string is shortened and refocused, removing "Exact symbols, exact sections, exact versions — offline" and replacing it with "The canonical Python stdlib oracle for AI coding agents — always free, always MIT, token-frugal."

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Possibly related PRs

  • ayhammouda/python-docs-mcp-server#25: Both PRs modify server.json's "description" text to the "canonical Python stdlib oracle … always free, always MIT (token-frugal)" framing, so the main PR is directly part of the same description-alignment work.

Poem

🐰 A description trimmed with care,
Words refined beyond compare,
Token-frugal, wise and true,
The oracle shines bright and new! ✨

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/server-json-description

Comment @coderabbitai help to get the list of available commands and usage tips.

@ayhammouda ayhammouda merged commit 1a74ad7 into main May 14, 2026
6 of 7 checks passed
ayhammouda added a commit that referenced this pull request May 14, 2026
v0.1.5 published successfully to PyPI but the publish-mcp-registry job
failed at validation: MCP Registry's schema enforces body.description ≤
100 chars and the v0.1.5 server.json had a 152-char description.

PR #30 already shortened server.json's description to 96 chars on main
and pre-validated it with mcp-publisher locally against the real
registry endpoint. v0.1.6 ships the same wheel content as v0.1.5 plus
that corrected server.json so MCP Registry catches up.

Lockstep version bump:
- pyproject.toml line 7: 0.1.5 -> 0.1.6
- server.json line 11: 0.1.5 -> 0.1.6
- server.json line 17 (packages[0].version): 0.1.5 -> 0.1.6

Verified locally:
- uv build produces 0.1.6 wheel + sdist
- python-docs-mcp-server --version reports 0.1.6 from clean venv
- mcp-publisher validate server.json -> valid
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant