Skip to content

feat(docs): document the MCP server and list GitHub releases - #24

Merged
thoda-dev merged 3 commits into
masterfrom
documentation-update
Aug 28, 2026
Merged

feat(docs): document the MCP server and list GitHub releases#24
thoda-dev merged 3 commits into
masterfrom
documentation-update

Conversation

@thoda-dev

Copy link
Copy Markdown
Owner

What this changes

Closes #23

Two pages on the documentation site: Doc MCP server, under Getting Started, and Releases, a
top-level entry that reads the GitHub releases API at request time.

Why

The MCP server has been live on /mcp since Docus started serving it, complete with a deeplink route
for Cursor and VS Code, and nothing on the site pointed at it. The releases only existed on GitHub,
so the docs stopped at "install it" and never said what had changed since.

What's in it

mcp.name and mcp.description in nuxt.config.ts. The handshake advertised
"name": "". Clients list the server by that name, and /mcp/deeplink puts it in the install
payload, so it was worth fixing before pointing readers at it.

The install buttons (McpInstall.vue). Cursor and VS Code go through the module's own
/mcp/deeplink?ide=… route. Claude uses
claude.ai/customize/connectors?modal=add-custom-connector&connectorName=…&connectorUrl=…, which
Anthropic added in May — it pre-fills the
dialog and claude.ai then asks the user to confirm the URL, since the link comes from outside.
ChatGPT has no equivalent deeplink, so it is documented by hand instead of given a button that would
not do what the others do.

Every URL is built from the request origin, so a self-hosted docs instance hands out its own endpoint
rather than shhh-docs.thoda.dev.

The releases page (server/api/releases.get.ts + GithubReleases.vue). The handler caches for
30 minutes: unauthenticated GitHub allows 60 calls an hour per IP, and that budget is shared by every
visitor of the instance, so a per-hit fetch would get a busy instance rate-limited.

Two routeRules with prerender: false. crawlLinks is on, so both pages would otherwise be
baked at build time — freezing the release list, and worse, freezing the MCP URLs to the
prerenderer's http://localhost. Vue does not correct that kind of attribute mismatch on hydration
in a production build, so the Claude button would have shipped pointing at localhost. Verified on a
production build behind a Host: header that both pages now render the right origin.

Checks

  • pnpm lint, pnpm typecheck and pnpm test pass (119 tests) — though all three are scoped to
    apps/app, which this branch does not touch. The check that matters here is
    pnpm --filter docs exec nuxt build followed by serving .output, which is what I ran.
  • Schema change? None
  • Touches crypto, authorization, or the paste read counter? None of them. Two things do deserve a
    closer read:
    • Release bodies are third-party input. They are parsed with parseMarkdown and rendered through
      the docs' prose components — no v-html anywhere. But remark-mdc is enabled, so a ::component
      written into a GitHub release body would resolve against the site's global components. Only a
      maintainer can publish a release, so the input is trusted, but it is worth knowing that the trust
      boundary is "whoever can publish a release", not "nothing".
    • The MCP page makes claims about what the server can and cannot reach. Worth reading against
      docus/server/mcp/tools/ rather than taking the page's word for it.

AI assistance

  • An AI tool was used — Claude Code (Opus 5) wrote both pages, the two components and the API
    handler, and verified them against a dev and a production build. I reviewed the result and
    retitled the MCP page to make clear it is the documentation's server, not the tool's.

🤖 Generated with Claude Code

Copilot AI lite review requested due to automatic review settings August 28, 2026 14:25

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are a couple of user-facing robustness/docs issues (clipboard copy failure handling and self-host vs hosted MCP URL clarity) that should be addressed before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds first-class documentation for the docs site’s MCP endpoint and introduces a Releases page that renders GitHub releases at request time (with server-side caching) so the docs don’t lag behind published versions.

Changes:

  • Add /releases page backed by a cached Nitro API endpoint that fetches and parses GitHub releases.
  • Add “Doc MCP server” getting-started page plus an install UI component with IDE-specific deeplinks.
  • Configure MCP handshake metadata and disable prerendering for the MCP + releases routes to avoid freezing build-time origins/data.
File summaries
File Description
apps/docs/server/api/releases.get.ts New cached API endpoint to fetch GitHub releases and parse bodies into an MDC AST.
apps/docs/nuxt.config.ts Sets MCP server name/description and adds routeRules to disable prerender for /releases and /getting-started/mcp.
apps/docs/content/4.releases.md New top-level Releases page that embeds the GitHub releases component.
apps/docs/content/1.getting-started/2.mcp.md New MCP documentation page describing endpoint, tools, and install instructions.
apps/docs/app/components/mdc/McpInstall.vue New UI component that builds origin-based MCP URLs and provides install/copy actions.
apps/docs/app/components/mdc/GithubReleases.vue New UI component to fetch and render the releases list (loading + error states).
Review details
  • Files reviewed: 6/6 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread apps/docs/app/components/mdc/McpInstall.vue
Comment thread apps/docs/content/1.getting-started/2.mcp.md
@thoda-dev
thoda-dev merged commit 0c51812 into master Aug 28, 2026
5 checks passed
@thoda-dev
thoda-dev deleted the documentation-update branch August 28, 2026 14:46
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.

Docs: nothing documents the MCP server, and there is no release list

2 participants