Build, modify, debug, migrate, or review TypeScript MCP servers and interactive MCP Apps using mcp-use v2. Use for tools, resources, prompts, Views, React host interactions, OAuth, middleware, Inspector workflows, package-boundary migrations, and release-ready verification in an mcp-use project.
75
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Treat the installed mcp-use package, its generated types, and the project's existing exports as the source of truth. Check the installed version before changing code; do not assume APIs from mcp-use v1.
package.json, the server entry, exported tool refs, views/, and the installed mcp-use version.npx create-mcp-use-app@latest; do not hand-build framework boilerplate.mcp-use; provider adapters come from mcp-use/oauth/*; React APIs come from mcp-use/react.inputSchema; add outputSchema when returning structured data or binding a View.content, structuredContent, and optionally _meta or isError.views/<name>/view.tsx and bind it with view: { name: "<name>" }.useToolContext; use focused hooks such as useCallTool, useViewState, useHostContext, and useDisplayMode for additional behavior.mcp-use dev, build, and start own framework lifecycle and View compilation.import { MCPServer } from "mcp-use";
import { z } from "zod";
const server = new MCPServer({ name: "catalog", version: "1.0.0" });
export const showProduct = server.tool(
{
name: "show-product",
description: "Show one catalog product",
inputSchema: z.object({ id: z.string() }),
outputSchema: z.object({ id: z.string(), name: z.string() }),
view: { name: "product" },
},
async ({ id }) => {
const product = { id, name: "Example product" };
return {
content: [{ type: "text", text: JSON.stringify(product) }],
structuredContent: product,
};
},
);
export default server;// views/product/view.tsx
import { ThemeProvider, useToolContext } from "mcp-use/react";
export default function ProductView() {
const view = useToolContext<"show-product">();
if (view.status === "pending") return <p>Loading…</p>;
if (view.status === "error") return <p>{view.error.message}</p>;
return <ThemeProvider>{view.toolOutput.name}</ThemeProvider>;
}outputSchema and matching structuredContent.Run node <skill-dir>/scripts/check-v2.mjs <project-root> during migrations and reviews, then complete the focused checks in Verification.
Put reusable agent workflows in skills/<name>/SKILL.md; the directory is
served automatically, so normally omit the skills server option. Use
skills: false to disable it or skills: { directory: "server-skills" } to
override the project-relative directory. Keep supporting references, scripts,
templates, and assets in the skill instead of inflating tool descriptions.
9afeeb6
Also appears in
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.