UNPKG

mcp-connected-hearts

Version:

MCP to control Connected Hearts

70 lines (60 loc) 2.19 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; const server = new McpServer({ name: "mcp-connected-hearts", version: "1.0.0" }); const HEART_IP = "http://192.168.29.175"; server.registerTool("display_text", { title: "Display", description: "Display a message", inputSchema: { text: z.string().max(30).describe("Text to display") } }, async ({ text }) => { const res = await fetch(`${HEART_IP}/oled?msg=${encodeURIComponent(text)}`); return { content: [{ type: "text", text: `Displayed: "${text}" ` }] }; }); server.registerTool("set_named_color", { title: "Color", description: "Set the color: red, green, blue, white, off", inputSchema: { color: z.enum(["red", "green", "blue", "white", "off"]).describe("Named color") } }, async ({ color }) => { await fetch(`${HEART_IP}/rgb?color=${color}`); return { content: [{ type: "text", text: `Set color to ${color}` }] }; }); server.registerTool("set_rgb_values", { title: "Custom RGB", description: "Set R, G, B values ", inputSchema: { r: z.number().min(0).max(255).describe("Red (0-255)"), g: z.number().min(0).max(255).describe("Green (0-255)"), b: z.number().min(0).max(255).describe("Blue (0-255)") } }, async ({ r, g, b }) => { await fetch(`${HEART_IP}/rgb?r=${r}&g=${g}&b=${b}`); return { content: [{ type: "text", text: `Set RGB to (${r}, ${g}, ${b})` }] }; }); server.registerTool("buzz_now", { title: "Buzz Now", description: "buzz", inputSchema: {} }, async () => { await fetch(`${HEART_IP}/buzz`); return { content: [{ type: "text", text: "Buzzed" }] }; }); server.registerTool("read_buttons", { title: "Button", description: "Check if any button is pressed", inputSchema: {} }, async () => { const res = await fetch(`${HEART_IP}/btn`); const btnStatus = await res.text(); return { content: [{ type: "text", text: `Button :\n${btnStatus}` }] }; }); const transport = new StdioServerTransport(); await server.connect(transport);