UNPKG

@mseep/puremd-mcp

Version:

Model Context Protocol (MCP) server for pure.md, the markdown delivery network for LLMs

69 lines (68 loc) 2.01 kB
#!/usr/bin/env node import "dotenv/config"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import pkgJson from "../package.json" with { type: "json" }; const { PUREMD_API_KEY = "" } = process.env; const server = new McpServer({ name: "pure.md", version: pkgJson.version, }, { capabilities: { resources: {}, tools: {}, prompts: {}, }, }); server.tool("unblock-url", { url: z.string() }, async ({ url }) => { try { const response = await fetch(`https://pure.md/${url}`, { headers: { "x-puremd-api-token": PUREMD_API_KEY }, }); const markdown = await response.text(); return { content: [{ type: "text", text: markdown }], isError: false, }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true, }; } }); server.tool("search-web", { query: z.string() }, async ({ query }) => { try { const response = await fetch(`https://pure.md/search?q=${query}`, { headers: { "x-puremd-api-token": PUREMD_API_KEY }, }); const markdown = await response.text(); return { content: [{ type: "text", text: markdown }], isError: false, }; } catch (error) { return { content: [{ type: "text", text: error.message }], isError: true, }; } }); async function main() { try { const transport = new StdioServerTransport(); await server.connect(transport); console.error("pure.md mcp server running on stdio"); } catch (error) { console.error(`Failed to start server: ${error.message}`); process.exit(1); } } main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); });