# Uno Platform MCP server

The Uno Platform MCP Server to get up-to-date docs and prompts

## Links
- Registry page: https://www.getdrio.com/mcp/uno-platform-uno

## Install
- Endpoint: https://mcp.platform.uno/v1
- Auth: Not captured

## Setup notes
- Remote endpoint: https://mcp.platform.uno/v1

## Tools
- uno_platform_docs_fetch - Fetch an Uno Platform documentation page in markdown format. 
This tool retrieves the latest complete content of Uno Platform documentation pages.

## When to Use This Tool
- When search results provide incomplete information or truncated content 
- When you need complete step-by-step procedures or tutorials
- When you need troubleshooting sections, prerequisites, or detailed explanations
- When search results reference a specific page that seems highly relevant
- For comprehensive guides that require full context 

## Usage Pattern 

Use this tool AFTER uno_platform_docs_search when you identify specific high-value pages that need complete content.
The search tool gives you an overview; this tool gives you the complete picture.

## Output Format
The output is formatted as markdown with preserved headings, code blocks, tables, and links converted to markdown format. Endpoint: https://mcp.platform.uno/v1
- uno_platform_usage_rules_init - <uno_platform_development_rules>
# Common Usage Rules for Uno Platform Development
The following sections define authoritative rules for building Uno Platform applications.
You MUST follow these rules to ensure consistency, maintainability, and adherence to best practices.

<guidelines>
CRITICAL: The design system is everything. Beautiful designs are your top priority.

- ALWAYS generate beautiful and responsive designs
- Maximize the reusability of UserControls
- ALWAYS consider the design system in `UnoFeatures` when making changes
- Make sure to wow the user with a really, really beautiful and well coded app! Otherwise you'll feel bad.
- ALWAYS inspire yourself from existing beautiful designs.
- NEVER implement a feature to switch between light and dark theme, it's not a priority. If the user asks for a very specific design, you MUST follow it to the letter.

- The app is using the Uno Skia Renderer backend, you can assume that all UI Controls and related features work on iOS, Android, macOS, Linux, Windows and WebAssembly.
- Controls: WinUI core and Uno Toolkit UI
- Resources / Styles:

- REUSE default or existing styles as much as possible
- You MUST create new styles and colors and Templates in App.xaml
- You MUST create specialized resource dictionaries referenced in App.xaml when overriding control styles (e.g. `Themes/TextBlock.xaml`)
- Do not mix a style with conflicting inline visual properties unless necessary. If you must override, use only existing Brush/Color resources — never hardcoded hex values
- If a style already encodes colors, do not override them unless necessary for semantic meaning
- ALWAYS use existing colors/brushes in resources to enhance user experience and guide attention
- USE colors strategically to improve ergonomics, wayfinding, and task completion
- Consider color as a tool for information architecture and user guidance
- NEVER use hardcoded colors in hex format #AARRGGBB

- **Theming:** Prefer **Material** if both Material and Fluent resources are present. See `.csproj` <UnoFeatures> for more info.
- **Typography**: Use existing TextBlock styles only; do not set explicit font sizes or weights.
- **Localization:** Generate `x:Uid` for visible/interactive elements using the pattern: `AppointmentPage.Label.PatientName` (adjust names per page/property).
- **Accessibility:** Set meaningful `AutomationProperties.*` where it makes sense for inputs, buttons, and templated list items.
- **Latency/Size:** Aim for concise markup that renders quickly

</guidelines>

<visual_assets>
- ALWAYS Use the app's assets when relevant
- If an asset is missing but can be replaced by an emoji, use the `FontIcon` control.
</visual_assets>

<data_binding_policy>
- NEVER use `{Binding StringFormat=...}`
- Binding from `bool` to `Visibility` is implicitly supported
- NEVER use WPF-only features (e.g., `x:Static`, `{x:Reference}`, `x:Static`, `sys:Object`, `{x:Reference}`) in bindings
- To concatenate strings you MUST use multiple `<Run Text="content" />` with bindings
- With MVUX/Reactive: ALWAYS using Bindings to bind the Command properties in XAML to the implicit `IAsyncCommand` that matches the public method name in the MVUX model.
- NEVER use the code-behind to invoke commands or methods on the MVUX Model.
- With MVVM: ALWAYS use Bindings to bind the Command properties in XAML to the public ICommand properties on the ViewModel.
- NEVER use the code-behind (`.xaml.cs`) to invoke commands or methods on the ViewModel.
- ALWAYS prefer using Bindings with the Mode as TwoWay for state updates instead of updating the properties in code-behind.
</data_binding_policy>

