MCP server for analyzing PDF documents using AI vision capabilities. Supports multiple LLM providers (Google Gemini, Anthropic Claude, OpenAI, Google Vertex AI, Anthropic on Vertex AI).
Single tool 'analyze_pdf' has a detailed description (340+ chars) explaining functionality, caching strategy, and usage tips. However, the input schema lacks proper type definitions and parameter descriptions in the code. The schema shows 'pdf_source' as 'string|array' without enum constraints or format validation, and 'queries' array items lack item-level type info. No output schema is documented. Error handling is mentioned in instructions but not reflected in tool definition. The tool performs a read-only operation (good), but lacks the structured, LLM-optimized parameter guidance needed for production use.
Analyze a PDF document using AI. Provide an absolute file path, URL, cached file URI (from a previous response, Google only), or array of cached file URIs (from a previous chunked response, Google only) and a list of questions to ask about the PDF content. With the Google provider, returns a cached_uris array that can be reused for subsequent queries on the same document.
Input schema lacks type definitions and parameter descriptions. 'pdf_source' accepts 'string|array' but no enum, pattern, or format constraint. 'queries' array items have no type annotation. LLMs cannot infer valid input formats.
No output schema documented. Tool returns 'cached_uris' array and structured responses, but LLMs have no visibility into response fields, types, or structure for downstream planning.
Parameter descriptions missing from schema definition. While server instructions mention caching and input types, the actual tool schema in src/server.ts does not include descriptions for 'pdf_source' or 'queries' parameters.
No error classification or recovery guidance in tool definition. Instructions mention 'Common errors and solutions' but tool does not return structured error responses with actionable next steps (e.g., 'retryable', 'user-fixable', 'fatal').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
API key/provider configuration exposed via environment variables without documented secret injection pattern. Tool relies on resolveActiveProvider() but no explicit guidance on secure credential handling in tool definition.