@depthark/css-first
The @depthark/css-first server is an intelligent CSS solution advisor that provides context-aware recommendations for UI implementation with MDN documentation integration and browser compatibility checking.
Core Capabilities:
Suggest CSS Solutions (
suggest_css_solution): Get intelligent, ranked CSS recommendations based on semantic analysis, framework detection, and preferred approach (modern, compatible, or progressive) with confidence scoringCheck Browser Support (
check_css_browser_support): Verify real-time browser compatibility for CSS properties using hybrid MDN/context7 integration, with options to include experimental featuresGet Property Details (
get_css_property_details): Retrieve comprehensive CSS property documentation including syntax, use cases, and optional code examplesConfirm Property Usage (
confirm_css_property_usage): Receive implementation guidance and framework-specific recommendations with optional fallback solutions through a consent-driven workflow
Key Features:
Project Context Awareness: Automatically detects frameworks (React, Vue, Angular, Svelte), CSS libraries (Tailwind, Bootstrap, Material-UI), and build tools
Intelligent Ranking: Scores suggestions based on intent match, browser support, and framework compatibility
Logical-First Approach: Prioritizes internationalization-friendly logical properties and units for RTL and vertical writing mode support
Modern CSS Support: Covers latest features (2021-2025) including container queries, CSS nesting,
:has(), dynamic viewport units, and scroll-driven animationsAutomated Feature Discovery: Continuously integrates new CSS features from MDN with intelligent categorization
Provides CSS-first solutions for UI implementation tasks by suggesting CSS properties, checking browser support, and offering implementation guidance with fallback strategies.
Integrates with Mozilla Developer Network (MDN) documentation to fetch accurate CSS property information, browser compatibility data, and implementation examples.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@depthark/css-firstcreate a responsive card layout with hover animations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CSS First
An advanced MCP (Model Context Protocol) server that provides intelligent, context-aware CSS-first solutions for UI implementation tasks. Features semantic analysis, framework detection, and intelligent ranking with direct MDN integration.
Setup
Choose between Remote MCP (Server-Sent Events) or Local MCP (stdio) installation:
š Remote MCP via SSE (Recommended)
Connect to our hosted Cloudflare Worker instance - no local installation required:
URL: https://mcp-css-first.chylik-lukas.workers.dev/sse
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"css-first-remote": {
"url": "https://mcp-css-first.chylik-lukas.workers.dev/sse",
"transport": "sse"
}
}
}Cursor / Windsurf / Cline
Add to your MCP settings:
{
"mcpServers": {
"css-first-remote": {
"serverUrl": "https://mcp-css-first.chylik-lukas.workers.dev/mcp"
}
}
}Claude Code CLI
Edit ~/.config/claude/config.json and add:
{
"mcpServers": {
"css-first-remote": {
"url": "https://mcp-css-first.chylik-lukas.workers.dev/sse",
"transport": "sse"
}
}
}š» Local MCP via stdio
Install and run locally using npm package:
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"css-first": {
"command": "npx",
"args": ["-y", "@depthark/css-first"]
}
}
}Cursor
Add to MCP settings (.cursor/mcp_settings.json or via Settings UI):
{
"mcpServers": {
"css-first": {
"command": "npx",
"args": ["-y", "@depthark/css-first"]
}
}
}Windsurf
Add to MCP configuration:
{
"mcpServers": {
"css-first": {
"command": "npx",
"args": ["-y", "@depthark/css-first"]
}
}
}Cline (VS Code Extension)
Add to Cline MCP settings:
{
"mcpServers": {
"css-first": {
"command": "npx",
"args": ["-y", "@depthark/css-first"]
}
}
}Claude Code CLI
claude mcp add css-first npx -y @depthark/css-firstCodex
Add to mcp_servers.toml:
[mcp_servers.css-first]
command = "npx"
args = ["-y", "@depthark/css-first"]Zed Editor
Add to Zed settings:
{
"context_servers": {
"css-first": {
"command": {
"path": "npx",
"args": ["-y", "@depthark/css-first"]
}
}
}
}š Deploy Your Own Remote Instance
Deploy your own Cloudflare Worker:
git clone https://github.com/luko248/css-first
cd css-first
bun install
bun run build:core
bun run deploy:workerThen use your custom URL:
https://mcp-css-first.<your-subdomain>.workers.dev/sseRelated MCP server: mdnlookup
Usage
After adding the configuration:
Restart your MCP client
Ask CSS questions like:
"Create a responsive card layout"
"Center a div vertically and horizontally"
"Add dark mode support"
"Make a sticky header"
"Create organic rounded corners with corner-shape"
"Design modern buttons with superellipse curves"
š Key Features
Intelligent Analysis
Semantic Intent Recognition: Understands user intent through advanced pattern matching (layout, animation, spacing, etc.)
Confidence Scoring: Provides transparency with confidence levels for suggestions
Context-Aware Keywords: Enhanced keyword extraction with semantic understanding
Project Context Awareness
Framework Detection: Automatically detects React, Vue, Angular, Svelte projects
CSS Framework Recognition: Supports Tailwind, Bootstrap, Material-UI, Chakra UI
Build Tool Integration: Recognizes Webpack, Vite, Parcel, Rollup environments
Constraint Analysis: Understands project constraints (performance, accessibility, responsive)
Enhanced MDN Integration
Direct MDN Parsing: Pulls property data straight from MDN pages
Performance Caching: 1-hour intelligent caching for improved response times
Real-time Browser Support: Compatibility data derived from MDN content
Intelligent Ranking
Relevance Scoring: Suggestions ranked by intent match, browser support, and framework compatibility
Category-Prioritized Search: Focuses on most relevant CSS feature categories
Framework-Specific Recommendations: Tailored advice for your tech stack
User Experience
Consent-Driven Workflow: User approval required before property recommendations
Detailed Analysis: Optional semantic analysis breakdown for transparency
Implementation Guidance: Framework-specific best practices and code examples
Development Installation
For contributors and advanced users who want to modify the source:
git clone https://github.com/luko248/css-first
cd css-first
bun install
bun run buildDevelopment Usage
For development/testing with local builds:
{
"mcpServers": {
"@depthark/css-first": {
"command": "node",
"args": ["/absolute/path/to/css-first/packages/cli/dist/cli.js"]
}
}
}Available Tools
1. suggest_css_solution ā
Enhanced CSS-first solution suggester with semantic analysis, context awareness, and intelligent ranking.
Parameters:
task_description(string): Description of the UI task or problem to solvepreferred_approach(optional): 'modern', 'compatible', or 'progressive'target_browsers(optional): Array of target browsers/versionsproject_context(optional): Project context (framework, existing CSS patterns, constraints) NEWinclude_analysis(optional): Include semantic analysis details in response NEWbaseline(optional): CSS Baseline availability filter: "Widely Available", "Newly Available", "Limited Availability", "Experimental" (fetched from MDN; falls back to support-level heuristics if unavailable)max_suggestions(optional): Limit number of suggestions (default 3)response_detail(optional): "compact" (default) or "full" response fieldscompact returns minimal fields (property, description, support_level, baseline, overall_support, mdn_url)
Examples:
Basic Usage:
{
"task_description": "I need to center a div horizontally and vertically",
"preferred_approach": "modern"
}With Project Context:
{
"task_description": "Create a responsive card layout with hover animations",
"preferred_approach": "modern",
"project_context": "React project using Tailwind CSS, targeting Chrome 90+, performance-critical",
"include_analysis": true
}With Baseline Filter:
{
"task_description": "Create a tooltip",
"baseline": "Experimental"
}Full Response Fields:
{
"task_description": "Create a tooltip",
"response_detail": "full",
"max_suggestions": 5
}Response includes:
Intelligently ranked CSS suggestions
Framework-specific recommendations
Semantic analysis breakdown (optional)
Confidence scoring and intent detection
Baseline availability labels with emoji color tags
Support level derived from MDN browser data
Compact responses by default to reduce token usage
2. check_css_browser_support
Checks browser support for specific CSS properties using MDN data.
Parameters:
css_property(string): CSS property name to checkinclude_experimental(optional boolean): Include experimental features
Example:
{
"css_property": "flexbox",
"include_experimental": false
}3. get_css_property_details
Retrieves comprehensive information about a CSS property from MDN documentation.
Parameters:
css_property(string): CSS property name to get details forinclude_examples(optional boolean): Include code examples
Example:
{
"css_property": "grid",
"include_examples": true
}4. confirm_css_property_usage
Confirms user consent for using a specific CSS property and provides implementation guidance.
Parameters:
css_property(string): CSS property name user wants to useuser_consent(boolean): User consent to use this CSS propertyfallback_needed(optional boolean): Whether fallback solutions are needed
Example:
{
"css_property": "container-queries",
"user_consent": true,
"fallback_needed": true
}š§ How It Works
Intelligent Analysis Pipeline
Semantic Intent Recognition: Advanced regex patterns analyze task descriptions to understand user intent (layout, animation, spacing, responsive, visual, interaction)
Project Context Analysis: Detects frameworks, CSS libraries, build tools, and constraints from project context string
MDN Integration:
Direct MDN parsing for property details and support data
Caching: 1-hour intelligent cache for performance
Intelligent Ranking: Scores suggestions based on:
Intent match relevance
Browser support level
Framework compatibility
User confidence multiplier
Context-Aware Recommendations: Provides framework-specific guidance and best practices
User Consent & Implementation: Consent-driven workflow with detailed implementation guidance
Example Analysis Flow
Input: "Create a responsive navigation menu with smooth animations"
ā
Intent Detection: layout + responsive + animation (85% confidence)
ā
Context: React + Tailwind detected
ā
Ranked Suggestions:
1. Flexbox layout (95% support) + CSS transitions
2. CSS Grid (92% support) + transform animations
3. Container queries (75% support) with fallbacks
ā
Framework Recommendations: "Use Tailwind's responsive prefixes", "Consider React transition components"Development
# Install dependencies
bun install
# Build all packages
bun run build
# Build specific packages
bun run build:core # @css-first/core
bun run build:cli # @depthark/css-first
# Type check
bun run typecheck
# Lint code
bun run lint
# Deploy to Cloudflare Workers
bun run deploy:worker
# Publish CLI to npm
bun run publish:cliš Project Structure (Bun Monorepo)
packages/
āāā core/ # @css-first/core - shared CSS services
ā āāā src/
ā āāā index.ts # CSS services entry point
ā āāā types.ts # TypeScript interfaces and enums
ā āāā mdnClient.ts # MDN client and parser
ā āāā suggestions.ts # Semantic analysis and intelligent ranking
ā āāā guidance.ts # Implementation guidance
ā āāā contextAnalyzer.ts # Project context detection
ā āāā features/ # Modular CSS feature definitions
ā āāā animation/ # Animation and transition features
ā āāā layout/ # Flexbox, Grid features
ā āāā logical/ # Logical properties
ā āāā responsive/ # Responsive design
ā āāā visual/ # Visual effects
ā āāā ... # More feature modules
āāā cli/ # @depthark/css-first - npm package
ā āāā src/
ā āāā index.ts # MCP server (stdio/HTTP transport)
āāā worker/ # @css-first/worker - Cloudflare Workers
āāā src/
ā āāā index.ts # McpAgent class for remote MCP (SSE)
āāā wrangler.toml # Worker-specific configKey Architecture Benefits
Monorepo Structure: Shared core, separate deployments (npm + Cloudflare)
Modular Design: Each CSS category has dedicated modules for maintainability
Semantic Analysis: Intent recognition and confidence scoring for accuracy
Context Awareness: Framework and project constraint detection
Performance Optimized: Intelligent caching and ranked results
Dual Deployment: Local CLI via npm, remote MCP via Cloudflare Workers
šÆ CSS Feature Coverage
Intelligent Categories
The enhanced system provides context-aware suggestions across:
Layout šļø: Flexbox, Grid, positioning, display modes
Animation āØ: CSS animations, transitions, transforms
Responsive š±: Container queries, media queries, viewport units
Visual šØ: Shadows, gradients, borders, effects
Interaction š±ļø: Hover states, focus, active, disabled
Logical Properties š: Writing-mode aware spacing and sizing
HTML APIs š§©: Dialogs, popovers, invoker commands
Typography š: Font properties, text alignment, spacing
Positioning š: Static, relative, absolute, fixed, sticky
Supported Feature Catalog
Logical Spacing
Logical Spacing Properties
Modern CSS Units
Layout (Flexbox)
Flexbox
Layout (Grid)
CSS Grid
CSS Subgrid
Animation
CSS Transitions
CSS Animations
CSS @starting-style
CSS interpolate-size
CSS Scroll Timeline
CSS View Timeline
CSS Animation Timeline
CSS Animation Range
CSS View Timeline Inset
CSS Timeline Scope
CSS View Transitions
Visual
CSS Gradients
CSS Transforms
Logical Border Properties
CSS Overflow
CSS Overflow Clip
CSS Overscroll Behavior
CSS Corner Shape
CSS -webkit-box-reflect
Responsive
Media Queries
Interaction
CSS Scroll Snap
Modern CSS Carousel with Pseudo-Elements
Selectors
Basic Selectors
Attribute Selectors
State Pseudo-classes
Structural Pseudo-classes
Modern Selectors
Pseudo-elements
Form Validation Selectors
Logical
CSS if() Function
HTML
Invoker Commands
Dialog closedby Attribute
Positioning
CSS Anchor Positioning
Anchor Positioning with Container Queries
Anchor Name
Position Anchor
Position Area
Position Try Properties
Position Visibility
Position Try At-Rule
Anchor Functions
Display
CSS Display Property
Display Contents
Flexbox Display
Grid Display
Inline Display Values
Block Display Values
Table Display Values
Display None
List Item Display
Flow Root Display
Subgrid Display
Modern: Container & Queries
CSS Container Queries
CSS Container Style Queries
CSS Container Scroll State Queries
CSS Anchor Positioning
Anchor Positioning with Container Queries
Expanded Range Syntax
Modern: Layout & Sizing
CSS Subgrid
CSS Masonry Layout
CSS Grid Lanes (Masonry)
CSS Sizing Properties
Flexbox gap Property
Enhanced Logical Properties
Mobile Viewport Heights
Stretch Sizing Keyword
CSS aspect-ratio
CSS Nesting
Modern: Color & Visual
CSS color-mix() Function
CSS color-contrast() Function
CSS accent-color
CSS color-scheme
CSS light-dark() Function
Enhanced Light-Dark Theme System
CSS backdrop-filter
CSS conic-gradient
CSS image-set() Function
Enhanced Text Decoration
Enhanced font-variant Properties
Text Box Trim
Modern: Motion & Transitions
Scroll-driven Animations
Scroll-triggered Animations
CSS View Transitions
View Transition Group Property
Scoped View Transitions
Modern: Interaction & UI Patterns
CSS Carousel with Modern Pseudo-Elements
Scroll-Driven Carousel Animations
CSS-Only Form Validation
CSS-Only Modal/Dialog
CSS-Only Tabs/Accordion
CSS-Only Navigation Patterns
CSS-Only Loading/Skeleton
Popover API
Interest Invokers
Scroll Target Group
Modern: Media & Environment
Enhanced prefers-* Media Queries
CSS forced-colors Media Query
CSS env() Function
CSS scroll-behavior
CSS overscroll-behavior
Modern: Functions & Syntax
CSS Enhanced Math Functions
CSS if() Conditional Function
CSS Custom Functions (@function)
CSS shape() Function
Advanced attr() Function
Tree Counting Functions
Customizable Select Element
Framework-Specific Features
React: Component-scoped styling, CSS-in-JS patterns
Vue: Scoped styles, transition components
Angular: ViewEncapsulation, Material Design integration
Svelte: Built-in scoped styling, reactive CSS
CSS Framework Integration
Tailwind: Utility-first patterns, responsive prefixes
Bootstrap: Grid system, utility classes
Material-UI: Theme customization, sx props
Chakra UI: Design system tokens
š Enhanced Browser Support Levels
Excellent (95%+): ā Safe for production use
Good (85%+): ā ļø Consider fallbacks for legacy browsers
Moderate (70%+): ā” Use with caution and provide fallbacks
Limited (<70%): š Consider alternative approaches
Experimental (varies): š§Ŗ Cutting-edge features with progressive enhancement
ā CSS Baseline Availability
Baseline labels are fetched from MDN and kept current; if MDN doesn't expose a Baseline status for a property, the server falls back to the support-level heuristic.
When you pass the baseline parameter, responses include an emoji tag per suggestion:
š¢ Widely Available: broadly supported and safe for most production usage
šµ Newly Available: recently supported, validate target browsers
š” Limited Availability: spotty support; use progressive enhancement
š£ Experimental: likely behind flags or drafts; only for experiments
š§ Automated Feature Discovery
This MCP features automated CSS feature discovery using MDN documentation. The system continuously discovers and integrates recent CSS features (2021-2025) with intelligent categorization.
Automated Feature Discovery
š¤ Auto-Discovery: Automatically finds and categorizes new CSS features from MDN
š Intelligent Categorization: Uses semantic analysis to categorize features by type
š Continuous Updates: Built-in mechanisms for ongoing feature maintenance
š Browser Support Analysis: Automatic extraction of compatibility information
Recently Integrated Features (2021-2025)
š Major CSS Features Added
Container Queries (2022): Element-based responsive design with logical units (
cqi,cqb) and style/scroll queriesCSS Nesting (2023): Native CSS nesting without preprocessors
:has() Pseudo-class (2022): Parent selection based on children
Dynamic Viewport Units (2022-2023): Complete logical viewport units (
dvi,dvb,svi,svb,lvi,lvb) with physical fallbackscolor-mix() Function (2021-2024): Advanced color mixing in different color spaces
Scroll-driven Animations (2023-2024): Animations driven by scroll progress
CSS Cascade Layers (2022): Better style organization with @layer
Subgrid (2021-2023): Grid items participating in parent grid
aspect-ratio Property (2021): Native aspect ratio control
Enhanced Math Functions (2021-2023): clamp(), round(), trigonometric functions
š± Responsive & Modern Layout
CSS Anchor Positioning (2024): Position elements relative to other elements
View Transitions (2023-2024): Smooth page/view transitions
Enhanced Logical Properties: Complete writing-mode aware spacing, sizing, and positioning
Container Style Queries: Query container's computed style values
Container Scroll State Queries: Query container's scroll state
Masonry Layout (Experimental): Pinterest-style layouts
šØ Visual & Color Enhancements
accent-color: Customize form control colors
color-scheme: Light/dark mode indication
light-dark() Function: Theme-aware color values
backdrop-filter: Glass morphism effects
conic-gradient: Conical gradients for complex designs
corner-shape (Experimental): Superellipse curves for organic, Apple-like rounded corners
Automated Update Commands
# Discover and integrate new CSS features from MDN
npm run update-features
# Run feature discovery (development)
npm run discover-featuresMDN Setup
Uses direct MDN parsing with caching and structured extraction
No external MCP dependencies required for documentation lookups
š Logical Units & Internationalization
This MCP implements a logical-first approach to CSS suggestions, prioritizing writing-mode aware properties for better internationalization support.
Logical Units Priority System
Viewport Units (Logical Preferred)
dvi,dvb(dynamic viewport inline/block) ādvw,dvh(physical fallback)svi,svb(small viewport inline/block) āsvw,svh(physical fallback)lvi,lvb(large viewport inline/block) ālvw,lvh(physical fallback)
Container Query Units (Logical Preferred)
cqi,cqb(container query inline/block) ācqw,cqh(physical fallback)
CSS Properties (Logical Preferred)
inline-size,block-sizeāwidth,height(physical fallback)margin-inline,margin-blockāmargin-left/right,margin-top/bottompadding-inline,padding-blockāpadding-left/right,padding-top/bottomborder-inline,border-blockāborder-left/right,border-top/bottominset-inline,inset-blockāleft/right,top/bottom
Advanced Container Queries
Size-based Container Queries (Enhanced)
@container (inline-size > 30cqi) {
.component {
gap: 2cqi;
}
}Style Queries (NEW)
@container style(--theme: dark) {
.card {
background: var(--dark-bg);
}
}Scroll State Queries (NEW)
@container scroll-state(stuck: top) {
.header {
backdrop-filter: blur(10px);
}
}Writing-Mode Awareness
RTL Language Support: Logical properties automatically adapt to right-to-left languages
Vertical Writing Modes: Properties work correctly with
writing-mode: vertical-rlInternational Compatibility: Suggestions prioritize globally compatible approaches
License
MIT
Available Tools
4 toolscheck_css_browser_supportB
Checks browser support for specific CSS properties using MDN data and provides detailed compatibility information.
| Name | Required | Description | Default |
|---|---|---|---|
| css_property | Yes | CSS property name to check browser support for | |
| include_experimental | No | Include experimental/draft features in results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does at a high level. It doesn't disclose behavioral traits like response format, error handling, rate limits, authentication needs, or whether it's a read-only operation. The mention of 'detailed compatibility information' is vague.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place by specifying the action, resource, data source, and output type without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is incomplete for a tool that returns 'detailed compatibility information.' It doesn't explain what the output looks like (e.g., browser versions, support levels), potential limitations, or how to interpret results. This leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., no examples of CSS property formats, no clarification on what 'experimental/draft features' entail). Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Checks') and resource ('browser support for specific CSS properties'), specifies the data source ('using MDN data'), and distinguishes from siblings by focusing on compatibility information rather than usage confirmation, property details, or solution suggestions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when browser compatibility information is needed, but provides no explicit guidance on when to use this tool versus the sibling tools (confirm_css_property_usage, get_css_property_details, suggest_css_solution). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_css_property_usageB
Confirms user consent for using a specific CSS property and provides implementation guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| css_property | Yes | CSS property name user wants to use | |
| user_consent | Yes | User consent to use this CSS property | |
| fallback_needed | No | Whether fallback solutions are needed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions confirming consent and providing guidance, but lacks details on what the tool actually does behaviorallyāe.g., whether it validates the CSS property, stores consent, returns specific guidance formats, or has any side effects like logging. This is a significant gap for a tool with potential implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place, with no redundancy or unnecessary details, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what the tool returns (e.g., guidance format), how it handles invalid inputs, or any behavioral traits like side effects. This leaves gaps for an AI agent to understand the full context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no additional meaning beyond what the schema providesāit doesn't explain how parameters interact (e.g., how 'user_consent' affects output) or provide examples. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Confirms user consent' and 'provides implementation guidance') and identifies the resource ('specific CSS property'). It distinguishes from sibling tools like 'check_css_browser_support' or 'get_css_property_details' by focusing on consent and guidance rather than support checks or details retrieval, though it doesn't explicitly name these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when user consent and CSS property implementation are needed, but it doesn't explicitly state when to use this tool versus alternatives like 'suggest_css_solution'. There's no guidance on prerequisites, exclusions, or specific contexts, leaving usage somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_css_property_detailsA
Retrieves comprehensive information about a CSS property from MDN documentation including syntax, examples, and use cases.
| Name | Required | Description | Default |
|---|---|---|---|
| css_property | Yes | CSS property name to get details for | |
| include_examples | No | Include code examples in the response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the tool retrieves information from MDN documentation and mentions what content is included (syntax, examples, use cases), but doesn't cover important behavioral aspects like rate limits, authentication needs, error handling, or response format. The description adds some context but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that efficiently communicates the tool's purpose, source, and content coverage. Every word earns its place with zero waste or redundancy. The description is appropriately sized for this type of lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with 2 parameters and no output schema, the description adequately covers the basic purpose but lacks important contextual details. Without annotations or output schema, it should ideally mention response format, error conditions, or limitations. The description is complete enough to understand what the tool does but not how to effectively use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description mentions 'examples' which relates to the 'include_examples' parameter, but doesn't add meaningful semantic context beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieves comprehensive information'), resource ('CSS property from MDN documentation'), and scope ('including syntax, examples, and use cases'). It distinguishes from siblings by focusing on documentation retrieval rather than browser support checking, usage confirmation, or solution suggestion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when detailed documentation about a CSS property is needed, but doesn't explicitly state when to use this tool versus alternatives like 'check_css_browser_support' or 'suggest_css_solution'. There's no guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_css_solutionC
CSS-ONLY solution engine with strict enforcement of modern CSS features. Provides zero-JavaScript solutions using cutting-edge CSS (2021-2025) with logical properties, modern carousels, and light-dark() theming.
| Name | Required | Description | Default |
|---|---|---|---|
| task_description | Yes | Description of the UI task or problem to solve | |
| preferred_approach | No | Preferred CSS approach - modern (latest features), compatible (wide browser support), or progressive (with fallbacks) | |
| target_browsers | No | Target browsers/versions (e.g., ["Chrome 90+", "Firefox 88+", "Safari 14+"]) | |
| project_context | No | Project context (framework, existing CSS patterns, constraints) | |
| include_analysis | No | Include semantic analysis details in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'strict enforcement of modern CSS features' and 'zero-JavaScript solutions', which hints at constraints, but doesn't detail what happens if inputs are invalid, whether it generates code or explanations, or any rate limits or authentication needs. For a generative tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the core functionality. It's front-loaded with the main purpose ('CSS-ONLY solution engine') and adds specifics without redundancy. However, it could be slightly more concise by avoiding the parenthetical date range.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a generative CSS tool with 5 parameters and no annotations or output schema, the description is incomplete. It lacks details on behavioral traits (e.g., output format, error handling), usage context versus siblings, and doesn't compensate for the absence of structured safety or output information. This leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds no additional meaning about parameters beyond what's in the schema (e.g., it doesn't clarify how 'preferred_approach' interacts with 'target_browsers'). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it's a 'CSS-ONLY solution engine' that provides 'zero-JavaScript solutions using cutting-edge CSS (2021-2025)'. It specifies the resource (CSS solutions) and the verb (provides/suggests). However, it doesn't explicitly differentiate from sibling tools like 'check_css_browser_support' or 'confirm_css_property_usage', which appear to be more diagnostic rather than generative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'strict enforcement of modern CSS features' and 'zero-JavaScript solutions', which implies it should be used for modern CSS-only tasks. However, it provides no explicit guidance on when to use this tool versus the sibling tools (e.g., 'check_css_browser_support' for compatibility checks). There's no mention of prerequisites, exclusions, or alternative scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: checking browser support, confirming user consent, retrieving property details, and suggesting solutions. The descriptions specify unique functions, making it easy for an agent to select the right tool without confusion.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., check_css_browser_support, get_css_property_details). The naming is predictable and readable throughout the set, with no deviations in style or convention.
With 4 tools, this server is well-scoped for its CSS-focused purpose. Each tool earns its place by covering distinct aspects of CSS development, from support checks to solution suggestions, without being too thin or bloated.
The tool set covers key workflows in CSS development: checking support, confirming usage, retrieving details, and suggesting solutions. A minor gap exists in direct manipulation or testing tools, but agents can work around this with the provided tools for most tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The OpenZeppelin Solidity Contracts MCP server integrates OpenZeppelin's security and style rules into AI-driven development workflows, enabling AI assistants to generate safe, correct, and production-ready smart contracts. It automatically validates generated code against OpenZeppelin standards (including imports, modifiers, naming conventions, and security checks) and supports various contract types including ERC-20, ERC-721, ERC-1155, Stablecoins, RWA, Governor, and Account contracts through prompt-driven workflows.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
A server to provide information about EOxElements custom elements for coding agents.
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides up-to-date CSS documentation and browser compatibility data from MDN through natural language queries. Features intelligent caching and supports all CSS properties, selectors, functions, and concepts with automatic normalization.215333ISC
- AlicenseNot gradedqualityDmaintenanceEnables searching and summarizing MDN Web Docs documentation directly from MCP-compatible clients. Allows developers to quickly retrieve concise documentation summaries for web technologies without leaving their workflow.6ISC
- AlicenseNot gradedqualityCmaintenanceAn MCP server that provides browser compatibility data and web API support information using caniuse.com, MDN BCD, and Web Features, enabling developers to check feature support across browsers and against browserslist configurations.215MIT
- AlicenseAqualityBmaintenanceA companion MCP server that makes CSS legible to AI agents by resolving cascade, tracing properties, and explaining what applies and why before an agent modifies styles.2163MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Luko248/css-first'
If you have feedback or need assistance with the MCP directory API, please join our Discord server