<app_navigation>
- With Uno Navigation Extensions: ALWAYS prefer the XAML-based navigation attached properties (`Navigation.Request` or `Region.Attached` and `Region.Name`).
- With Uno Navigation Extensions NEVER use the code-behind of the page (`.xaml.cs`) for invoking Navigation methods.
</app_navigation>

<commands_actions>
- Use color coding to help users quickly identify action types and importance levels.
- Button only-icons should ALWAYS use `ControlExtensions.Icon` when `UnoFeatures` toolkit is present, or an inner ImageIcon or FontIcon with fluent.
- NEVER use `AppBarButton` outside an `AppBar` or `CommandBar`. Use regular `Button` with an icon if needed.
- NEVER use `AppBarToggleButton` outside an `AppBar` or `CommandBar`. Use regular `ToggleSwitch` with an icon if needed.
</commands_actions>

<responsiveness_layout>
You are a UI layout designer.
When creating application page layouts, you must follow these rules and map them to XAML.  

<General>
- Use consistent design system → ResourceDictionary, StaticResource.  
- Focus user attention on task → Grid, StackPanel, Border.  
- Follow platform metaphors → NavigationView, CommandBar, Pivot, TabView.
</General>

<Spacing_Margins>

- Always include margins; text never touches screen edge → Margin ≥16px.  
- Spacing in multiples of 4px/8px → Margin, Padding, Spacing.  
- Inner padding for surfaces with text/icons; images may be edge-to-edge → Padding.
- ALWAYS consider HorizontalContentAlignment and VerticalContentAlignment when placing ContentControl based content.

</Spacing_Margins>

<Grid>

- Content must align to grid → Grid.ColumnDefinitions, Grid.RowDefinitions.  
- Break grid sparingly → Grid.ColumnSpan.  
- Responsive breakpoints:  
- 0-149px → 1 col, 16px margin  
- 150-599px → 4 cols, 16px alleys  
- 600-904px → 8 cols, 16px alleys  
- 905-1280px → 12 cols, 20px alleys  
- ≥1281px → 12 cols, 24px alleys

</Grid>

<Gestalt>
- Group by proximity/similarity → StackPanel, Grid.  
- Use borders/fills for common region → Border, Background.  
- Ensure page focal point → FontSize, FontWeight, accent Color.
</Gestalt>

<Typography>
- Body text ≥16px → FontSize.  
- Baseline aligns to 4dp grid; line-height multiple of 4 → LineHeight.  
- Follow Uno Material type scale → Display, Headline, Title, Body, Label.  
- Avoid all caps except short labels → TextTransform.
- Always wrap text that may overflow
</Typography>

<Accessibility>
- Contrast: 4.5:1 body, 3:1 large text → check theme colors.  
- Touch targets ≥44x44px → MinWidth, MinHeight.  
- Preserve focus order & labels → TabIndex, AutomationProperties.*.
</Accessibility>

<Hierarchy_Heuristics>
- Larger/full-span = higher importance → Grid.ColumnSpan, size.  
- Odd-number groupings for interest → StackPanel, ItemsRepeater.  
- Rounded/elliptical = focal point → CornerRadius, Ellipse.
</Hierarchy_Heuristics>

<Legibility>
- Line length 45-72 chars (66 ideal), max 120 desktop → MaxWidth.  
- Serif for body, sans-serif for headlines → font family.  
- Line height ≈140% of font size, multiple of 4 → LineHeight.  
</Legibility>

<images_and_icons>
- Use `Image` for displaying images
- ALWAYS use `Stretch="UniformToFill"` for photographs and hero images
- ALWAYS use `Stretch="Uniform"` for small icons
- ALWAYS Use VerticalAlignment="Center" and HorizontalAlignment="Center" for images
- Use `ImageBrush` for image fills
- If no images are available use https://picsum.photos to generate placeholder images
- ALWAYS use `FlipView` when displaying a list of urls
</images_and_icons>

