{"slug": "the-mcp-server-pre-publish-checklist", "title": "The MCP Server Pre-Publish Checklist", "summary": "Incultnitollc released mcp-probe, an open-source CLI tool that scores MCP servers on a 0-100 publishability scale across five axes. The tool enforces a 10-point checklist addressing common failures such as thin tool descriptions, naming collisions, and missing install metadata. Official Anthropic reference servers score only 60/100 on description quality, while typical first-draft community servers land in the 40s.", "body_md": "**Before you publish an MCP server, run 10 checks.** Most servers fail at least three — and the failures are invisible until an agent picks the wrong tool, hallucinates an argument, or silently drops your server on connect. This is the checklist we built `mcp-probe`\n\nto enforce, distilled to what actually breaks in the wild.\n\nTL;DR — A publishable MCP server connects cleanly, names tools unambiguously, describes every argument, validates inputs, and ships install metadata. The single most common failure is thin tool descriptions: even the five official Anthropic reference servers cap at\n\n60/100on description quality.\n\nMCP Inspector answers *\"does my server connect and list tools?\"* That's necessary, not sufficient. The agent doesn't experience your server the way you do in a UI — it experiences your **tool descriptions and schemas as text in a context window**, and it picks tools by reading them. A server can pass Inspector and still be functionally unpublishable because the model can't tell your tools apart.\n\nSo the pre-publish question isn't \"does it run?\" It's **\"is it publishable?\"** — will a real agent, with no docs and no human in the loop, use it correctly?\n\n`initialize`\n\n.`initialize`\n\nfast.`create_issue`\n\nexists in a dozen servers. If yours collides, the model guesses. Namespace or specify.`server.json`\n\nso the official MCP Registry can discover you. Devs find tools at install-time, not search-time.You can walk this list by hand, or run it:\n\n```\nnpx @incultnitollc/mcp-probe score \"node ./your-server.js\"\n```\n\n`mcp-probe`\n\nconnects to your server, runs all ten checks, and returns a **0–100 publishability score** across five axes — description quality, enum/shape correctness, mutation legibility, anti-\"restate the name\" clauses, and distribution metadata. A passing server clears ~80. The official reference servers sit at 60 (the description cap fires on every one). A typical first-draft community server lands in the 40s.\n\nWire it into CI so it runs on every release:\n\n```\n# .github/workflows/publishability.yml\n- run: npx @incultnitollc/mcp-probe score \"node ./dist/server.js\" --fail-under 80\n```\n\nThe exit code gates the publish. Your server can't regress below the bar you set.\n\nIf you do nothing else: **rewrite your tool descriptions so a model with no context could choose correctly between yours and a similarly named tool.** That single fix moves more servers across the publishable line than any other on this list — and it's the one almost everyone skips.\n\n`mcp-probe`\n\nis an open-source CLI for testing and scoring MCP servers before you publish. `npx @incultnitollc/mcp-probe`\n\n· [github.com/incultnitollc/mcp-probe](https://github.com/incultnitollc/mcp-probe)", "url": "https://wpnews.pro/news/the-mcp-server-pre-publish-checklist", "canonical_source": "https://dev.to/incultnitollc/the-mcp-server-pre-publish-checklist-5h4e", "published_at": "2026-06-15 08:38:37+00:00", "updated_at": "2026-06-15 08:40:39.697799+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "large-language-models"], "entities": ["Incultnitollc", "mcp-probe", "Anthropic", "MCP Registry", "GitHub"], "alternates": {"html": "https://wpnews.pro/news/the-mcp-server-pre-publish-checklist", "markdown": "https://wpnews.pro/news/the-mcp-server-pre-publish-checklist.md", "text": "https://wpnews.pro/news/the-mcp-server-pre-publish-checklist.txt", "jsonld": "https://wpnews.pro/news/the-mcp-server-pre-publish-checklist.jsonld"}}