Extracts table data from PDF documents
The MCP server defines only a single tool (extract_pdf_tables) with extremely limited documentation. The tool has a valid name starting with a verb (extract_), a basic input schema with one string parameter, but critically lacks comprehensive descriptions, parameter documentation, output schema specification, and error handling. The implementation is essentially a stub, client.py contains only a mock that returns hardcoded data, not a real PDF extraction implementation. No MCP protocol boilerplate is visible; the server appears to be incomplete or a skeleton project.
Extracts table data from PDF documents
Tool description is too generic and under 20 characters (only: 'Extracts table data from PDF documents'). Does not explain WHEN to use this tool, what format tables are returned in, what file types/sizes are supported, whether the PDF is local or remote, or how to handle multi-page PDFs.
Parameter 'pdf_name' has a type (string) but NO description. LLMs cannot infer whether this is a filename, a file path, a URL, or a URI. Pattern baseline: 100% of A+ tools have parameter descriptions.
Output schema is not documented. The mock implementation returns {'extracted_tables': [['Q1', '$10M'], ...]} but the actual output structure, field names, nested types, and semantics are never specified. LLMs cannot plan downstream operations without knowing what to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 31 | 2026-07-28+ | v2 |
No error handling or recovery guidance. The tool will likely fail on missing files, invalid PDFs, or files without tables, but there is no specification of error responses, error codes, or how an LLM should recover (e.g., 'file not found, try a different name', 'PDF has no tables'). Pattern: recovery-guide.
No documentation of constraints or limitations. Missing: max file size, supported PDF versions, expected output format (list of lists? dicts?), whether columns/headers are extracted separately, whether merged cells are handled, pagination support for large tables.
Implementation is a non-functional stub. client.py contains hardcoded mock data ('Q1', '$10M') and no actual PDF parsing logic. This is not production-ready and cannot serve as an MCP tool.
No indication of MCP server boilerplate, initialization, tool registration, or protocol handling. The code shows only a Python class, not an MCP server implementation. Without visible MCP registration (e.g., via SSE, HTTP, or STDIO transport), this cannot be verified as an MCP server at all.