@kolmopdf/mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.claude-plugin/marketplace.json +25 -0
  2. package/.github/ISSUE_TEMPLATE/bug-report.yml +75 -0
  3. package/.github/workflows/ci.yml +98 -0
  4. package/.github/workflows/release.yml +52 -0
  5. package/CHANGELOG.md +12 -0
  6. package/LICENSE +21 -0
  7. package/README.md +63 -0
  8. package/biome.json +33 -0
  9. package/codex-skill/kolmopdf/SKILL.md +108 -0
  10. package/codex-skill/kolmopdf/references/chain-recipes.md +35 -0
  11. package/codex-skill/kolmopdf/references/parameter-glossary.md +72 -0
  12. package/doc/apidocs/Format_Conversion_API_Guide.md +117 -0
  13. package/doc/apidocs/PDF_Layout_Translation_API_Guide.md +138 -0
  14. package/doc/apidocs/PDF_Parsing_API_Guide.md +364 -0
  15. package/doc/plan/DEVELOPMENT.md +896 -0
  16. package/doc/plan/DISTRIBUTION.md +377 -0
  17. package/doc/plan/TESTING_AND_USAGE.md +370 -0
  18. package/package.json +30 -0
  19. package/packages/mcp-server/LICENSE +21 -0
  20. package/packages/mcp-server/README.md +37 -0
  21. package/packages/mcp-server/dist/index.cjs +1004 -0
  22. package/packages/mcp-server/dist/index.cjs.map +1 -0
  23. package/packages/mcp-server/dist/index.d.cts +29 -0
  24. package/packages/mcp-server/dist/index.d.ts +29 -0
  25. package/packages/mcp-server/dist/index.js +979 -0
  26. package/packages/mcp-server/dist/index.js.map +1 -0
  27. package/packages/mcp-server/package.json +54 -0
  28. package/packages/mcp-server/src/client.ts +235 -0
  29. package/packages/mcp-server/src/config.ts +62 -0
  30. package/packages/mcp-server/src/context.ts +27 -0
  31. package/packages/mcp-server/src/errors.ts +271 -0
  32. package/packages/mcp-server/src/extract.ts +102 -0
  33. package/packages/mcp-server/src/index.ts +142 -0
  34. package/packages/mcp-server/src/pages.ts +16 -0
  35. package/packages/mcp-server/src/polling.ts +84 -0
  36. package/packages/mcp-server/src/progress.ts +48 -0
  37. package/packages/mcp-server/src/tools/check-balance.ts +33 -0
  38. package/packages/mcp-server/src/tools/convert.ts +130 -0
  39. package/packages/mcp-server/src/tools/estimate-cost.ts +82 -0
  40. package/packages/mcp-server/src/tools/get-task-status.ts +24 -0
  41. package/packages/mcp-server/src/tools/parse-pdf.ts +147 -0
  42. package/packages/mcp-server/src/tools/translate-pdf.ts +110 -0
  43. package/packages/mcp-server/tests/integration/smoke.test.ts +33 -0
  44. package/packages/mcp-server/tests/unit/config.test.ts +49 -0
  45. package/packages/mcp-server/tests/unit/convert.test.ts +28 -0
  46. package/packages/mcp-server/tests/unit/errors.test.ts +112 -0
  47. package/packages/mcp-server/tests/unit/estimate-cost.test.ts +28 -0
  48. package/packages/mcp-server/tests/unit/polling.test.ts +24 -0
  49. package/packages/mcp-server/tsconfig.json +9 -0
  50. package/packages/mcp-server/tsup.config.ts +13 -0
  51. package/packages/mcp-server/vitest.config.ts +13 -0
  52. package/plugins/kolmopdf/.claude-plugin/plugin.json +16 -0
  53. package/plugins/kolmopdf/.mcp.json +11 -0
  54. package/plugins/kolmopdf/README.md +28 -0
  55. package/plugins/kolmopdf/commands/balance.md +6 -0
  56. package/plugins/kolmopdf/commands/convert.md +14 -0
  57. package/plugins/kolmopdf/commands/parse.md +14 -0
  58. package/plugins/kolmopdf/commands/translate.md +14 -0
  59. package/plugins/kolmopdf/skills/kolmopdf/SKILL.md +108 -0
  60. package/plugins/kolmopdf/skills/kolmopdf/references/chain-recipes.md +35 -0
  61. package/plugins/kolmopdf/skills/kolmopdf/references/parameter-glossary.md +72 -0
  62. package/pnpm-workspace.yaml +2 -0
  63. package/smithery.yaml +21 -0
  64. package/tsconfig.base.json +21 -0
