CtrlK
BlogDocsLog inGet started
Tessl Logo

add-app-to-server

This skill should be used when the user asks to "add an app to my MCP server", "add UI to my MCP server", "add a view to my MCP tool", "enrich MCP tools with UI", "add interactive UI to existing server", "add MCP Apps to my server", or needs to add interactive UI capabilities to an existing MCP server that already has tools. Provides guidance for analyzing existing tools and adding MCP Apps UI resources.

68

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

82%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A high-quality, highly actionable skill body: complete executable code for every phase, a decision framework for tool selection, ordered steps with checkpoints, and a real verification procedure via basic-host. The main residual costs are mild redundancy between inline guidance and the 'Common Mistakes' section, and reference-style material (SDK v1→v2 migration table) inlined in an already long body.

Suggestions

Drop or compress the 'Common Mistakes' section where it restates inline guidance, and keep only the mistakes not already flagged at the point of use (e.g. CSP domains, dist/ path mismatches).

Move the full SDK v1→v2 migration table behind a one-line pointer (e.g. 'If the server still imports @modelcontextprotocol/sdk v1, see the migration table in the cloned repo docs') to cut a large block that only v1-legacy servers need.

Add a short error-recovery note after the basic-host test (what to check when the UI doesn't render — resource URI mismatch, missing dist build, handlers registered after connect).

DimensionReasoningScore

Conciseness

The body is dense and mostly earns its tokens — a decision table for which tools benefit from UI, compact API/example tables, and before/after code — but a few sections could be trimmed: 'How It Works' re-explains the resource/_meta.link mechanism that the code in Steps 4–5 already demonstrates, and the 'Common Mistakes' list repeats guidance stated inline ('Always keep the content array', 'Register ALL handlers BEFORE connect()'). Not a 5; well above the verbose/padded levels (1–3).

4 / 5

Actionability

Every step is copy-paste ready: a version-pinned clone command, exact npm install lines, complete vite.config.ts / mcp-app.html / package.json snippets, full before-and-after tool conversion code, working registerAppResource and App-handler code, and a runnable basic-host test procedure with the SERVERS env var. Covers the common cases end to end.

5 / 5

Workflow Clarity

Steps 1–6 are clearly sequenced with ordering constraints stated twice ('Register ALL handlers BEFORE calling app.connect()', 'The UI must be built before the server code bundles it') and Step 1 ends in a user-confirmation checkpoint; the Testing section closes with an explicit 5-item Verify checklist. Falls short of 5 only because there is no error-recovery feedback loop (what to do when the UI fails to render or the basic-host check fails). Not destructive/batch work, so no cap applies.

4 / 5

Progressive Disclosure

No bundle files exist, and the skill does the right thing by deferring bulk material to clearly labeled external locations: API reference tables point at specific cloned-repo files (src/app.ts, src/server/index.ts, ...), examples and framework templates get their own tables, and the full CSS-variable list is delegated to src/spec.types.ts. It stays at 4 rather than 5 because the ~430-line body inlines a few chunks that read like reference material (the full SDK v1→v2 migration table, the complete host CSS variable group list) that would sit better behind the same one-level-deep pointers.

4 / 5

Total

17

/

20

Passed

Description

81%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong trigger-oriented description with comprehensive natural phrasing and excellent distinctiveness, weakened only by a generic capability clause ('provides guidance for analyzing existing tools and adding MCP Apps UI resources') that undersells the concrete work the skill performs. Third-person voice is used correctly.

Suggestions

Replace the vague 'Provides guidance for analyzing existing tools and adding MCP Apps UI resources' with the skill's concrete actions, e.g. 'Converts an existing MCP server's tools to App tools, registers HTML UI resources, and sets up the Vite single-file build pipeline'.

State the key constraint up front (works on an existing server that already has tools; text-only clients keep working) so the boundary is explicit rather than implied by one trigger clause.

DimensionReasoningScore

Specificity

The capability half is limited to two fairly generic actions — "Provides guidance for analyzing existing tools and adding MCP Apps UI resources" — naming the domain but not listing the several concrete actions the skill actually covers (convert tools, register resources, build pipeline). It exceeds the minimal/generic level (2) but falls short of 'several specific actions' (4).

3 / 5

Completeness

The 'when' is explicit and rich ("This skill should be used when the user asks to ... or needs to add interactive UI capabilities to an existing MCP server that already has tools"), and the 'what' is present ("analyzing existing tools and adding MCP Apps UI resources") but vague — 'provides guidance' without the concrete deliverables. Not a 5 because the 'what' clause lacks the concrete action detail of the anchor; clearly above 3 since both halves are explicitly stated.

4 / 5

Trigger Term Quality

Six natural user phrasings with good synonym coverage — "add an app to my MCP server", "add UI to my MCP server", "add a view to my MCP tool", "enrich MCP tools with UI", "add interactive UI to existing server", "add MCP Apps to my server" — plus the generic capability phrasing users would also use. Comprehensive for this domain; no relevant variant is obviously missing.

5 / 5

Distinctiveness Conflict Risk

The niche is narrow (MCP Apps UI enrichment of an existing MCP server that already has tools) and every trigger phrase names MCP plus app/UI/view, so it would not fire for unrelated UI, app-building, or generic MCP skills. Minimal conflict risk.

5 / 5

Total

17

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
modelcontextprotocol/ext-apps
Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.