MCP server for using the Foxit Cloud API to perform PDF operations including combining, comparing, compressing, converting, creating, extracting, flattening, linearizing, manipulating, protecting, removing passwords, and splitting PDF documents.
This server presents significant definition quality issues across multiple dimensions. While all 13 tools have input schemas and descriptions, the descriptions are predominantly in Chinese with minimal English explanation, making them inaccessible to English-speaking LLM agents and developers. Tool naming follows verb_noun patterns correctly (combine_pdf, compare_pdf, etc.), but descriptions lack the LLM-optimized structure needed for reliable tool selection. Parameter descriptions are sparse and often missing context about valid values, formats, and error conditions. No output schemas are documented anywhere in the visible code. Error handling provides no recovery guidance. The server lacks security declarations (permission gates, scope declarations, audit logging). All tools appear to accept paths or URLs pointing to external resources or local files, but there is no validation documented, no sanitization guidance, and no security model described for file access.
将压缩或归档文件中的多个PDF文档,合并为一个PDF文档。 使用示例1:把<absolute_path/file_name.zip>中的PDF文档合并为一个PDF。 使用示例2:把<url/file_name.pdf>, <url/file_name1.pdf>合并为一个PDF。
逐页比较一个PDF文档(作为"基准文档")与另一个PDF文档(作为"比较文档")。 使用示例1:把<absolute_path/file_name.pdf>与<absolute_path/file_name.pdf>进行比较。 使用示例2:把<absolute_path/file_name.pdf>与<absolute_path/file_name.pdf>进行比较,比较结果为:pdf。 使用示例3:把<url/file_name.pdf>与<url/file_name.pdf>进行比较。
使用指定的压缩级别压缩PDF文档。 使用示例1:压缩<absolute_path/file_name.pdf>。 使用示例2:压缩<absolute_path/file_name.pdf>,压缩级别为:high。 使用示例3:压缩<url/file_name.pdf>。
转换PDF文档到其他格式,支持格式:word, excel, ppt, image, text, html。 使用示例1:把<absolute_path/file_name.pdf>转换为word。 使用示例2:把<absolute_path/file_name.pdf>转换为text。 使用示例3:把<url/file_name.pdf>转换为excel。
从其他格式,创建或转换为PDF文档,支持格式:word,excel,ppt,image,text。 使用示例1:把<absolute_path/file_name.docx>转换为PDF。 使用示例2:把<absolute_path/file_name.txt>转换为PDF。 使用示例3:把<url/file_name.png>转换为PDF。
Descriptions are in Chinese only, with minimal English context. LLM agents operating in English cannot reliably determine when to use these tools. Example: 'combine_pdf' description is entirely in Chinese with no English translation provided.
No documented output schemas. The code shows tools return TextContent but provides no structured definition of response fields, types, or content format. LLMs cannot plan downstream operations without knowing what fields are available.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
从HTML文件或指定站点URL创建PDF。 使用示例1:把<absolute_path/file_name.html>转换为PDF。 使用示例2:把<url>转换为PDF。 使用示例3:把<url>转换为PDF,页面模式为:单页。 使用示例4:把<url/flie_name.html>转换为PDF,输入格式为:html。
提取PDF文档中的文本或图像。 使用示例1:提取<absolute_path/file_name.pdf>中的文本。 使用示例2:提取<absolute_path/file_name.pdf>中的图片。 使用示例3:提取<url/file_name.pdf>中的文本。
使PDF文档页面扁平化,使注释和表单字段成为页面内容的一部分。 使用示例1:把<absolute_path/file_name.pdf>扁平化。 使用示例2:把<url/file_name.pdf>扁平化。
线性化PDF文档。 使用示例1:把<absolute_path/file_name.pdf>线性化。 使用示例2:把<url/file_name.pdf>线性化。
操作PDF文档,例如删除页面,旋转页面,移动页面。 使用示例1:删除<absolute_path/file_name.pdf>的第1页。 使用示例2:把<absolute_path/file_name.pdf>的第2页移到第1页。 使用示例3:删除<url/file_name.pdf>的第1页。
使用用户或/和所有者密码保护PDF文档,并对某些功能设置限制。 使用示例1:给<absolute_path/file_name.pdf>设置用户密码,密码为:123456。 使用示例2:给<absolute_path/file_name.pdf>设置所有者密码,密码为:123456,权限设置为:不允许修改PDF内容。 使用示例3:给<url/file_name.pdf>设置用户密码,密码为:123456。
从PDF文档中删除密码安全性。 使用示例1:移除<absolute_path/file_name.pdf>的用户密码,密码为:123456。 使用示例2:移除<absolute_path/file_name.pdf>的所有者密码,密码为:123456。 使用示例3:移除<url/file_name.pdf>的用户密码,密码为:123456。
将PDF文档拆分为多个较小的文档。 使用示例1:把<absolute_path/file_name.pdf>拆分为多个文档,拆分后的页数为:3。 使用示例2:把<url/file_name.pdf>拆分为多个文档,拆分后的页数为:2。
Parameter descriptions lack actionable detail. For example, 'pageRange' in extract_pdf is described as '提取页面范围' (Chinese for 'extract page range') with no explanation of valid format (e.g., '1-30' or '1,3,5-9'). Parameter 'compressionLevel' has valid values in enum but no explanation of what 'low', 'medium', 'high' mean in practice.
No error handling guidance. Tool definitions provide no recovery hints. If a PDF is corrupted or a URL fails, the LLM has no instruction on what to do next (retry, ask user, alternative approaches).
No security model documented. Tools accept file paths and URLs but provide no description of security constraints (e.g., path traversal prevention, allowed domains for URLs, file size limits). The 'protect_pdf' tool accepts user and owner passwords as string parameters, no guidance on whether passwords are logged, stored, or transmitted securely.
Missing permission gates and scope declarations. No indication of what permissions are required to call each tool. For destructive operations like 'manipulation_pdf' (delete/rotate pages) and 'protect_pdf', the server should declare required scopes and verify caller authority.
Inconsistent parameter naming conventions. Some params use camelCase (basePath, comparePath), others use snake_case (pageRange). Consistent naming (prefer snake_case) reduces LLM confusion and matches MCP conventions.
No pagination or result limits declared. Tools like 'extract_pdf' (extractImages mode) and 'compare_pdf' (json result type) could return large unstructured results. No documented limit, no pagination support, no guidance on handling large outputs.
Missing tool annotations. No destructiveHint or readOnlyHint provided. LLMs cannot distinguish safe reads (compare_pdf) from destructive writes (delete via manipulation_pdf, protect_pdf). This forces conservative reasoning and missed optimization opportunities.
Undocumented parameter dependencies. 'protection_pdf' requires 'passwordProtection' to have at least one password set, but this constraint is only in the description text ('必须至少设置一个密码', meaning 'must set at least one password'). No validation schema expressed in JSON Schema. 'create_pdf_from_html' config parameters like 'width' and 'height' have minimum value constraints ('>16') mentioned in description only, not in JSON Schema minValue.