Skip to main content
Version: v2

Documentation MCP Server

@veecode-platform/docs-mcp is an MCP server that gives your AI coding agent — Claude Code, Codex CLI, and any other MCP client — first-class search and read access to the VeeCode Platform documentation for all four products (DevPortal, Platform, Admin-UI, VKDR-CLI). Instead of pasting doc snippets into a prompt, the agent queries the docs directly.

It runs locally over stdio, needs no API key, and is distributed on npm — so you never install a specific version by hand: npx always resolves the latest published release.

This is not the in-portal MCP

There are two different MCP servers in the VeeCode ecosystem, and they solve different problems:

  • This page — the documentation MCP. A local CLI tool that lets an agent read the written docs you are looking at now. No running DevPortal required.
  • The platform MCP — an HTTP server your running DevPortal exposes so agents can query the live catalog, TechDocs, and scaffolder templates. That one is covered in MCP — AI Tooling Integration.

Install

The commands below are unpinned on purpose — npx -y fetches the latest published release on each launch and caches it, so there is no version to keep up to date.

Claude Code

claude mcp add veecode-docs --scope user \
-- npx -y @veecode-platform/docs-mcp

npx downloads the package on first call (~5s) and caches it afterwards.

Manual config (~/.mcp.json)

Any MCP client that reads ~/.mcp.json (or a project-level .mcp.json) can use the same command:

{
"mcpServers": {
"veecode-docs": {
"command": "npx",
"args": ["-y", "@veecode-platform/docs-mcp"]
}
}
}

Codex CLI

Add to ~/.codex/config.toml:

[mcp_servers.veecode-docs]
command = "npx"
args = ["-y", "@veecode-platform/docs-mcp"]

Without npx at launch

If you'd rather not depend on npx resolution every time, install the binary globally and point the client at it:

npm install -g @veecode-platform/docs-mcp
claude mcp add veecode-docs --scope user -- veecode-docs-mcp

Choosing the docs version (V1 or V2)

The server serves one DevPortal docs version per instance — it never mixes them. The default is V2, the current default docs line. Select the version with the --version flag (or the VEECODE_DOCS_MCP_VERSION environment variable):

  • v2 (default) — the unified veecode/devportal / presets release.
  • v1 — the prior split-image / profiles release (VEECODE_PROFILE), still supported with security backports.

To point an instance at the V1 docs, pass --version v1:

claude mcp add veecode-docs-v1 --scope user \
-- npx -y @veecode-platform/docs-mcp --version v1

You can register both side by side under different names:

{
"mcpServers": {
"veecode-docs": {
"command": "npx",
"args": ["-y", "@veecode-platform/docs-mcp"]
},
"veecode-docs-v1": {
"command": "npx",
"args": ["-y", "@veecode-platform/docs-mcp", "--version", "v1"]
}
}
}

The choice is bound for the whole session: search and read only return that version, so there is no cross-version drift. (platform, admin-ui, and vkdr docs are version-neutral and present in both.) Confirm which version an instance loaded with the get_snapshot_info tool — check its docs_version field.

Not sure which version you run? See Which version am I running?.

Tools

ToolPurpose
search_docsBM25 search across all sections; filter by product, limit results
get_docFetch a doc by path; optionally a specific section by anchor
get_doc_outlineFrontmatter + heading tree only — a cheap preview
list_productsOverview of the four VeeCode products
list_docsDirectory tree within a product
get_snapshot_infoLoaded snapshot version, docs_version (v1/v2), and freshness

Example prompts

Once the server is registered, ask your agent naturally — it picks the right tool. For example:

  • "Search the VeeCode docs for how to enable RBAC in DevPortal."
  • "Using the veecode-docs MCP, show me the preset for GitLab integration."
  • "What VEECODE_PRESETS do I need to migrate from the V1 gitlab profile?"

Environment variables

VariableEffect
VEECODE_DOCS_MCP_VERSION=v1|v2Docs version to serve (default v2). Same as the --version flag.
VEECODE_DOCS_MCP_OFFLINE=1Skip the remote refresh check
VEECODE_DOCS_MCP_SNAPSHOT_URL=<url>Override the snapshot URL (takes precedence over the version default)
VEECODE_DOCS_MCP_CACHE_DIR=<path>Override the cache directory

How it stays fresh

The package ships with both version snapshots bundled at publish time. On every launch, the server makes a non-blocking HEAD request to the snapshot URL for the selected version; if a newer snapshot exists, it downloads it into ~/.cache/veecode-docs-mcp/ for use on the next launch. The refresh is version-scoped, so it never pulls the other version's content, and a running session never swaps mid-conversation — the agent's view of the docs is stable for the lifetime of the session.

Troubleshooting

SymptomLikely causeFix
Server doesn't appear in the clientThe MCP entry wasn't picked upRestart the client after editing ~/.mcp.json / running claude mcp add; confirm the entry with claude mcp list
Results look out of dateCached snapshot from a previous launchThe refresh applies on the next launch — restart the server once; to force a clean pull, delete ~/.cache/veecode-docs-mcp/
Wrong docs version in resultsInstance bound to the other versionCheck get_snapshot_info (docs_version); register a separate instance with the correct --version
npx fails at launch behind a proxy/offlineNo registry access to resolve the packageInstall globally (npm i -g @veecode-platform/docs-mcp) and point the client at veecode-docs-mcp; set VEECODE_DOCS_MCP_OFFLINE=1 to skip the refresh check