mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-03-30 06:02:00 +02:00
60 lines
1.4 KiB
TypeScript
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}"`,
|
|
},
|
|
],
|
|
};
|
|
},
|
|
);
|
|
}
|