Skip to content

fix: keep server.json's description within the registry's 100-char limit - #10

Merged
mailnike merged 1 commit into
mainfrom
fix/server-json-description-length
Sep 1, 2026
Merged

mailnike merged 1 commit into
mainfrom
fix/server-json-description-length

Conversation

@mailnike

@mailnike mailnike commented Sep 1, 2026

Copy link
Copy Markdown
Member

The MCP registry rejected the v0.9.3 publish:

422 Unprocessable Entity — "expected length <= 100", location: body.description

The description shipped in 0a511f1 was 183 characters. Shortened to exactly 100, keeping the AI-citation differentiator first since that string is what the registry and downstream directories display.

Adds a test asserting the limit. This constraint is enforced server-side at publish time only — long after review, and invisible to both the test suite and a diff read. Mutation-checked: a 101-character description fails it.

Also gitignores .mcpregistry*. mcp-publisher 1.8.1 stores its registry bearer token at ~/.config/mcp-publisher/token.json (verified: mode 0600, outside the repo), but upstream also supports a working-directory token file and gitignores that pattern for exactly this reason. Publishing runs from the repo root, so this removes any chance of a future version dropping a live namespace credential into a public working tree.

Validated the whole server.json against the registry schema this time rather than just the failing field — check-jsonschema passes, and every maxLength/pattern/enum/format/required constraint was enumerated and checked. Also confirmed the non-schema publish gates: the mcp-name ownership marker is present in the live PyPI 0.9.3 description, 0.9.3 exists on PyPI, and there is no version collision in the registry.

576 tests pass, ruff clean.

The MCP registry rejects a publish with HTTP 422 when `description` exceeds
100 characters. The refreshed description shipped in 0a511f1 was 183, so the
publish bounced:

  422 Unprocessable Entity
  "expected length <= 100", location: body.description

Shortened to 100 while keeping the AI-citation differentiator first, since that
string is what the registry and the directories reading it display.

Adds a test asserting the limit. This constraint is only enforced server-side
at publish time -- long after review, and outside anything the test suite or a
diff read would catch -- which is exactly the class of thing that should be a
local assertion instead. Mutation-checked: a 101-character description fails it.

Also gitignores `.mcpregistry*`. mcp-publisher 1.8.1 stores its registry bearer
token at ~/.config/mcp-publisher/token.json, outside the repo, but upstream
also supports a working-directory token file and gitignores that pattern for
exactly this reason. Publishing is run from the repo root, so this removes any
chance of a future version dropping a live namespace credential into a public
working tree.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0175exdX9ofY4bo1HHmNiA6e
@mailnike
mailnike merged commit 6b727c1 into main Sep 1, 2026
2 of 4 checks passed
@mailnike
mailnike deleted the fix/server-json-description-length branch September 1, 2026 17:23
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