Skip to main content
Glama

MCPMan

by semistrict
call-tool-result.ts1.26 kB
import type { CallToolResult, ContentBlock } from "@modelcontextprotocol/sdk/types.js"; export function tryParseAsCallToolResult(result: unknown): CallToolResult | null { // Check if result is a content array from upstream server if (Array.isArray(result) && result.length > 0) { // Check if it looks like MCP content (has type property) const isContent = result.every( (item) => typeof item === "object" && item !== null && "type" in item ); if (isContent) { return { content: result as ContentBlock[], }; } } return null; } export function formatDefaultResult(result: unknown, output?: string): CallToolResult { const serializedResult = typeof result === "object" && result !== null ? JSON.stringify(result) : String(result); return { content: [ { type: "text" as const, text: `Result: ${serializedResult}${output ? `\nOutput:\n${output}` : ""}`, }, ], }; } export function formatEvalResult(evalResult: { result: unknown; output?: string }): CallToolResult { const callToolResult = tryParseAsCallToolResult(evalResult.result); if (callToolResult) { return callToolResult; } return formatDefaultResult(evalResult.result, evalResult.output); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/semistrict/mcpman'

If you have feedback or need assistance with the MCP directory API, please join our Discord server