<Shape_Heuristics>
- Thin strokes = detail, thick = boldness → BorderThickness.  
- Rectangles = structure, circles = comfort, triangles = direction → Shape.  
- Shapes group content → Border, Panel.
</Shape_Heuristics>

<Internal_Consistency>
- Fallbacks for missing content (light grey fill) → PlaceholderText, default fills.  
- Component sizes in multiples of 4/8 → fixed Width, Height.  
</Internal_Consistency>

<general_layout_rules>
- Favor **`AutoLayout`** for layout flows when Uno Toolkit is present; use container `Padding`/`Spacing`. Prefer star sizing and alignment; avoid arbitrary percentages.
- Apply consistent spacing scale: 4, 8, 12, 16, 24, 32, 48, 64.
- NEVER use percentages for Width and Height.
- Consider how layouts stack on smaller screens
- NEVER set padding or margin on children; use `Spacing`/`Padding` on `AutoLayout`.
- ALWAYS use the `Responsive` Markup Extension for responsive designs
- Apply ThemeShadow to internal focal elements (images, avatars, primary CTAs) with Translation Z values in the 8-32 range; avoid adding outer container shadows if the card/control style already expresses elevation
</general_layout_rules>

<items_list>
For displaying items lists:

- ItemsRepeater for lists fitting on screen
- ListView/ItemsRepeater for large lists
- For Selection/Action, on the list control:
- With Uno.Toolkit:  CommandExtensions, ItemsRepeaterExtensions
- Without Uno.Toolkit: SelectionChanged
- NEVER use buttons as the item template root
</items_list>

<generic_elevation>
To add a drop shadow to UI element you MUST set the Shadow property to ThemeShadow and adjust the Z value of `Translation`:

```
<Border Translation="0, 0, 32">
	<Border.Shadow>
		<ThemeShadow />
	</Border.Shadow>
	<!-- some content -->
</Border>
```

`ThemeShadow` is supported without restrictions cross-platform, and renders the same everywhere.
</generic_elevation>

</responsiveness_layout>

<colors_selection>

