mcp-summarizer

by 0xshellming
Verified
  • src
#!/usr/bin/env node import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import { google } from '@ai-sdk/google'; import { generateText } from 'ai'; // Create an MCP server const server = new McpServer({ name: "Text Summarizer", version: "1.0.0" }); // Add a text summarization tool server.tool("summarize", { text: z.string().min(1), maxLength: z.number().optional().default(200), language: z.string().optional().default("en") }, async ({ text, maxLength, language }) => { try { const prompt = `Please summarize the following text in ${language}, keeping the summary within ${maxLength} characters:\n\n${text}`; const model = google.chat("gemini-1.5-pro"); const result = await generateText({ model: model, prompt: prompt, maxTokens: maxLength, temperature: 0.5 }); return { content: [{ type: "text", text: result.text }] }; } catch (error) { console.error('Summarization error:', error); throw new Error('Failed to generate summary'); } } ); // Add a dynamic greeting resource server.resource( "greeting", new ResourceTemplate("greeting://{name}", { list: undefined }), async (uri, { name }) => ({ contents: [{ uri: uri.href, text: `Hello, ${name}!` }] }) ); // Start receiving messages on stdin and sending messages on stdout async function main() { const transport = new StdioServerTransport(); await server.connect(transport); } main().catch((error) => { console.error('Server error:', error); process.exit(1); });