Files
yaak-mountain-loop/plugins-external/mcp-server/src/tools/toast.ts
Gregory Schier 7314aedc71 Merge main into proxy branch (formatting and docs)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:09:59 -07:00

60 lines
1.4 KiB
TypeScript

import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import type { Color, Icon } from "@yaakapp/api";
import * as z from "zod";
import type { McpServerContext } from "../types.js";
const ICON_VALUES = [
"alert_triangle",
"check",
"check_circle",
"chevron_down",
"copy",
"info",
"pin",
"search",
"trash",
] as const satisfies readonly Icon[];
const COLOR_VALUES = [
"primary",
"secondary",
"info",
"success",
"notice",
"warning",
"danger",
] as const satisfies readonly Color[];
export function registerToastTools(server: McpServer, ctx: McpServerContext) {
server.registerTool(
"show_toast",
{
title: "Show Toast",
description: "Show a toast notification in Yaak",
inputSchema: {
message: z.string().describe("The message to display"),
icon: z.enum(ICON_VALUES).optional().describe("Icon name"),
color: z.enum(COLOR_VALUES).optional().describe("Toast color"),
timeout: z.number().optional().describe("Timeout in milliseconds"),
},
},
async ({ message, icon, color, timeout }) => {
await ctx.yaak.toast.show({
message,
icon,
color,
timeout,
});
return {
content: [
{
type: "text" as const,
text: `✓ Toast shown: "${message}"`,
},
],
};
},
);
}