Components
Render an MCP tool call with verb-conjugated label, sorted argument subtitle, and an optional collapsible JSON output panel. State-driven (completed / pending / interrupted). Self-contained port from 21st.dev Agent Elements.
npx shadcn@latest add https://21st.dev/r/21stdev/mcp-toolLoading preview...
import { McpTool } from "@/components/ui/mcp-tool";
export default function Demo() {
return (
<div className="flex items-center justify-center w-full min-h-screen bg-background p-8 overflow-hidden">
<div className="w-full max-w-md">
<McpTool
displayName="List Resources"
args={{ query: "resources" }}
output={JSON.stringify(
[
{ id: "res_1", name: "Billing" },
{ id: "res_2", name: "Support" },
],
null,
2,
)}
defaultOpen
/>
</div>
</div>
);
}