Browser-based MCP server for searching and scraping academic articles from DergiPark (Turkish academic journal platform). Provides tools for advanced search, article detail extraction, PDF text extraction, and reference parsing.
DergiPark Skill exhibits significant definition quality gaps. All 5 tools have descriptions (positive), but descriptions are generic and lack actionable context for LLM selection. Input schemas are present but incomplete: parameters lack type definitions (e.g., 'criteria' is array but items lack 'required' field; 'opts' properties lack 'type' declarations). Output schemas are entirely undocumented, no tool declares what fields it returns. Error handling is present in code (login-wall, challenge classification) but not surfaced in tool descriptions. Tool names use double-underscore prefix (__DP_*) which is non-standard; verb-noun pattern is absent. No parameter descriptions explain constraints, ranges, or valid values. Baseline: 90% of A+ tools have param descriptions; this server has ~20%.
Advanced search orchestrator for DergiPark. Builds a query string with field operators (title:, author:, abstract:, year:[F TO L], etc.) and fetches server-rendered article cards. Handles login walls and Cloudflare Turnstile challenges with detailed error classification.
Self-contained PDF text extractor using pdf.js. Downloads article PDFs from DergiPark and extracts text from specified page ranges. Loads pdf.js from CDN or offline fallback.
Fetches and parses citation references from a DergiPark article page. Extracts all citation_reference meta tags and returns structured reference data with error handling for login walls and challenges.
Shared browser pipeline for fetching article detail pages and journal indexes with bounded concurrency. Parses article metadata, applies index filters, and assembles article objects. Used internally by search and advanced_search tools.
Simple search orchestrator that reads rendered result cards from the current DergiPark search page and delegates detail/index fetching. Classifies the current page to detect login walls and Cloudflare challenges before reading cards.
No output schemas documented. Tools return complex objects (articles, pagination, error fields) but LLMs cannot see expected response structure. Baseline: 100% of A+ tools document return types.
Input parameter schemas lack type definitions. 'criteria' is declared as array but items object has no 'type' or 'required' fields. 'opts' properties lack 'type' declarations (firstYear, lastYear, page should be 'number', sort/indexFilter should be 'string'). Baseline: parameters without types cannot exceed schema score 30.
Tool names use non-standard __DP_ prefix and lack action verbs. Naming should follow verb_noun pattern (search_dergipark, extract_pdf_text, fetch_references). Current names do not convey action to LLMs. Baseline: 90% of A+ tools start with action verb.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Parameter descriptions are missing or generic. 'criteria' array lacks explanation of field/term/op semantics. 'opts' properties (firstYear, lastYear, sort, indexFilter) have no descriptions. 'batch' object lacks guidance on start/size semantics. Baseline: 100% of A+ tools have param descriptions.
Error handling not surfaced in tool definitions. Code detects 'login-required' and 'challenge' errors but tool descriptions do not explain these failure modes or recovery steps. LLMs cannot plan recovery without error guidance. Baseline: error responses must tell LLM what to do next.