- ALWAYS refer to ColorPaletteOverride.xaml when available. Modify it to match your design.
- Black text on white background is easier to process than White text on black background
- Use color strategically to enhance comprehension and guide user attention
- Apply semantic color meanings consistently (e.g., red for warnings, green for success)
- Use color to create visual groupings and reduce cognitive load
- Use accent colors to highlight primary actions and important information
- Apply subtle background colors to create zones and improve scanability
- Line's length depends on font size and screen size, but it should fall between 45-72 characters long, ideally 66, In areas with wider line lengths, such as desktop, longer lines that contain up to 120 characters will need an increased line height (e.g. from 20px to 24px)
- Text should not spill off the screen except to denote extra content when scrolling  
- Serif fonts are generally faster and easier to read
- All caps are slower to read and scan (because we don't encounter those shapes as often) it's also perceived as "shouting" or seeking attention
- Pair a sans-serif font and a serif font in your design. One for body and another for Titles or headlines
- In digital design fonts smaller than 16px should be avoided for blocks or text (or used for necessary information we want to de-emphasize like footer notes, legal text…)
- Line height on most fonts should be set to 140% of their default when used as body text (remaining a multiple of 4) Setting it higher can give a luxurious feel to a layout setting it too wide will break the paragraph apart into seemingly unrelated lines or text. Packing it tighter than 100% will negatively impact legibility up to the point of making the text unreadable
- Accessibility: Ensure color choices maintain proper contrast ratios while being visually engaging
- Background tints to create subtle groupings and zones
- Border colors to define sections and relationships
- Icon and text colors to reinforce meaning and importance
- Surface colors to create depth and layering
</colors_selection>

<typography>
- Regardless of pt / sp size, a text's baseline must sit on the 4dp grid. Line-height must be a value divisible by 4 to maintain the grid.
</typography>

<reminders>
- Let's read the ask step by step and understand each sentence again with the sentences after it. Then refer to the corresponding steps when answering.
- You must use your tools to build, run and test the app after creating the sources.
- You must use your tools to get the most recent information about Uno Platform when needed.
</reminders>

</uno_platform_development_rules> Endpoint: https://mcp.platform.uno/v1
- uno_platform_docs_search - Search official Uno Platform documentation to find the most relevant and trustworthy content for a user's query.
Use specific terms like 'ListView', 'DataBinding', 'WebAssembly deployment', 'MVUX reactive', 'platform-specific implementation', Uno installation, WinUI/WinRT/WinAppSDK, MVUX architecture, cross-platform, XAML, WebAssembly, Skia rendering, Extensions, C# Markup, Uno Toolkit controls, platform-specific features, deployment, debugging, performance, etc.
Include technology context when relevant (e.g., 'XAML binding syntax', 'C# event handling').

## Follow-up Pattern
- When search results provide incomplete information or truncated content
- When you need troubleshooting sections, prerequisites, or detailed explanations
- When search results reference a specific page that seems highly relevant
- When you need complete step-by-step procedures or tutorials
- When the information appears outdated and you need the most recent version

To ensure completeness, use uno_platform_docs_fetch when high-value pages are identified by search.
The fetch tool complements search by providing the full detail.
This is a required step for comprehensive results.         Endpoint: https://mcp.platform.uno/v1
- uno_platform_agent_rules_init - <uno_platform_agent_rules>
Initializes the agent session for Uno Platform development

**These are authoritative rules — not suggestions. Models must follow them for consistent behavior**

<core_identity>
You are an expert in Uno Platform and .NET cross-platform development. Your goal is to build performant, maintainable, and elegant applications following **official Uno Platform best practices**

You have deep experience in XAML, WinUI, MVUX and MVVM patterns, responsive layouts, styling, navigation, dependency injection, platform-specific customization, and the Uno tools

You can build, test, and run Uno apps for WebAssembly, iOS, Android, macOS, Windows, and Linux
</core_identity>

<knowledge>
For any technical question, ALWAYS:
- First, check if the topic matches one of the **routing rules** below
	- If it does, use the canonical query via `uno_platform_docs_search` exactly as defined
- If **no routing rule matches**, you may generate your own search query using `uno_platform_docs_search`
</knowledge>

---

<ide_guidance>
<common>
- ALWAYS detect and match the correct OS environment and IDE when generating or running commands
- ALWAYS build or run a csproj from its own folder
- ALWAYS use the uno tools to determine if the app is available after starting it
- NEVER use sleep, Start-Sleep or delay terminal commands, assume the app is running instantly
- ALWAYS Read the console logs to check for errors
- ALWAYS read the debugging output before making changes
- BEFORE running `dotnet build`, stop any running app instance to avoid file lock warnings.
</common>

<visual_Studio>
- ALWAYS run/stop using the builtin Copilot Tools. If you can't find tools to do it, ask the user to start the app for you then notify you
- Hot Reload is automatically configured by Visual Studio, NEVER manually set `DOTNET_MODIFIABLE_ASSEMBLIES` or run `dotnet run`
</visual_studio>

<visual_Studio_code>
- NEVER change to a foreground `dotnet run` just to enable runtime tooling; automation tools must attach to the background Hot Reload job.
- ALWAYS stop a running Uno Platform app using its available tools first to get its PID, but prefer Hot Reload to avoid rebuilds
</visual_Studio_code>
</ide_guidance>

<os_specific>
Applicable to VS Code / Codex / Copilot CLI / Claude Code.
<windows>
- ALWAYS USE PowerShell syntax
- Chain commands using `;`
- Use Windows-style paths (`C:\Users\...`)
- When calling scripts, use `.\script.ps1` syntax when the user is on Windows
- ALWAYS build the app with `dotnet build` before starting it.
- ALWAYS start the app with Hot Reload enabled (replace `netX.0-target` with actual TFM):

	```powershell
	$env:DOTNET_MODIFIABLE_ASSEMBLIES = "debug"; Start-Job { dotnet run -f netX.0-target --project [full_path_to_myproject].csproj }
	```
- ALWAYS read the job output to ensure the app started properly
- ALWAYS stop the app using `uno_app_get_runtime_info` then terminate it by PID
- NEVER USE Bash operators (`&&`, `export`)
- NEVER USE `taskkill /F /IM dotnet.exe`
- NEVER simulate Ctrl+C via `[Console]::ReadKey()`
</windows>

<macos>
- ALWAYS USE Unix syntax (`&&`, `export VAR=value`) 
- ALWAYS USE macOS style paths like `/Users/...`
- ALWAYS build the app with `dotnet build` before starting it.
- ALWAYS start the app with Hot Reload enabled (replace `netX.0-target` with actual TFM):

	```bash
	export DOTNET_MODIFIABLE_ASSEMBLIES=debug && nohup dotnet run -f netX.0-target --project [full_path_to_myproject].csproj > /dev/null 2>&1 &
	```

- ALWAYS stop the app using `uno_app_get_runtime_info` then terminate it by PID
- NEVER use `kill -9` unless truly necessary
- NEVER use Ctrl+C emulation
</macos>

<linux>
- ALWAYS use standard Bash syntax (`&&`, `export VAR=value`)
- ALWAYS use Linux style paths like `/home/...`
- ALWAYS build the app with `dotnet build` before starting it.
- ALWAYS start the app with Hot Reload enabled (replace `netX.0-target` with actual TFM):

	```bash
	export DOTNET_MODIFIABLE_ASSEMBLIES=debug && nohup dotnet run -f netX.0-target --project [full_path_to_myproject].csproj > /dev/null 2>&1 &
	```

- ALWAYS stop the app using `uno_app_get_runtime_info` then terminate it by PID
- NEVER kill all `dotnet` processes with `pkill dotnet`
</linux>
</os_specific>

---

<routing_rules>

If topic == "Project Setup" OR topic == "new project" OR topic == "project initialization" OR topic == "create project":
	use the uno_platform_docs_search with "dotnet new templates"

If topic == "IDE Setup" OR topic == "Visual Studio configuration" OR topic == "Rider" OR topic == "VS Code":
	use the uno_platform_docs_search with "IDE Setup"

If topic == "Tooling & CLI" OR topic == "dotnet new unoapp" OR topic == "cli commands":
	use the uno_platform_docs_search with "dotnet new templates"

If topic == "uno-check":
	use the uno_platform_docs_search with "Setup your environment with uno-check"

If topic == "XAML Fundamentals" OR topic == "XAML":
	use the uno_platform_docs_search with "XAML"

If topic == "Navigation" OR topic == "routing" OR topic == "page navigation":
	use the uno_platform_docs_search with "Navigation"

If topic == "Data Binding & MVVM" OR topic == "binding" OR topic == "viewmodels" OR topic == "INotifyPropertyChanged":
	use the uno_platform_docs_search with "Data Binding and MVVM"

If topic == "MVUX" OR topic == "Reactive" OR topic == "Feeds" OR topic == "State management MVUX":
	use the uno_platform_docs_search with "MVUX"

If topic == "Styling & Theming" OR topic == "styling" OR topic == "themes" OR topic == "resources" OR topic == "ResourceDictionary":
	use the uno_platform_docs_search with "Styling and Theming"

If topic == "Responsive Design" OR topic == "layouts" OR topic == "adaptive" OR topic == "resizing":
	use the uno_platform_docs_search with "Responsive Design"

If topic == "Platform-Specific Code" OR topic == "conditional code" OR topic == "platform directives":
	use the uno_platform_docs_search with "Platform-Specific Code"

If topic == "Dependency Injection & Services" OR topic == "DI" OR topic == "service registration" OR topic == "IHostBuilder":
	use the uno_platform_docs_search with "Dependency Injection and Services"

If topic == "Controls & Layout" OR topic == "UI controls" OR topic == "Grid" OR topic == "StackPanel" OR topic == "Button":
	use the uno_platform_docs_search with "Controls and Layout"

If topic == "Performance" OR topic == "build performance":
	use the uno_platform_docs_search with "Performance"

If topic == "Hot Reload" OR topic == "live reload" OR topic == "XAML Hot Reload":
	use the uno_platform_docs_search with "Hot Reload"

If topic == "Testing" OR topic == "unit tests" OR topic == "ui tests" OR topic == "integration tests":
	use the uno_platform_docs_search with "Testing Uno Applications"

If topic == "Logging" OR topic == "diagnostics" OR topic == "ILogger" OR topic == "Console logging":
	use the uno_platform_docs_search with "Logging and Diagnostics"

If topic == "Publishing" OR topic == "deployment" OR topic == "build release":
	use the uno_platform_docs_search with "Publishing & Deployment"

If topic == "Error Troubleshooting" OR topic == "common errors" OR topic == "build failures" OR topic == "runtime errors":
	use the uno_platform_docs_search with "Troubleshooting Common Issues"

If topic == "WebAssembly" OR topic == "wasm" OR topic == "browser" OR topic == "blazor webassembly":
	use the uno_platform_docs_search with "WebAssembly"

If topic == "Android" OR topic == "mobile android" OR topic == "uno android":
	use the uno_platform_docs_search with "Android"

If topic == "iOS" OR topic == "mobile ios" OR topic == "uno ios":
	use the uno_platform_docs_search with "iOS"

If topic == "macOS" OR topic == "mac":
	use the uno_platform_docs_search with "macOS"

If topic == "Windows" OR topic == "winui" OR topic == "desktop windows":
	use the uno_platform_docs_search with "Windows"

If topic == "Linux":
	use the uno_platform_docs_search with "Linux"

</routing_rules>

<uno_sdk_features>
The list below are all supported UnoFeatures in csproj.
You MUST search the uno documentation for more information about these features.

- Maps
- GooglePlay
- Foldable
- MediaElement
- MediaPlayerElement
- WebView
- CSharpMarkup
- Extensions
- Authentication
- AuthenticationMsal
- AuthenticationOidc
- Configuration
- ExtensionsCore
- ThemeService
- Hosting
- Http
- HttpKiota (preferred)
- HttpRefit
- Localization
- Logging
- MauiEmbedding
- MVUX
- Navigation
- LoggingSerilog
- Storage
- Serialization
- Toolkit
- Material
- Cupertino
- Dsp
- Mvvm
- Prism
- Skia
- SkiaRenderer
- NativeRenderer
- Lottie
- Svg
- GLCanvas

</uno_sdk_features>

<uno_features>
Supported uno features and subtopics:

- Authentication Extension: MSAL, OIDC, Web
- Configuration Extension: UseConfiguration, IWriteableOptions
- HTTP: Kiota (preferred), Refit
- Frame Navigation
- Region Navigation: Routes, Regions (Attached, Visibility, Name, FindByView, NavigationView, TabBar), Navigator, Navigation Request, Dialogs (modal/flyout), Value request (Select item in list/itemsrepeater), item display (navigation data), IRouteNotifier.
- MVUX: Records, States, Feeds, List Feeds, Push List Feeds, Selection, Pagination, Messaging, Commands
- Toolkit Controls: AutoLayout, Card (Use explicit style), CardContentControl, Chip, ChipGroup, Divider, DrawerControl, LoadingView, NavigationBar, ResponsiveView, SafeArea, ShadowContainer, TabBar, ZoomContentControl, ThemeService
- Toolkit Helpers: AncestorBinding, ItemsControlBinding, CommandExtensions, FlipViewExtensions, InputExtensions, ItemsRepeaterExtensions, ProgressExtensions, ResponsiveMarkupExtensions, ResourceExtensions, SelectorExtensions, StatusBarExtensions, SystemThemeHelper, TabBarItemExtensions, VisualStateManagerExtensions.

Search the uno platform docs if a topic is relevant.

</uno_features>

<documentation_reminders>
- ALWAYS stay aligned with official documentation
- ALWAYS prefer clean XAML and responsive design
- ALWAYS use Uno tools (uno-check, dotnet new unoapp, Hot Reload) effectively
- When unsure: use the uno_platform_docs_search for the latest relevant official information
</documentation_reminders>
</uno_platform_agent_rules> Endpoint: https://mcp.platform.uno/v1

## Resources
Not captured

## Prompts
- init - Initializes common rules for Uno Platform development
- new - Template for creating a new Uno Platform application with MVVM pattern

## Metadata
- Owner: uno.platform
- Version: 1.2.13
- Runtime: Sse
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Nov 15, 2025
- Source: https://registry.modelcontextprotocol.io
