server/index.js: Node MCP server exposing PDF tools shared by Claude Desktop and Cursor. Keep tool definitions and helper utilities here; prefer incremental updates over rewrites.pdf-toolkit-mcp-share/: Packaged variant used bypackage-for-friend.js; mirror changes fromserver/index.jswhen APIs evolve.manifest.jsonandindex.html: Claude Desktop extension metadata and UI stub. Update versions alongsidepackage.json.example-fw9.pdf: Sample form for smoke tests. Keep anonymized assets only.
display_pdf,list_pdfs,read_pdf_fields,fill_pdf,bulk_fill_from_csv,save_profile,load_profile,list_profiles,fill_with_profile,extract_to_csv,validate_pdf,read_pdf_content,get_pdf_resource_uri,read_pdf_bytes(app-only).
npm install: install runtime dependencies (Node.js 18+).node server/index.js: run the MCP server over stdio for local hosts (Cursor, Claude) and watch stderr for diagnostics.node package-for-friend.js: regeneratepdf-toolkit-mcp.zip; requires thezipCLI and ensures shareable installers stay current.mcpb pack: rebuild the.mcpbextension after code or asset updates; install via Claude Desktop to validate.
- Use 2-space indentation,
const/letsemantics, and double-quoted strings to matchserver/index.jsand shipped bundles. - Favor composable helpers over inlined logic; reuse
resolvePath,fillPdfFields, and profile utilities instead of duplicating them. - Tool names stay snake_case (
list_pdfs,fill_pdf); new tools should follow that pattern and return structured text blocks.
- No automated test suite yet; perform manual runs against
example-fw9.pdfvia the MCP host. Exerciselist_pdfs,read_pdf_fields,fill_pdf, and one profile flow. - Validate CSV workflows with a two-row fixture before publishing; include a value with a comma to catch CSV parsing regressions.
- Smoke-test new tools:
extract_to_csvon two PDFs,validate_pdfon a partially filled form,read_pdf_contenton text and scanned PDFs, andget_pdf_resource_uriwith a local file path.
- Follow the existing imperative subject style (
Update index.html to improve structure). Group related changes and note version bumps explicitly. - Include PR context: summary of affected tools, manual test evidence, linked issue if applicable, and screenshots only when UI assets change.
- Regenerate artifacts (
pdf-toolkit-mcp.zip,.mcpb) in separate commits or attach them to releases rather than merging binaries directly. Keep version numbers aligned acrosspackage.json,manifest.json, and the share bundle.
docs/MAINTAINERS.mdfor architecture, packaging, and manual test checklist.docs/RELEASE.mdfor release steps and artifact handling.docs/SUPPORT.mdfor issue intake and triage flow.
- MCP spec/org: https://github.com/modelcontextprotocol
- MCPB CLI: https://github.com/modelcontextprotocol/mcpb
- SDK:
@modelcontextprotocol/sdk
- Never hard-code personal paths; rely on
resolvePathand default directories (~/Documents,~/.pdf-toolkit-files). - Scrub PDFs or CSVs before committing, and point contributors to local-only credentials files when testing protected documents.
IMPORTANT: This project uses bd (beads) for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods.
- Dependency-aware: Track blockers and relationships between issues
- Git-friendly: Dolt-powered version control with native sync
- Agent-optimized: JSON output, ready work detection, discovered-from links
- Prevents duplicate tracking systems and confusion
Check for ready work:
bd ready --jsonCreate new issues:
bd create "Issue title" --description="Detailed context" -t bug|feature|task -p 0-4 --json
bd create "Issue title" --description="What this issue is about" -p 1 --deps discovered-from:bd-123 --jsonClaim and update:
bd update <id> --claim --json
bd update bd-42 --priority 1 --jsonComplete work:
bd close bd-42 --reason "Completed" --jsonbug- Something brokenfeature- New functionalitytask- Work item (tests, docs, refactoring)epic- Large feature with subtaskschore- Maintenance (dependencies, tooling)
0- Critical (security, data loss, broken builds)1- High (major features, important bugs)2- Medium (default, nice-to-have)3- Low (polish, optimization)4- Backlog (future ideas)
- Check ready work:
bd readyshows unblocked issues - Claim your task atomically:
bd update <id> --claim - Work on it: Implement, test, document
- Discover new work? Create linked issue:
bd create "Found bug" --description="Details about what was found" -p 1 --deps discovered-from:<parent-id>
- Complete:
bd close <id> --reason "Done"
bd automatically syncs via Dolt:
- Each write auto-commits to Dolt history
- Use
bd dolt push/bd dolt pullfor remote sync - No manual export/import needed!
- ✅ Use bd for ALL task tracking
- ✅ Always use
--jsonflag for programmatic use - ✅ Link discovered work with
discovered-fromdependencies - ✅ Check
bd readybefore asking "what should I work on?" - ❌ Do NOT create markdown TODO lists
- ❌ Do NOT use external issue trackers
- ❌ Do NOT duplicate tracking systems
For more details, see README.md and docs/QUICKSTART.md.
When ending a work session, you MUST complete ALL steps below. Work is NOT complete until git push succeeds.
MANDATORY WORKFLOW:
- File issues for remaining work - Create issues for anything that needs follow-up
- Run quality gates (if code changed) - Tests, linters, builds
- Update issue status - Close finished work, update in-progress items
- PUSH TO REMOTE - This is MANDATORY:
git pull --rebase bd dolt push git push git status # MUST show "up to date with origin" - Clean up - Clear stashes, prune remote branches
- Verify - All changes committed AND pushed
- Hand off - Provide context for next session
CRITICAL RULES:
- Work is NOT complete until
git pushsucceeds - NEVER stop before pushing - that leaves work stranded locally
- NEVER say "ready to push when you are" - YOU must push
- If push fails, resolve and retry until it succeeds