MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

D
Dotvvm Docs MCP

An MCP (Model Context Protocol) server that exposes DotVVM UI control documentation to AI assistants.

Created 3/18/2026
Updated about 4 hours ago
Repository documentation and setup instructions

dotvvm-docs-mcp

An MCP (Model Context Protocol) server that exposes DotVVM UI control documentation to AI assistants. Documentation is sourced directly from the riganti/dotvvm-docs GitHub repository (branch 4.0) and cached locally for 30 days.

Status: Early prototype — not yet stable. Expect breaking changes. Not yet published to npm. The npx @madev/dotvvm-docs-mcp install instructions below will work once the package is released.

Prerequisites

  • Node.js 18+ (native fetch required)
  • npm

Development setup

npm install
npm run dev        # runs via tsx (no build step needed)

npm run dev starts the server on stdio. It does not print a prompt — this is expected, since MCP servers communicate over JSON-RPC on stdin/stdout.

Building

npm run build      # compiles TypeScript to dist/
npm start          # runs compiled output

MCP tools

| Tool | Description | |------|-------------| | list_dotvvm_controls | Lists all discovered controls. Accepts optional category or prefix filter. | | get_dotvvm_control_docs | Returns composed Markdown docs for a control (description, HTML output, code samples, ViewModels). |

Control naming

DotVVM controls are identified by a tag prefix that maps to a namespace:

| Prefix | Namespace / Category | |--------|----------------------| | dot: | Built-in controls (builtin) | | auto: | Auto UI controls (builtin-autoui) | | bs: | Bootstrap 3 (bootstrap) | | bs4: | Bootstrap 4 (bootstrap4) | | bs5: | Bootstrap 5 (bootstrap5) | | bp: | Business Pack + Messaging (businesspack, businesspack-messaging) |

Use prefix:Name syntax to disambiguate controls that exist in multiple namespaces — e.g. dot:Button, bp:GridView, bs5:Alert.

Integrating with Claude Code

Add to your Claude Code MCP config (.claude/settings.json or global settings):

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

Integrating with Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

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

Restart Claude Desktop after editing the config.

Local development

To use a local checkout instead of the published package:

{
  "mcpServers": {
    "dotvvm-docs": {
      "command": "npx",
      "args": ["tsx", "/path/to/dotvvm-docs-mcp/src/index.ts"]
    }
  }
}

Caching

Control discovery and documentation are cached to disk at:

~/.dotvvm-docs-mcp/cache/
├── _registry.json          # control list (from GitHub API)
├── builtin__Button.json    # per-control docs
└── ...

Cache TTL is 30 days. To force a refresh, delete the relevant .json file or the entire cache directory.

Project structure

src/
├── index.ts      # MCP server entry point, tool definitions
├── controls.ts   # Control discovery via GitHub API + prefix resolution
├── fetcher.ts    # Raw content fetcher + Markdown composition
└── cache.ts      # File-based disk cache (30-day TTL)

Data source

All documentation is fetched from:

  • Directory listings: https://api.github.com/repos/riganti/dotvvm-docs/contents/Controls/{category}?ref=4.0
  • Raw content: https://raw.githubusercontent.com/riganti/dotvvm-docs/4.0/Controls/{category}/{ControlName}/

Each control directory may contain control.md, output.md, and sample{N}/ subdirectories with page.dothtml, ViewModel.cs, and sample.md.

Quick Setup
Installation guide for this server

Install Package (if required)

npx @modelcontextprotocol/server-dotvvm-docs-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "madev-dotvvm-docs-mcp": { "command": "npx", "args": [ "madev-dotvvm-docs-mcp" ] } } }