@@ -0,0 +1,370 @@
1
+ # KolmoPDF Claude Plugin — 测试与使用文档
2
+
3
+ > 本文件供发布后用户安装、内部团队 QA、和 CI smoke test 共用。
4
+ > 所有命令以 macOS / Linux 为基准;Windows 用户改用 PowerShell 等价命令。
5
+
6
+ ## 1. 前置条件
7
+
8
+ | 项 | 要求 |
9
+ |---|---|
10
+ | Node.js | ≥ 20 LTS |
11
+ | KolmoPDF 账户 | Plus 或 Pro 套餐(Free / Go 用户无 API 权限) |
12
+ | API Key | 已在 https://www.kolmopdf.com/api-keys 创建 |
13
+ | 积分 | 测试用 ≥ 200(足够跑完整套用例) |
14
+ | 网络 | 可访问 `https://www.kolmopdf.com` |
15
+
16
+ 环境变量设置:
17
+
18
+ ```bash
19
+ export KOLMOPDF_API_KEY=sk-xxxxxxxxxxxxxxxx
20
+ ```
21
+
22
+ ---
23
+
24
+ ## 2. 安装命令矩阵
25
+
26
+ ### 2.1 Claude Code
27
+
28
+ ```bash
29
+ # 1. 添加 marketplace
30
+ /plugin marketplace add kolmopdf/claude-plugin
31
+
32
+ # 2. 安装 plugin
33
+ /plugin install kolmopdf@kolmopdf
34
+
35
+ # 3. 重启 Claude Code(首次安装时拉取 npm 包)
36
+ ```
37
+
38
+ 非交互安装(脚本场景):
39
+
40
+ ```bash
41
+ claude plugin marketplace add kolmopdf/claude-plugin
42
+ claude plugin install kolmopdf@kolmopdf
43
+ ```
44
+
45
+ ### 2.2 Codex CLI
46
+
47
+ ```bash
48
+ # 1. 克隆 skill 到 Codex 标准路径
49
+ mkdir -p ~/.codex/skills
50
+ git clone --depth 1 https://github.com/kolmopdf/claude-plugin /tmp/kolmopdf
51
+ cp -r /tmp/kolmopdf/codex-skill/kolmopdf ~/.codex/skills/
52
+
53
+ # 2. 注册 MCP server(Codex 不自动读取 plugin .mcp.json)
54
+ # 编辑 ~/.codex/config.toml,追加:
55
+ ```
56
+
57
+ ```toml
58
+ [mcp_servers.kolmopdf]
59
+ command = "npx"
60
+ args = ["-y", "@kolmopdf/mcp-server"]
61
+ env = { KOLMOPDF_API_KEY = "sk-..." }
62
+ ```
63
+
64
+ ```bash
65
+ # 3. 重启 Codex
66
+ ```
67
+
68
+ ### 2.3 Cursor
69
+
70
+ ```bash
71
+ # 1. 安装 skill 到 Cursor 用户 skill 路径
72
+ mkdir -p ~/.cursor/skills
73
+ cp -r /tmp/kolmopdf/codex-skill/kolmopdf ~/.cursor/skills/
74
+
75
+ # 2. MCP server 注册:编辑 ~/.cursor/mcp.json
76
+ ```
77
+
78
+ ```json
79
+ {
80
+ "mcpServers": {
81
+ "kolmopdf": {
82
+ "command": "npx",
83
+ "args": ["-y", "@kolmopdf/mcp-server"],
84
+ "env": { "KOLMOPDF_API_KEY": "sk-..." }
85
+ }
86
+ }
87
+ }
88
+ ```
89
+
90
+ ### 2.4 Claude Desktop(手动添加 MCP server)
91
+
92
+ 编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)或 `%APPDATA%\Claude\claude_desktop_config.json`(Windows):
93
+
94
+ ```json
95
+ {
96
+ "mcpServers": {
97
+ "kolmopdf": {
98
+ "command": "npx",
99
+ "args": ["-y", "@kolmopdf/mcp-server"],
100
+ "env": { "KOLMOPDF_API_KEY": "sk-..." }
101
+ }
102
+ }
103
+ }
104
+ ```
105
+
106
+ > Claude Desktop 不支持 SKILL.md,因此仅获得 MCP 工具能力,无自动触发。
107
+
108
+ ---
109
+
110
+ ## 3. 安装后验证 Checklist
111
+
112
+ | # | 步骤 | 期望 |
113
+ |---|---|---|
114
+ | 1 | 启动客户端后输入 `/help`(Claude Code)或 `/skills`(Codex) | 看到 `kolmopdf` skill 列出 |
115
+ | 2 | 输入 `/kolmopdf:balance` | 输出格式:`KolmoPDF balance: <number> credits (key sk-xxxxxx...xxxx)` |
116
+ | 3 | 自然语言询问 "what tools do you have for parsing PDFs?" | Agent 应主动提及 KolmoPDF |
117
+ | 4 | 故意把 `KOLMOPDF_API_KEY` 改成空值后重启 | 调用任何工具应返回 `invalid_api_key` 并提示去 `/api-keys` |
118
+
119
+ ---
120
+
121
+ ## 4. 功能测试用例
122
+
123
+ > 准备 5 个真实 PDF 作为 fixtures,存放于 `tests/fixtures/`(不入库,列在 README 中由测试者各自下载)。
124
+
125
+ ### 4.1 测试 fixture 清单
126
+
127
+ | 文件 | 类型 | 页数 | 关键特征 |
128
+ |---|---|---|---|
129
+ | `attention-is-all-you-need.pdf` | arxiv 论文 | 15 | 公式密集、多栏、图表 |
130
+ | `ieee-spec-sample.pdf` | IEEE 技术标准 | 40 | 跨页表格、嵌套小节 |
131
+ | `bilingual-jp-source.pdf` | 日文技术文档 | 8 | 翻译用例 |
132
+ | `large-handbook.pdf` | 大型 PDF | 500 | 边界压力测试 |
133
+ | `oversized-1gb.pdf` | 文件 > 300MB | — | 文件大小错误用例 |
134
+
135
+ ### 4.2 用例 T1: 基础 parse
136
+
137
+ **Prompt**: "请帮我把 attention-is-all-you-need.pdf 转成 markdown。"
138
+
139
+ | 检查项 | 期望 |
140
+ |---|---|
141
+ | Agent 是否调用 `kolmopdf_estimate_cost` | ✅ 应在 parse 前调用 |
142
+ | Agent 是否调用 `kolmopdf_parse_pdf` | ✅ |
143
+ | 返回的 `markdown_path` 是否存在 | ✅ 本地文件可读 |
144
+ | Markdown 中公式数量 | ≥ 80% 的可见公式被 `$...$` / `$$...$$` 包裹 |
145
+ | 表格 | 至少 1 个表格成功转为 markdown 表格 |
146
+ | 多栏阅读顺序 | 段落顺序与原文一致,不串行 |
147
+ | 积分扣除 | `points_deducted = pages × 2` |
148
+
149
+ ### 4.3 用例 T2: parse + 翻译(中英双语)
150
+
151
+ **Prompt**: "Parse this paper into bilingual markdown for me."(指向 `attention-is-all-you-need.pdf`)
152
+
153
+ | 检查项 | 期望 |
154
+ |---|---|
155
+ | `enable_translation=true` | ✅ |
156
+ | `output_options` 包含 `bilingual` 或 agent 主动设置 | ✅ |
157
+ | 输出 markdown 含中英对照 | ✅ |
158
+ | `points_deducted = pages × 3` | ✅ |
159
+
160
+ ### 4.4 用例 T3: 版式保留翻译
161
+
162
+ **Prompt**: "把 bilingual-jp-source.pdf 翻译成英文,保留原版式。"
163
+
164
+ | 检查项 | 期望 |
165
+ |---|---|
166
+ | Agent 调用 `kolmopdf_translate_pdf`(非 parse) | ✅ |
167
+ | `source_language=ja`, `target_language=en` | ✅ |
168
+ | 返回的 PDF 文件可正常打开 | ✅ |
169
+ | PDF 中文字已替换为英文,图表位置保持 | ✅ |
170
+ | `points_deducted = pages × 2` | ✅ |
171
+
172
+ ### 4.5 用例 T4: 跨页表格合并
173
+
174
+ **Prompt**: "Parse ieee-spec-sample.pdf. Make sure tables that span pages are merged."
175
+
176
+ | 检查项 | 期望 |
177
+ |---|---|
178
+ | `enable_cross_page_merge=true` | ✅ Agent 应主动设置 |
179
+ | 跨页表格在输出 markdown 中保持单一表格 | ✅ |
180
+
181
+ ### 4.6 用例 T5: 格式转换链式
182
+
183
+ **Prompt**: "请把 attention-is-all-you-need.pdf 最终转成 docx 给我。"
184
+
185
+ | 检查项 | 期望 |
186
+ |---|---|
187
+ | Agent 顺序调用 parse → convert | ✅ |
188
+ | 中间 markdown 文件存在 | ✅ |
189
+ | 最终 `.docx` 文件可在 Word 打开 | ✅ |
190
+ | 总扣分 = `pages × 2 + 1` | ✅ |
191
+
192
+ ### 4.7 用例 T6: 大文件边界(500 页)
193
+
194
+ **Prompt**: "Parse large-handbook.pdf to markdown."
195
+
196
+ | 检查项 | 期望 |
197
+ |---|---|
198
+ | `kolmopdf_estimate_cost` 报出 `pages × 2 = 1000` 积分 | ✅ |
199
+ | 若余额不足 → agent 停止并报告 shortfall | ✅ |
200
+ | 若余额充足 → 任务完成(端到端可能 5–15 分钟) | ✅ |
201
+ | 进度通知 | 客户端有可见进度提示(不被 timeout) |
202
+
203
+ ---
204
+
205
+ ## 5. 错误场景测试用例
206
+
207
+ ### 5.1 E1: 无效 API key
208
+
209
+ ```bash
210
+ export KOLMOPDF_API_KEY=sk-invalid
211
+ # 重启客户端,调用 /kolmopdf:balance
212
+ ```
213
+
214
+ | 期望 |
215
+ |---|
216
+ | 返回 `invalid_api_key` |
217
+ | 提示用户去 `https://www.kolmopdf.com/api-keys` |
218
+
219
+ ### 5.2 E2: 积分不足
220
+
221
+ 测试方法:使用一个余额很低的 key(例如 5 积分)尝试 parse 一个 100 页 PDF。
222
+
223
+ | 期望 |
224
+ |---|
225
+ | `kolmopdf_estimate_cost` 返回 `sufficient=false`, `shortfall=195` |
226
+ | Agent 应停止而不直接发起 parse |
227
+ | 提示用户去 `https://www.kolmopdf.com/subscription` |
228
+
229
+ ### 5.3 E3: 文件 > 300MB
230
+
231
+ ```bash
232
+ # 试图 parse oversized-1gb.pdf
233
+ ```
234
+
235
+ | 期望 |
236
+ |---|
237
+ | MCP server 在上传前本地拒绝(`client_local_validation`) |
238
+ | 错误信息含 "300MB" |
239
+
240
+ ### 5.4 E4: 文件 > 800 页
241
+
242
+ | 期望 |
243
+ |---|
244
+ | MCP server 本地用 pdf-lib 读出 page count > 800 后立即报错 |
245
+ | 不发起上传,不扣积分 |
246
+
247
+ ### 5.5 E5: 非 PDF 文件
248
+
249
+ ```bash
250
+ # parse 一个 .docx 或 .txt
251
+ ```
252
+
253
+ | 期望 |
254
+ |---|
255
+ | 返回 `parse_file_not_pdf` |
256
+ | 不扣积分 |
257
+
258
+ ### 5.6 E6: 错误的 target_format
259
+
260
+ ```bash
261
+ # /kolmopdf:convert sample.md --format excel
262
+ ```
263
+
264
+ | 期望 |
265
+ |---|
266
+ | 返回 `convert_target_format_unsupported` |
267
+ | 列出合法值 |
268
+
269
+ ### 5.7 E7: 服务端处理超时
270
+
271
+ 无法人为构造,记录在 issue 模板中(用户上报时收集 task_id + log)。client 侧应:
272
+
273
+ | 期望 |
274
+ |---|
275
+ | Polling 超过 `KOLMOPDF_MAX_POLL_MINUTES` 后抛 `client_polling_timeout` |
276
+ | 提示用户用 `kolmopdf_get_task_status` 查询 |
277
+
278
+ ### 5.8 E8: 网络中断(重试逻辑)
279
+
280
+ 测试方法:用 mitmproxy 或 toxiproxy 模拟随机 5xx。
281
+
282
+ | 期望 |
283
+ |---|
284
+ | 单次 HTTP 失败被指数退避重试 3 次后才抛错 |
285
+ | Polling 期间偶发失败不中断 |
286
+
287
+ ---
288
+
289
+ ## 6. 性能与质量基准(与 MinerU 对标)
290
+
291
+ ### 6.1 测试集
292
+
293
+ 10 篇 PDF:
294
+
295
+ | 类型 | 数量 | 来源 |
296
+ |---|---|---|
297
+ | arxiv 论文(公式密集) | 4 | arxiv.org,2023–2026 |
298
+ | IEEE/ACM 标准 | 2 | IEEE Xplore 公开预览 |
299
+ | 中日韩技术文档 | 2 | 多语言场景 |
300
+ | 含跨页表格 | 1 | 财报或行业报告 |
301
+ | 扫描版 PDF(OCR 路径) | 1 | 复印件 |
302
+
303
+ ### 6.2 度量指标
304
+
305
+ | 指标 | 度量方法 |
306
+ |---|---|
307
+ | 端到端耗时 | client 计时(含上传 + 排队 + 处理 + 下载) |
308
+ | 公式还原率 | 人工抽检 100 条公式,统计 LaTeX 完全正确比例 |
309
+ | 表格还原率 | 人工抽检所有表格,统计结构 + 内容完全正确比例 |
310
+ | 多栏阅读顺序错误数 | 人工查阅 markdown 中的串行位置 |
311
+ | 翻译可读性(仅 T2/T3 用例) | 1–5 主观打分 × 3 人评 |
312
+ | 积分成本 | 实际扣分 |
313
+
314
+ ### 6.3 对照组
315
+
316
+ | 工具 | 调用方式 |
317
+ |---|---|
318
+ | KolmoPDF | 本插件 |
319
+ | MinerU | `mineru-mcp`(VLM 模式) |
320
+ | Mistral OCR | `mcp-pdf2md` |
321
+ | Claude Code 内置 Read | 仅可用于 ≤ 20 页 |
322
+
323
+ ### 6.4 报告格式
324
+
325
+ `tests/benchmark/results-<date>.md` 存放原始计时与抽检数据;`tests/benchmark/summary-<date>.csv` 存放统计结果。
326
+
327
+ ---
328
+
329
+ ## 7. CI smoke test 规范
330
+
331
+ GitHub Actions secret 中注入测试 key 后,nightly 跑:
332
+
333
+ | 用例 | 输入 | 验证 |
334
+ |---|---|---|
335
+ | smoke-parse | 1 页测试 PDF | exit 0, markdown_path 存在 |
336
+ | smoke-translate | 1 页中文 PDF → en | exit 0, translated_pdf_path 存在 |
337
+ | smoke-convert | hello.md → docx | exit 0, docx 存在 |
338
+ | smoke-balance | — | exit 0, points > 0 |
339
+
340
+ 每次 smoke 总消耗约 6 积分(2+2+1+0)。月预算 ≈ 200 积分(30 次 × 6)。
341
+
342
+ ---
343
+
344
+ ## 8. 故障排查
345
+
346
+ | 症状 | 排查 |
347
+ |---|---|
348
+ | `/plugin install` 后 skill 不出现 | 重启客户端;`/plugin marketplace update kolmopdf` |
349
+ | 调用工具报 `Cannot find module @kolmopdf/mcp-server` | npm registry 可达性;本地 `npm cache clean --force` 重试 |
350
+ | 任务一直 `waiting` 不进入 `processing` | API 端单 key 上限 3 并发;用 `/kolmopdf:balance` 确认 key 有效 |
351
+ | 公式渲染异常 | 检查下游 markdown renderer 是否支持 KaTeX;改用 `formula_format=bracket` |
352
+ | 中文乱码 | 检查 markdown 文件 BOM;用 `iconv -f utf-8 -t utf-8 file.md` 标准化 |
353
+ | ZIP 解压失败 | 检查 `KOLMOPDF_OUTPUT_DIR` 写入权限 |
354
+ | 大文件上传中断 | 拉高 `KOLMOPDF_UPLOAD_TIMEOUT_MS`;检查网络稳定性(mainland China 用户可能需要 proxy) |
355
+ | `npx -y` 卡住 | 第一次拉包时间较长,~30s 正常;若超过 2 min 检查 npm registry 配置 |
356
+
357
+ ---
358
+
359
+ ## 9. 用户报告 bug 时收集的最小信息
360
+
361
+ | 字段 | 获取方式 |
362
+ |---|---|
363
+ | 客户端版本 | Claude Code: `claude --version` / Codex: `codex --version` |
364
+ | Plugin 版本 | `/plugin list` 或查看 `plugin.json` |
365
+ | MCP server 版本 | `npx @kolmopdf/mcp-server --version`(若实现) |
366
+ | Node 版本 | `node --version` |
367
+ | task_id | 失败时工具返回值中 |
368
+ | error_code + message | MCP 工具返回内容 |
369
+ | 操作系统 | `uname -a` |
370
+ | 网络位置 | 是否大陆/海外(影响 KolmoPDF 上行链路) |
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@kolmopdf/mcp-server",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "KolmoPDF plugin monorepo for Claude Code, Codex CLI, and Cursor.",
6
+ "main": "packages/mcp-server/dist/index.js",
7
+ "types": "packages/mcp-server/dist/index.d.ts",
8
+ "license": "MIT",
9
+ "type": "module",
10
+ "engines": {
11
+ "node": ">=20"
12
+ },
13
+ "packageManager": "pnpm@9.12.0",
14
+ "scripts": {
15
+ "build": "pnpm -r build",
16
+ "typecheck": "pnpm -r typecheck",
17
+ "test": "pnpm -r test",
18
+ "test:unit": "pnpm -r test:unit",
19
+ "lint": "biome check .",
20
+ "lint:fix": "biome check --write ."
21
+ },
22
+ "devDependencies": {
23
+ "@biomejs/biome": "^1.9.4",
24
+ "typescript": "^5.4.5"
25
+ },
26
+ "repository": {
27
+ "type": "git",
28
+ "url": "https://github.com/kolmopdf/claude-plugin.git"
29
+ }
30
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 KomoAI LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,37 @@
1
+ # @kolmopdf/mcp-server
2
+
3
+ MCP server for [KolmoPDF](https://www.kolmopdf.com) — high-fidelity PDF→Markdown parsing, layout-preserving PDF translation, and Markdown→DOCX/HTML/PDF/LaTeX conversion.
4
+
5
+ ## Usage
6
+
7
+ ```jsonc
8
+ {
9
+ "mcpServers": {
10
+ "kolmopdf": {
11
+ "command": "npx",
12
+ "args": ["-y", "@kolmopdf/mcp-server"],
13
+ "env": { "KOLMOPDF_API_KEY": "sk-..." }
14
+ }
15
+ }
16
+ }
17
+ ```
18
+
19
+ ## Environment variables
20
+
21
+ | Variable | Required | Default | Description |
22
+ | --- | --- | --- | --- |
23
+ | `KOLMOPDF_API_KEY` | yes | — | API key from https://www.kolmopdf.com/api-keys |
24
+ | `KOLMOPDF_BASE_URL` | no | `https://www.kolmopdf.com` | Override for enterprise/debug |
25
+ | `KOLMOPDF_OUTPUT_DIR` | no | `./kolmopdf-output` | Extraction root |
26
+ | `KOLMOPDF_POLL_INTERVAL_MS` | no | `2000` | Status poll interval |
27
+ | `KOLMOPDF_MAX_POLL_MINUTES` | no | `30` | Max client-side wait |
28
+ | `KOLMOPDF_HTTP_TIMEOUT_MS` | no | `60000` | Per-call HTTP timeout |
29
+ | `KOLMOPDF_UPLOAD_TIMEOUT_MS` | no | `600000` | Upload timeout |
30
+
31
+ ## Tools
32
+
33
+ `kolmopdf_parse_pdf`, `kolmopdf_translate_pdf`, `kolmopdf_convert_markdown`, `kolmopdf_estimate_cost`, `kolmopdf_check_balance`, `kolmopdf_get_task_status`.
34
+
35
+ ## License
36
+
37
+ MIT