feedhook-mcp
Advanced tools
+1
-1
| { | ||
| "name": "feedhook-mcp", | ||
| "version": "0.2.0", | ||
| "version": "0.3.0", | ||
| "mcpName": "io.github.patwalls/feedhook-mcp", | ||
@@ -5,0 +5,0 @@ "description": "MCP server for Feedhook — turn a YouTube channel into a webhook: an HTTP callback the moment a new video is published. Agents can create accounts, subscribe channels, and check delivery logs.", |
+10
-11
@@ -20,8 +20,4 @@ #!/usr/bin/env node | ||
| const server = new Server({ name: "feedhook", version: "0.2.0" }, { capabilities: { tools: {} } }); | ||
| const server = new Server({ name: "feedhook", version: "0.3.0" }, { capabilities: { tools: {} } }); | ||
| const CHANNEL_HINT = | ||
| "The channel id is the 24-char 'UC…' id — it's in the channel page URL for /channel/UC… pages, " + | ||
| "or in the page source of any youtube.com/@handle page (search for \"channelId\")."; | ||
| const TOOLS = [ | ||
@@ -51,10 +47,13 @@ { | ||
| "every new video. The response includes a per-subscription `secret` (shown once) for verifying the " + | ||
| "X-Feedhook-Signature header (sha256 HMAC of the raw body). " + CHANNEL_HINT, | ||
| "X-Feedhook-Signature header (sha256 HMAC of the raw body).", | ||
| inputSchema: { | ||
| type: "object", | ||
| properties: { | ||
| channelId: { type: "string", description: "YouTube channel id (UC…, 24 chars)." }, | ||
| channel: { | ||
| type: "string", | ||
| description: "The channel as an @handle (e.g. '@mkbhd'), a youtube.com channel URL, or a raw UC… id — resolved server-side.", | ||
| }, | ||
| callbackUrl: { type: "string", description: "The http(s) URL that will receive the webhook POSTs." }, | ||
| }, | ||
| required: ["channelId", "callbackUrl"], | ||
| required: ["channel", "callbackUrl"], | ||
| }, | ||
@@ -139,6 +138,6 @@ }, | ||
| if (name === "create_subscription") { | ||
| const channelId = String(args?.channelId || "").trim(); | ||
| const channel = String(args?.channel || args?.channelId || "").trim(); | ||
| const callbackUrl = String(args?.callbackUrl || "").trim(); | ||
| if (!channelId || !callbackUrl) throw new Error("`channelId` and `callbackUrl` are required"); | ||
| return ok(await api("POST", "/subscriptions", { channelId, callbackUrl })); | ||
| if (!channel || !callbackUrl) throw new Error("`channel` and `callbackUrl` are required"); | ||
| return ok(await api("POST", "/subscriptions", { channel, callbackUrl })); | ||
| } | ||
@@ -145,0 +144,0 @@ if (name === "list_subscriptions") return ok(await api("GET", "/subscriptions")); |
10624
-1.14%