DRYL Components MCP
A read-only MCP server for the DRYL Blazor UI component library that allows coding agents to search for components, retrieve exact API parameters and enum members, access CSS tokens for theming, and validate Razor markup against the real API.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://components.dryl.dev/mcpWhat you can do with it
- Search for available Blazor UI components
- Get exact parameters and enum members for a component
- Retrieve CSS variables for theming
- Validate Razor markup against the API
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- dryl-components 3.13.0
- MCP protocol
- 2025-06-18
- Tools
- 4 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {},
"logging": {}
}Tools
4 advertised
search_components — Search DRYL components
Find DRYL Blazor components (DRYL.Components and DRYL.Components.Agents) by name, title, category or purpose. Use this first when you need a component for a job; then call get_component for its exact API.
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"description": "Maximum number of results, 1–50. Default 10."
},
"query": {
"type": "string",
"description": "What to look for: a component name with or without the 'Dryl' prefix ('button', 'DrylDatePicker'), a category ('Inputs') or a purpose ('date', 'chart', 'streaming text')."
}
}
}{
"type": "object",
"required": [
"version",
"results",
"hint"
],
"properties": {
"hint": {
"type": [
"string",
"null"
]
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"category",
"summary",
"aiAware",
"docsUrl"
],
"properties": {
"name": {
"type": "string"
},
"aiAware": {
"type": "boolean"
},
"docsUrl": {
"type": [
"string",
"null"
]
},
"summary": {
"type": "string"
},
"category": {
"type": "string"
}
}
}
},
"version": {
"type": "string"
}
}
}{
"title": "Search DRYL components",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}get_component — Get a DRYL component's API
The exact public API of one DRYL component: every parameter with type, default and description, the members of every enum it uses, its public methods and a canonical Razor example. DRYL variants are enums, never strings: write an enum value as qualifiedName.Member (e.g. Variant="DrylButton.ButtonVariant.Secondary") — many enums are nested in their component, so the bare enum name does not compile.
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Component name, case-insensitive, with or without the 'Dryl' prefix: 'DrylButton', 'button'."
}
}
}{
"type": "object",
"required": [
"version",
"name",
"category",
"summary",
"aiAware",
"docsUrl",
"apiUrl",
"parameters",
"enums",
"methods",
"example"
],
"properties": {
"name": {
"type": "string"
},
"enums": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"qualifiedName",
"description",
"members"
],
"properties": {
"name": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description"
],
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"description": {
"type": "string"
},
"qualifiedName": {
"type": "string"
}
}
}
},
"apiUrl": {
"type": "string"
},
"aiAware": {
"type": "boolean"
},
"docsUrl": {
"type": [
"string",
"null"
]
},
"example": {
"type": [
"string",
"null"
]
},
"methods": {
"type": "array",
"items": {
"type": "object",
"required": [
"signature",
"returnType",
"description"
],
"properties": {
"signature": {
"type": "string"
},
"returnType": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"summary": {
"type": "string"
},
"version": {
"type": "string"
},
"category": {
"type": "string"
},
"parameters": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"type",
"default",
"required",
"kind",
"cascading",
"description"
],
"properties": {
"kind": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"default": {
"type": "string"
},
"required": {
"type": "boolean"
},
"cascading": {
"type": "boolean"
},
"description": {
"type": "string"
}
}
}
}
}
}{
"title": "Get a DRYL component's API",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}get_tokens — Get DRYL design tokens
The CSS custom properties DRYL styles itself with, grouped (colors, glass, accent, spacing, radius, motion, …), with the dark value and — where light mode differs — the light value. Reference these with var(--name) in your CSS instead of writing literal colors, sizes or durations; DRYL follows the user's color mode through them.
{
"type": "object",
"properties": {
"category": {
"type": [
"string",
"null"
],
"default": null,
"description": "Optional group name, case-insensitive ('Motion', 'Spacing'). Omit to get every group."
}
}
}{
"type": "object",
"required": [
"version",
"categories"
],
"properties": {
"version": {
"type": "string"
},
"categories": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"description",
"tokens"
],
"properties": {
"name": {
"type": "string"
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"dark",
"light",
"note"
],
"properties": {
"dark": {
"type": "string"
},
"name": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
]
},
"light": {
"type": [
"string",
"null"
]
}
}
}
},
"description": {
"type": "string"
}
}
}
}
}
}{
"title": "Get DRYL design tokens",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}validate_markup — Validate DRYL Razor markup
Check a Razor snippet's <Dryl…> tags against DRYL's real API before you finish: unknown components, unknown parameters, and enum parameters given a string or a member that does not exist — each with a suggested fix. Call it on every DRYL markup you write or change. It scans tags; it does not compile Razor.
{
"type": "object",
"required": [
"razor"
],
"properties": {
"razor": {
"type": "string",
"description": "The Razor markup to check — a component, a page or a fragment; up to 50,000 characters."
}
}
}{
"type": "object",
"required": [
"version",
"valid",
"findings",
"notChecked"
],
"properties": {
"valid": {
"type": "boolean"
},
"version": {
"type": "string"
},
"findings": {
"type": "array",
"items": {
"type": "object",
"required": [
"line",
"kind",
"severity",
"message",
"suggestion"
],
"properties": {
"kind": {
"type": "string"
},
"line": {
"type": "integer"
},
"message": {
"type": "string"
},
"severity": {
"type": "string"
},
"suggestion": {
"type": [
"string",
"null"
]
}
}
}
},
"notChecked": {
"type": "string"
}
}
}{
"title": "Validate DRYL Razor markup",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1373 ms
- 95th percentile latency
- 1373 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1373 ms · metadata changed · 4 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http dryl-components-mcp https://components.dryl.dev/mcpCodex
codex mcp add dryl-components-mcp --url https://components.dryl.dev/mcpCursor
{
"mcpServers": {
"dryl-components-mcp": {
"url": "https://components.dryl.dev/mcp"
}
}
}Cline
{
"mcpServers": {
"dryl-components-mcp": {
"type": "streamableHttp",
"url": "https://components.dryl.dev/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"dryl-components-mcp": {
"type": "http",
"url": "https://components.dryl.dev/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http dryl-components-mcp https://components.dryl.dev/mcpClaude Desktop
{
"mcpServers": {
"dryl-components-mcp": {
"url": "https://components.dryl.dev/mcp"
}
}
}Windsurf
{
"mcpServers": {
"dryl-components-mcp": {
"serverUrl": "https://components.dryl.dev/mcp"
}
}
}Let your agent find its tools
Find servers like DRYL Components MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other developer tools servers
Do you run DRYL Components MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.