MCP server providing web search, Wikipedia search, PDF processing, vector database management, markdown report generation, and graph visualization tools for a RAG-based financial research application.
Server has 6 tools with basic descriptions and schemas, but significant gaps in parameter documentation, error guidance, and output structure. All tools have descriptions (10-200 chars), but most parameter descriptions are minimal or missing. Schemas are present but lack detail. Error handling returns generic messages without recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Output schemas are not documented. The server mixes read-only and destructive operations without clear separation or confirmation patterns.
Adds a new text snippet to the vector database so the internal researcher can retrieve it later.
Creates and saves a markdown report with the given content to the hard drive.
Generates a graph from a JSON string dictionary mapping labels to numerical values (e.g. '{"Apple": 150, "Google": 200}'). chart_type can be 'bar', 'line', or 'pie'. filename must end with .png. It saves the graph to disk and returns a confirmation message with the file path.
Reads a PDF file from the local file system or an absolute path, extracts text, chunks it, embeds it, and adds it to the vector database.
Search the web for real-time information using DuckDuckGo.
Search Wikipedia for a given topic to get factual background information.
No output schemas documented. Tools return free-text strings; LLMs cannot parse structured results or chain downstream calls. E.g., search_wikipedia returns a summary string, but agents cannot extract metadata or verify success.
Destructive tools (create_markdown_report, add_to_database, load_pdf_to_database, generate_graph) lack confirmation or dry-run patterns. No tool annotations (destructiveHint). Agents can accidentally overwrite files or corrupt the vector database without safeguards.
Error messages are generic and non-actionable. E.g., 'Error searching Wikipedia: {e}' or 'Error: Database index files not found.' Do not guide LLM recovery. Should specify 'Try search_web() instead' or 'Initialize database with load_pdf_to_database() first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Parameter descriptions are minimal or absent. E.g., 'source' in add_to_database has description 'The source of the text snippet' but no guidance on format or constraints. 'data_json' in generate_graph lacks validation rules (must be valid JSON, numeric values only?).
No tool annotations. Tools lack readOnlyHint (search_wikipedia, search_web) and destructiveHint (create_markdown_report, add_to_database, load_pdf_to_database, generate_graph). LLMs cannot infer safety properties without explicit hints.