summarize
Generate concise summaries from text input, controlling length and language to extract key information quickly.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| maxLength | No | ||
| language | No | en |
Implementation Reference
- src/tools/summarize-tool.ts:21-35 (handler)The handler function passed to server.tool('summarize') that wraps the summary generation with error handling and formats the response.async ({ text, maxLength, language }) => { return wrapToolExecution(async () => { const options: SummarizeOptions = { text, maxLength, language }; const summary = await generateSummary(options); return { content: [{ type: "text" as const, text: summary }] }; }, { errorCode: ERROR_CODES.AI_OPERATION, context: "Failed to generate summary", rethrow: true }); } );
- src/tools/summarize-tool.ts:16-20 (schema)Zod input schema for the summarize tool defining parameters: text (required string), maxLength (optional number), language (optional string).{ text: z.string().min(1), maxLength: z.number().optional().default(DEFAULTS.MAX_SUMMARY_LENGTH), language: z.string().optional().default(DEFAULTS.SUMMARY_LANGUAGE) },
- src/tools/summarize-tool.ts:14-36 (registration)The registration function that defines and registers the 'summarize' tool with the MCP server, including schema and handler.export function registerSummarizeTool(server: McpServer): void { server.tool("summarize", { text: z.string().min(1), maxLength: z.number().optional().default(DEFAULTS.MAX_SUMMARY_LENGTH), language: z.string().optional().default(DEFAULTS.SUMMARY_LANGUAGE) }, async ({ text, maxLength, language }) => { return wrapToolExecution(async () => { const options: SummarizeOptions = { text, maxLength, language }; const summary = await generateSummary(options); return { content: [{ type: "text" as const, text: summary }] }; }, { errorCode: ERROR_CODES.AI_OPERATION, context: "Failed to generate summary", rethrow: true }); } ); }
- src/index.ts:68-68 (registration)Invocation of the registerSummarizeTool function to add the tool to the main MCP server instance.registerSummarizeTool(server);
- src/tools/summarize-tool.ts:38-52 (helper)Helper function that implements the core summarization logic using Google Gemini 1.5 Pro via the ai-sdk.async function generateSummary(options: SummarizeOptions): Promise<string> { const { text, maxLength, language } = options; 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: DEFAULTS.AI_TEMPERATURE }); return result.text; }
- src/types/common.ts:169-173 (schema)TypeScript interface defining the shape of SummarizeOptions used in the tool.export interface SummarizeOptions { text: string; maxLength: number; language: string; }