mcp-connected-hearts
Version:
MCP to control Connected Hearts
70 lines (60 loc) • 2.19 kB
JavaScript
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);