{"_id":"@modelcontextprotocol/server-pdf","_rev":"30-050bcdf3cf6a94fd9bc892ce51f6f121","name":"@modelcontextprotocol/server-pdf","dist-tags":{"latest":"2.0.3"},"versions":{"0.4.1":{"name":"@modelcontextprotocol/server-pdf","version":"0.4.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@0.4.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"3df65071bd42b5f14810bd516118d4121926de0c","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-0.4.1.tgz","fileCount":9,"integrity":"sha512-0iYvy/tvQ7pBRkA5bG+y8KpLdiImDmW1ybBo5NS36iME1N0BjkUha/RnAhbKD+u9CWvF497VXjKCTqbqb7xYgw==","signatures":[{"sig":"MEUCIEon3HuxYrDspdUzqy0M25fKW7NujFBGrLZAi5FIl+CaAiEAwc3qpo8k+vsRxX2z1lL8TbqBNiqgrTW4JmPmDBO7130=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6222334},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"8c3b1daf7ec2ff88132827a16b6d8674e1e5b448","scripts":{"dev":"cross-env NODE_ENV=development concurrently 'npm run watch' 'npm run serve'","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.21.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^0.4.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"^22.0.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_0.4.1_1768510262823_0.9080053504379719","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@modelcontextprotocol/server-pdf","version":"0.4.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@0.4.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"0fa7da6d3f27732fa1bb44f69fc3b7c8f78b73b9","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-0.4.2.tgz","fileCount":6,"integrity":"sha512-gGrrzoaaFBP6GbgsplyE3eFqyG0qlrLAJ1OOB6WfTNpjgyEgDm1m3TvHIabZMEnRR2lzZGsx7Rw13S/z1nRAcQ==","signatures":[{"sig":"MEUCIC034U/6L5uDsliAag2fkwfSw4fFJgCkhp6VdTvfgsVsAiEA1sh7FsLW4jnfdPBh/kOvbVqMgS2OJfjxY8jNT3EImFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6223864},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"2d4311a25d73d12be387b9837faa75a95e0f4a26","scripts":{"dev":"cross-env NODE_ENV=development concurrently 'npm run watch' 'npm run serve'","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"../.."},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_0.4.2_1769438776784_0.3291595243102887","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.0.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.0.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"9a56e736f9927088bee8946882dad3ad5af61373","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.0.0.tgz","fileCount":6,"integrity":"sha512-TZYhDWPuKnRADuHz3YzUE47Z2ipdnyLxgJs35ySnn1j+JXAIvJj/fb/haK9QU2jt6grn3fqA/1ZfJpbtLMz7Dw==","signatures":[{"sig":"MEYCIQDpTM0RS2tRtsN2flowNAP3usVKcgIuJwF9QlmN1d8lUQIhAM7euIz/ZMmFhoW9hAvT56mzSwmPy+RJIjFbwo+sjact","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6224211},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"298e884ec3f02daba085acdb02042d73bd00b355","scripts":{"dev":"cross-env NODE_ENV=development concurrently 'npm run watch' 'npm run serve'","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"../.."},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.0.0_1769448967108_0.3331459044101357","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@modelcontextprotocol/server-pdf","version":"1.0.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.0.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"ecb1b0141ec4535c58eb71833119c5a9b6045dd2","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.0.1.tgz","fileCount":6,"integrity":"sha512-zKqSQdfzErOuG9X7gjUZblTtwxmR3KmGQEFW7plwIVwlGvNC1Wx6bHmlgovQjxY4qxBme6pDS6vtdvRdMxzGTA==","signatures":[{"sig":"MEUCIH2MW17PqWO3B+pdmSKuiF8iRH/VVHOe1tsUOk/D6b6uAiEA+b89SeNqbN1tltfSCDtjwq3X10Q9x/8vJ/0hDSitwWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6224499},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"605e31b6c5b2665b95e83c49d23bd2bb2aa73aff","scripts":{"dev":"cross-env NODE_ENV=development concurrently 'npm run watch' 'npm run serve'","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.0.1_1769467108117_0.6528425244231051","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.1.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.1.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"35154cfa5c0cbde1b5644434cd3e799cb6d097ae","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.1.0.tgz","fileCount":6,"integrity":"sha512-fyKEn+8kTsfLnYGJ+iiYzhMNMMXCAOxGCHsntQrkGPb5+ewn0l21w50cgfnCNlknDJ16x267Ag/twVEOWaRaKw==","signatures":[{"sig":"MEUCIQDWdiF7LTTu4FtFdLTKHI+APQAEJTbgXnYvIum6VCgURwIgSTf+Xhd1NSlpEVPjfgvOPD/dDpXsCzuhBHFta4Njk9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6241430},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"5bbf2778821217fe757b653ea84caf4cbf364d81","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.1.0_1771723462460_0.06918346588849356","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@modelcontextprotocol/server-pdf","version":"1.1.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.1.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"dc2c792ffd5d174670caf852687908838566dc98","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.1.1.tgz","fileCount":6,"integrity":"sha512-rfQXEGC7wbnPcdgjNhusTkc9zj9xv8sLIHcJNg39Hfvb/zYzx/yfEn8JNGuCwEREhjr23yWEg/Yjkv8mFRE9yA==","signatures":[{"sig":"MEYCIQCpApkoH7ikYPDxzPu+QU1ZL/oOekRplT3dFgjvAIxlJwIhAM8R60oJuLKDI+NaHGyqi/f+00oiLB1a63mfThiHgnsN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6239322},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"ec389f473b7d6107a003f820a1c39a7eddbbfc3d","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.1.1_1771900996630_0.28123106962617084","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@modelcontextprotocol/server-pdf","version":"1.1.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.1.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"206e86fec8464ca9edc9b2cf3d74ea55b1d9277c","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.1.2.tgz","fileCount":6,"integrity":"sha512-FeDuLdABDJQRkQNMeqtKWkusKvLxt/+kYxFXTEgZqKKtair/qO+0gGRmq16EosG9Gb7dWvVhL0KKerVAsvgMgQ==","signatures":[{"sig":"MEYCIQDK0mvGMmyzd3LmeCtHxI9UfSVhBKhl+rYyA55mTQRqIQIhAJtoGWjX/ivaTM1bbHRyliE+6f5T/QTCqI5/DkKqRINt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6246207},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"5373f01d6f55114ec0a3eb9c864fea6f233589bc","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.1.2_1772033646019_0.09267096201626468","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.2.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.2.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"f9849c95f43a2c4e4d4e35bf1091179f1a2fa5a3","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.2.0.tgz","fileCount":6,"integrity":"sha512-xFr1br4061kCPOQTZkZialfLyQJrBku+Mh1VoeorIDAtHq7PPfY8KaQnxlTtSM7m0QCm8HG1okuAYlYBVvy4cQ==","signatures":[{"sig":"MEYCIQCARO0aOSXYg5rSAb92nSpHk+6pM5kW9UsHSKgRpKifWwIhAIwqC+DDwAV0yvkB562CGjiqukQm69446KOCwTrbhpzs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6249641},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"6b12fff1d0ab151a3b8cea44b3910465e2285f05","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.2.0_1772812605547_0.6794281459115115","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@modelcontextprotocol/server-pdf","version":"1.2.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.2.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"e10b7f16e834cda56eb8bb359992b99633e00051","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.2.1.tgz","fileCount":6,"integrity":"sha512-m0QMTUhkitPfpu95qT9c0xy2CTepnB9ljRW95MwjStsJGeuqRVZh7UgaXqfF0YumCCl2fRStGSXxZqLdYa5G1A==","signatures":[{"sig":"MEUCIFpuvWiPvXzBZpD7aOKpsWBHCWrTQhEpZk/cQkBnYt4YAiEA3MazbfVfciV3tcNnq2rB3H/OlyAmNIkm1zz3tDth+u8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5646376},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"1aa3c9c106666345b82f1bd5d4d21a5ee14ba1db","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.2.1_1773164942205_0.5745856415958328","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@modelcontextprotocol/server-pdf","version":"1.2.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.2.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"8550f41e9f23a66f8f24b52748b7938ab779d2fe","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.2.2.tgz","fileCount":6,"integrity":"sha512-DmvTNkGOmFl7FNhF+mGen1pveW/Z6mnFyWMjifvsfrI/NveaAmKj/ebx/GMY2kHJMsEWo4QV3dAWNebqOm+d6A==","signatures":[{"sig":"MEYCIQDpo1YyAt2aWuPJ6DrmA2V24jNXILOn9knWlZ3K+Tk06gIhAOdYTOkdrplG9bKEmKbgj/LuRltRRQx8I4KRTqlE+N8K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5646375},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"704b6e0af9ec1b3d4a351f12fb2596d2da1e0818","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.2.2_1773170571558_0.7210388916438148","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.3.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.3.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"2bb8dade70d79205b7fa745475e1cac6a2ef507a","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.3.0.tgz","fileCount":8,"integrity":"sha512-HM77Z/b89HNbWFewDiyN9HWFFYvn33DPMVoLdFNVz1YZzXvQWUeSpwIQXpv2SLgVRRxsA1UbNE7U764LXaUdgA==","signatures":[{"sig":"MEQCIFqKdarcctL0iJvtRiPCtloxwIAy/xl8pxJHPNXNqN+eAiAkk1an3c9HsN9LmWhysITDq1nKvlLOgdOyQ+7smc9i7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6482102},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"6723c8ff106dfd6eb312d1ce31353eb80c2f7000","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.3.0_1774297373752_0.4268245360850387","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@modelcontextprotocol/server-pdf","version":"1.3.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.3.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"f3fd57fc9bce46bfbfd52e19898e8b5d4cf54f32","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.3.1.tgz","fileCount":8,"integrity":"sha512-8eJVwX0dnFBOng4CK/BtpZZkTjWLVMxCRlOo/a/enH4puXNjcp7VKm5afetQH7GfHwrtQJ9lgdMpy04sIbRmzw==","signatures":[{"sig":"MEUCIHHmWZr8HQKCe9juxvfQZH+pes3z5P9BrImoapsQ+rO4AiEAyzpHc6BztaivOeNa6GeUEUWnXKid6UeXfr5mGz09O+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6482110},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"e8ca8594295807dfa33111b6abef738e677acd91","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.3.1_1774297398378_0.6324638933467621","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"@modelcontextprotocol/server-pdf","version":"1.3.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.3.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"ffcd7933fd44edc5a36174cf738749ff7b84cceb","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.3.2.tgz","fileCount":8,"integrity":"sha512-B569TfWuYkKOqMvLIx92+1muV9Gk41ksJUMuiMxgsw2Vi//DjrPCY8qewdI/DgI1wz8t2OOXnDuDeFmgbulv1A==","signatures":[{"sig":"MEYCIQD9hKqnJDzHUQ6qAPiRycwhQszASPEC5nylQEljUhc8lAIhAP2C/OeB0yy6kYzgTIpnETCtdgf8Tz7O7OqWjkuVu/vd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6481900},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"14969c5da2fdbdef4284d2131b5ada4ba94aaca0","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build server.ts --outdir dist --target node --external pdfjs-dist && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.24.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.3.2_1774634059793_0.6077981226845488","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.4.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.4.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"72d84256227421afd07b7eae675ccfde4dbb1e52","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.4.0.tgz","fileCount":10,"integrity":"sha512-M8yAkKI3UFsjDGDYLlHRM5cRffMqO/X9zCSavfMFCOu0sGmJNQtH7dUz/Nj2MSYdpIyQuQ7NuLZGD2MVpmtwNg==","signatures":[{"sig":"MEUCIQDHcksf7Q9m0IbaPzCAUdX9vcgnaq65/HkMHaimFup87QIgfw+JInF/I3EZ+ETQyAgnWnhbigPiSXzRuE55rybdHGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6512129},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"9da4a75ff60bcd127c494bbca98f7b22e87f95e7","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.4.0_1775101105086_0.2702766545568096","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.5.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.5.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"c03e0239828141f13baacedef678ce024d819779","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.5.0.tgz","fileCount":10,"integrity":"sha512-vAq8aAMhm6cZXc7Vned3Q5V8lvH/JJ2wijb6JcJu5ZEaj8YZgeTqhyCg0TD6fecOnrapfjQJMHydO3mxjRYzLA==","signatures":[{"sig":"MEUCICt9gMbxlLqKrs/pUHzIaDtb1gs+RUU/PU6TZCj9CH16AiEArKoR5lrxMyH+M4VoXCZ7kKCVgmb1yWs9uGST1EehI/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6522799},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"621a70a7242bf9c76dcb89a61d785ab9bb75cd87","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.4","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.5.0_1775121236538_0.9581090877216023","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.6.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.6.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"4d19aed65307bd2db12aeed8bc99d1f784f35edc","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.6.0.tgz","fileCount":10,"integrity":"sha512-DWSq6IWqjr58kw1sl4D4KURSfsmZQkS8e1b2A+nAwkzPodujMOBu/tVhxvwjPs/P9C52cV2UQ4DmLzZJn9hChg==","signatures":[{"sig":"MEQCIHd26DWXbawrIaKSN36ZQZibEIByFlvXP+GOoE/bECFAAiBkl0Mhg1JIfLJPLRk2t9GgxycJkxOfa+UNNeAAnL0+DQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6522907},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"01d826aea000a2f774d1d3e9b57fa352632c1c50","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.7","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.6.0_1776180392950_0.8228069286267345","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"7557f1c84d3e065d196ba78a84aa653ed4077f2b","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.0.tgz","fileCount":10,"integrity":"sha512-sFG6EhBKzZ/4IKDM9PmGoRm/fSDSFyEbCdWs4B8qbTKy5o6iJV3Eekwr3P+Zi4H49GO7X3RS16+Zf88Wh5KcgA==","signatures":[{"sig":"MEUCIAE0+vqwrzyDFKiSjMa08f4Ive+IGHZ5bu7aaafLPG5bAiEA+vX4SU6mKK+W1vq+njxZlfAC8fOI41u76ik/ItVvPhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6761199},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"64b4fa16de4a4694dbec5514b866802a1825f919","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.7","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.0_1776784940708_0.8404691792583083","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"39360bd6f273c9e616b15c5504f16dcff0f0191f","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.1.tgz","fileCount":10,"integrity":"sha512-O4Sj+2IqLx9aEY4MBSpOZufPVw+Gqx5P/EEf9HMPGn9KDmnnbZ/NnTBYPwP06az7xKL2IVfR07m6YrZHiR0sjw==","signatures":[{"sig":"MEQCIH9C1gjHPM3ZpCxDVnd3FH2E/K0pyjUuxXUwtbGbAt7RAiAXGd5MeVx1Mff98Kd+zKyHy+AgQMm47OuyfTOZlEguZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6765322},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"0008d3b78f94e37bb970673cbc33baecc481ae18","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.7","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdf-lib":"^1.17.1","pdfjs-dist":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.1_1777303258979_0.9215642851571164","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"0ff46a2d04cd80ff58bdc23929d5e7060d2b2dc8","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.2.tgz","fileCount":10,"integrity":"sha512-lAvzuxWp74lIt2H/KYze1v/oMPPdxh2V+m18lTcRCxwXKNJa8wKjmQT5aF30GOOVPo2fPvCVazgc8VCy4hTOLg==","signatures":[{"sig":"MEQCIBrJQFS4xzFOrBwXnTDasja/YEHy5D/kNh2lX1aBOBOuAiBSo80kMoXROwVOB1GXHiPDs5FCG1Ap9cbkxnQgVleRvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6979203},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"9a37ad71827d076af06978fa7f7f510449687061","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.7","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.2","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.2_1778868252645_0.7996310657799526","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.3","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.3","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paulcarletonjr@gmail.com"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"experimentalworks@gmail.com"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik","email":"olivier.chafik@gmail.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"539ff2ca3c275232ed50e25dc84f47aa6f40efba","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.3.tgz","fileCount":10,"integrity":"sha512-tywbM4xw2SSjOmpIfLFKh6pDTMcAjbvpYShVzsObQ++vMYUnpAqhf4rsClHt9ai4C3Vp2/9UzJEl5j2Xgk40KQ==","signatures":[{"sig":"MEUCIQCnXTSlf9T7Lh1a5oTRRkWCD1pCge97lhHxaZ7MAefJ5AIgCmmNWV6cIeilQroBDBdeGNFgYuz+LEQyEiGFzuPTAxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6979203},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"7d4434e991516d91286dded5bb10266cd6cddd02","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik","email":"olivier.chafik@gmail.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.3_1780313720060_0.8149686728975796","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.4","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.4","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"2def670e9089ed8ea38f1809700b5fc402c2a82a","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.4.tgz","fileCount":10,"integrity":"sha512-wzR71jGxi15rPKhyMVoW2UDb2EP7Ns7V5CQT2oZyFSduHssf+cMlqPiPuymC4+TUXvGV1f7CAvpYcqUjXmbhgQ==","signatures":[{"sig":"MEQCIA+8jp9uzphmF99U7BHnMYUD+3ZvZtJLrCSNvKEsdVV9AiBKgaAuP//H6F09/F0R2hRhTKVWQTL+AO8iGBcnn+Wl9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6982965},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"ca1d29894fabbd1558885a9ec8620dcb01d7457e","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.22.3","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.4_1780670304278_0.3938243267978252","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"@modelcontextprotocol/server-pdf","version":"1.7.5","license":"MIT","_id":"@modelcontextprotocol/server-pdf@1.7.5","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"129b25f8e0ede93bc2fcff7dce72d76daf9411c0","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-1.7.5.tgz","fileCount":10,"integrity":"sha512-JAlXoXvYUOKjzy6W9+kF8zrlvbscdvGcZusPpY1ZIvL5nam2lV8ZvlgWNTk54QGkXOGO9ZkhuB5IijmT9hi+YA==","signatures":[{"sig":"MEUCIH6f6J7oRWfnL0LpmJImbtpAGWxH6+fO8hK6xq8qRvgrAiEAh764d4y8Qw0jY8Z/v446bi2dsg+r/toAuPD5AiAoPwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@1.7.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6992459},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"92f46a574568a3ddac7600343b7d3c4c4ed7b588","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^4.1.13","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/sdk":"^1.29.0","@modelcontextprotocol/ext-apps":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_1.7.5_1784806202079_0.20337934597927165","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@modelcontextprotocol/server-pdf","version":"2.0.0","license":"MIT","_id":"@modelcontextprotocol/server-pdf@2.0.0","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ashwin-ant","email":"ashwin@anthropic.com"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"4ce32376e4ad8fb46e3a820e4e5afefa4b29612c","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-2.0.0.tgz","fileCount":10,"integrity":"sha512-27eBFr871+Lo7rkGbJGVAxZLdyWmJDLda7/iLpT8J9OrwzT5Vfsw6/STgd87hrlPIE1Jj0fJfsCr9qAqvcoxmw==","signatures":[{"sig":"MEUCIBe+bm4o0HJx7ua1UtNojygnRj8wwzbn4Rqw6EHXLXoeAiEArl8mAi7OcESNIOrb0qrvQCDT6LoKGaJb2oAH1LWP75Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBlOwPNTyVX3G7VACQjWru/orS0RNoRCNw4FbFSvbscdAiEA4uZNRsjoSrUWburoiVF9sxyXLFMsPFoxB5TH8Y82Z9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@2.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7363546},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"352f6ced4d80772e92b4e7a311854481a8d65b04","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.2.0","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/express":"2.0.0","@modelcontextprotocol/ext-apps":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_2.0.0_1788892612556_0.8179607926592536","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@modelcontextprotocol/server-pdf","version":"2.0.1","license":"MIT","_id":"@modelcontextprotocol/server-pdf@2.0.1","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"b8c5a058e7c4d387d3e2f8f48ee053ebd22e834a","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-2.0.1.tgz","fileCount":10,"integrity":"sha512-WvpFZ3HsjE0piOCMwliwHgcbtXiw9AqF/SjBspPII1kdvIh5R+qZPjcDaASi6eYL9R545UQ7J8nOIb43La96Kg==","signatures":[{"sig":"MEUCIAWVOS6t5//QSyNznD5owYivkqD4qcdQIxVkQbOLgyZdAiEAtrT3lxtypkQUiY93sQAlsr+TxWHjBh3btZIJaR6sP54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCX8Db7UuS52GxvXPQFfny0MeGkYraloIakhwPt4OfqYgIhAJ2Fw9MkY01OVbwXiadmWoSYEhuxT7yDNSAgHJ6t4WH0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7363688},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"a523ab30ee6ec27034aab38a30a51eaa921d5f6d","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.2.0","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"^5.0.0","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/express":"2.0.0","@modelcontextprotocol/ext-apps":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_2.0.1_1790244527178_0.08150248734932242","host":"s3://npm-registry-packages-npm-production"}},"2.0.2":{"name":"@modelcontextprotocol/server-pdf","version":"2.0.2","license":"MIT","_id":"@modelcontextprotocol/server-pdf@2.0.2","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"bin":{"mcp-pdf-server":"dist/index.js"},"dist":{"shasum":"92f73689c91e0c522c763268bb8b138b621424eb","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-2.0.2.tgz","fileCount":10,"integrity":"sha512-qjfD5gGJH39tO7MDgZhAUKufXEUxQqgMyxNuj6LPcDeeB0WrTh7yXf143OIxlvxILn6n3ly/tqpCnYChNG+8KQ==","signatures":[{"sig":"MEQCIBF/FrJ27Ym3fwkkAdxSzTwQeNGqZIdioyW43RLG5hCaAiBrDdgvevn5zk5XWHYpsassdADJmHTP/QPJI/4c4EAjOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDoYGwF70BSmv27vFZuFTQVCMTy03GPMu+Q0gM2e5MzswIgBBnaoRHMoD3BLUa2vNcAV07MQ6W9wWmFhaXEKLpyVW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@2.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7363689},"main":"dist/server.js","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"fe9a9f1b95c46e8b63784e401ecb8d08eee7aea3","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.2.0","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"5.4.530","@cantoo/pdf-lib":"^2.6.5","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/express":"2.0.0","@modelcontextprotocol/ext-apps":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"tmp":"tmp/server-pdf_2.0.2_1790345514545_0.4807464328378821","host":"s3://npm-registry-packages-npm-production"}},"2.0.3":{"_id":"@modelcontextprotocol/server-pdf@2.0.3","bin":{"mcp-pdf-server":"dist/index.js"},"bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"dist":{"shasum":"c0b57f080d21933917bc118f8c07210b26b74a51","tarball":"https://registry.npmjs.org/@modelcontextprotocol/server-pdf/-/server-pdf-2.0.3.tgz","fileCount":10,"integrity":"sha512-Eh8zRvFXpFGIK72gdaGUPKpoqbvZn07ad/VP4j1C0gRPeVp/LurAlg8WaJov3XxMamVkhE1jQLnL2UG02TGJ6g==","signatures":[{"sig":"MEUCIF0Ux0kR7xx0rUbhMKtjxrD4SzTFSWSJzTzK1xFYO9sYAiEAodVhTGFX3jatPCVBehhxFRFz58Ve6it9ivSbyTIDQsA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD7wjoZNcVPtkqHPN3HmvLGfu7G/zxsHMZ/OXJiIjwxdAIhAIB+jfd+hbDJqY6CfPG8CR5yYlS1tK1a0cUA6Z7+IzZD"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@modelcontextprotocol%2fserver-pdf@2.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7366474},"main":"dist/server.js","name":"@modelcontextprotocol/server-pdf","type":"module","types":"dist/server.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/server.d.ts","default":"./dist/server.js"}},"gitHead":"82221c0c8ce7661efa6771c9d461511b1650495f","license":"MIT","scripts":{"dev":"cross-env NODE_ENV=development concurrently \"npm run watch\" \"npm run serve\"","build":"tsc --noEmit && cross-env INPUT=mcp-app.html vite build && tsc -p tsconfig.server.json && bun build pdfjs-polyfill.ts --outdir dist --target node && bun build server.ts --outdir dist --target node --external pdfjs-dist --external \"./pdfjs-polyfill.js\" && bun build main.ts --outfile dist/index.js --target node --external \"./server.js\" --external pdfjs-dist --banner \"#!/usr/bin/env node\"","serve":"bun --watch main.ts --enable-interact","start":"cross-env NODE_ENV=development npm run build && npm run serve","watch":"cross-env INPUT=mcp-app.html vite build --watch","build:mcpb":"npm run build && node build-mcpb.mjs","serve:stdio":"bun main.ts --stdio","start:stdio":"cross-env NODE_ENV=development npm run build 1>&2 && npm run serve:stdio","prepublishOnly":"npm run build"},"version":"2.0.3","_npmUser":{"name":"ochafik-ant","email":"ochafik@anthropic.com"},"homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"_npmVersion":"10.9.8","description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","directories":{},"maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.2.0","cors":"^2.8.5","express":"^5.1.0","pdfjs-dist":"5.4.530","@cantoo/pdf-lib":"2.6.5","@modelcontextprotocol/node":"2.0.0","@modelcontextprotocol/client":"2.0.0","@modelcontextprotocol/server":"2.0.0","@modelcontextprotocol/express":"2.0.0","@modelcontextprotocol/ext-apps":"^2.0.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.0","cross-env":"^10.1.0","typescript":"^5.9.3","@types/cors":"^2.8.19","@types/node":"22.10.0","concurrently":"^9.2.1","@types/express":"^5.0.0","vite-plugin-singlefile":"^2.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/server-pdf_2.0.3_1790352222479_0.0527713139106909"}}},"time":{"created":"2026-01-15T20:51:02.649Z","modified":"2026-09-25T16:03:42.935Z","0.4.1":"2026-01-15T20:51:03.053Z","0.4.2":"2026-01-26T14:46:17.242Z","1.0.0":"2026-01-26T17:36:07.353Z","1.0.1":"2026-01-26T22:38:28.347Z","1.1.0":"2026-02-22T01:24:22.661Z","1.1.1":"2026-02-24T02:43:16.820Z","1.1.2":"2026-02-25T15:34:06.230Z","1.2.0":"2026-03-06T15:56:45.762Z","1.2.1":"2026-03-10T17:49:02.414Z","1.2.2":"2026-03-10T19:22:51.840Z","1.3.0":"2026-03-23T20:22:54.015Z","1.3.1":"2026-03-23T20:23:18.612Z","1.3.2":"2026-03-27T17:54:20.003Z","1.4.0":"2026-04-02T03:38:25.323Z","1.5.0":"2026-04-02T09:13:56.793Z","1.6.0":"2026-04-14T15:26:33.242Z","1.7.0":"2026-04-21T15:22:20.942Z","1.7.1":"2026-04-27T15:20:59.262Z","1.7.2":"2026-05-15T18:04:12.969Z","1.7.3":"2026-06-01T11:35:20.419Z","1.7.4":"2026-06-05T14:38:24.465Z","1.7.5":"2026-07-23T11:30:02.373Z","2.0.0":"2026-09-08T18:36:52.738Z","2.0.1":"2026-09-24T10:08:47.280Z","2.0.2":"2026-09-25T14:11:54.669Z","2.0.3":"2026-09-25T16:03:42.583Z"},"bugs":{"url":"https://github.com/modelcontextprotocol/ext-apps/issues"},"license":"MIT","homepage":"https://github.com/modelcontextprotocol/ext-apps#readme","repository":{"url":"git+https://github.com/modelcontextprotocol/ext-apps.git","type":"git","directory":"examples/pdf-server"},"description":"MCP server for loading and extracting text from PDF files with chunked pagination and interactive viewer","maintainers":[{"name":"jspahrsummers","email":"justin@jspahrsummers.com"},{"name":"pcarleton","email":"paul@modelcontextprotocol.io"},{"name":"fweinberger","email":"fweinberger@anthropic.com"},{"name":"thedsp","email":"david@modelcontextprotocol.io"},{"name":"ochafik-ant","email":"ochafik@anthropic.com"},{"name":"cliffhall","email":"cliff@futurescale.com"}],"readme":"# PDF Server\n\n![Screenshot](screenshot.png)\n\nAn interactive PDF viewer using [PDF.js](https://mozilla.github.io/pdf.js/). Supports local files and remote URLs from academic sources (arxiv, biorxiv, zenodo, etc).\n\n## MCP Client Configuration\n\nAdd to your MCP client configuration (stdio transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"pdf\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"--silent\",\n        \"--registry=https://registry.npmjs.org/\",\n        \"@modelcontextprotocol/server-pdf\",\n        \"--stdio\"\n      ]\n    }\n  }\n}\n```\n\n### Local Development\n\nTo test local modifications, use this configuration (replace `~/code/ext-apps` with your clone path):\n\n```json\n{\n  \"mcpServers\": {\n    \"pdf\": {\n      \"command\": \"bash\",\n      \"args\": [\n        \"-c\",\n        \"cd ~/code/ext-apps/examples/pdf-server && npm run build >&2 && node dist/index.js --stdio\"\n      ]\n    }\n  }\n}\n```\n\n## What This Example Demonstrates\n\n### 1. Chunked Data Through Size-Limited Tool Calls\n\nOn some host platforms, tool calls have size limits, so large PDFs cannot be sent in a single response. This example streams PDFs in chunks using HTTP Range requests:\n\n**Server side** (`server.ts`):\n\n```typescript\n// Returns chunks with pagination metadata\n{\n  (bytes, offset, byteCount, totalBytes, hasMore);\n}\n```\n\n**Client side** (`mcp-app.ts`):\n\n```typescript\n// Load in chunks with progress\nwhile (hasMore) {\n  const chunk = await app.callServerTool({\n    name: \"read_pdf_bytes\",\n    arguments: { url, offset },\n  });\n  chunks.push(base64ToBytes(chunk.bytes));\n  offset += chunk.byteCount;\n  hasMore = chunk.hasMore;\n  updateProgress(offset, chunk.totalBytes);\n}\n```\n\n### 2. Model Context Updates\n\nThe viewer keeps the model informed about what the user is seeing:\n\n```typescript\napp.updateModelContext({\n  content: [\n    {\n      type: \"text\",\n      text: `PDF viewer | \"${title}\" | Current Page: ${page}/${total}\\n\\nPage content:\\n${pageText}`,\n    },\n  ],\n});\n```\n\nThis enables the model to answer questions about the current page or selected text.\n\n### 3. Display Modes: Fullscreen vs Inline\n\n- **Inline mode**: App requests height changes to fit content\n- **Fullscreen mode**: App fills the screen with internal scrolling\n\n```typescript\n// Request fullscreen\napp.requestDisplayMode({ mode: \"fullscreen\" });\n\n// Listen for mode changes\napp.ondisplaymodechange = (mode) => {\n  if (mode === \"fullscreen\") enableScrolling();\n  else disableScrolling();\n};\n```\n\n### 4. External Links (openLink)\n\nThe viewer demonstrates opening external links (e.g., to the original arxiv page):\n\n```typescript\ntitleEl.onclick = () => app.openLink(sourceUrl);\n```\n\n### 5. View Persistence\n\nPage position is saved per-view using `viewUUID` and localStorage.\n\n### 6. Dark Mode / Theming\n\nThe viewer syncs with the host's theme using CSS `light-dark()` and the SDK's theming APIs:\n\n```typescript\napp.onhostcontextchanged = (ctx) => {\n  if (ctx.theme) applyDocumentTheme(ctx.theme);\n  if (ctx.styles?.variables) applyHostStyleVariables(ctx.styles.variables);\n};\n```\n\n## Usage\n\n```bash\n# Default: loads a sample arxiv paper\nbun examples/pdf-server/main.ts\n\n# Load local files (converted to file:// URLs)\nbun examples/pdf-server/main.ts ./docs/paper.pdf /path/to/thesis.pdf\n\n# Load from URLs\nbun examples/pdf-server/main.ts https://arxiv.org/pdf/2401.00001.pdf\n\n# Mix local and remote\nbun examples/pdf-server/main.ts ./local.pdf https://arxiv.org/pdf/2401.00001.pdf\n\n# stdio mode for MCP clients\nbun examples/pdf-server/main.ts --stdio ./papers/\n```\n\n### Additional Flags\n\n- `--debug` — Enable verbose server-side logging.\n- `--enable-interact` — Enable the `interact` tool in HTTP mode (see [Deployment](#deployment)). Not needed for stdio.\n- `--writeable-uploads-root` — Allow saving annotated PDFs back to files under client roots named `uploads` (Claude Desktop mounts attachments there; writes are refused by default).\n\n## Deployment\n\nThe `interact` tool relies on an in-memory command queue (server enqueues → viewer polls). This constrains how the server can be deployed:\n\n- **stdio** (Claude Desktop) — `interact` is always enabled. The server runs as a single long-lived process, so the in-memory queue works.\n- **HTTP, single instance** — Pass `--enable-interact` to opt in. Works as long as all requests land on the same process.\n- **HTTP, stateless / multi-instance** — `interact` will not work. Commands enqueued on one instance are invisible to viewers polling another. Leave the flag off; the tool will not be registered.\n\n## Security: Client Roots\n\nMCP clients may advertise **roots** — `file://` URIs pointing to directories on the client's file system. The server uses these to allow access to local files under those directories.\n\n- **Stdio mode** (`--stdio`): Client roots are **always enabled** — the client is typically on the same machine (e.g. Claude Desktop), so the roots are safe.\n- **HTTP mode** (default): Client roots are **ignored** by default — the client may be remote, and its roots would be resolved against the server's filesystem. To opt in, pass `--use-client-roots`:\n\n```bash\n# Trust that the HTTP client is local and its roots are safe\nbun examples/pdf-server/main.ts --use-client-roots\n```\n\nWhen roots are ignored the server logs:\n\n```\n[pdf-server] Client roots are ignored (default for remote transports). Pass --use-client-roots to allow the client to expose local directories.\n```\n\n## Allowed Sources\n\n- **Local files**: Must be passed as CLI arguments (or via client roots when enabled)\n- **Remote URLs**: arxiv.org, biorxiv.org, medrxiv.org, chemrxiv.org, zenodo.org, osf.io, hal.science, ssrn.com, and more\n\n## Tools\n\n| Tool             | Visibility | Purpose                                                             |\n| ---------------- | ---------- | ------------------------------------------------------------------- |\n| `list_pdfs`      | Model      | List available local files and origins                              |\n| `display_pdf`    | Model + UI | Display interactive viewer                                          |\n| `interact`¹      | Model      | Navigate, annotate, search, extract pages, fill forms, save to file |\n| `read_pdf_bytes` | App only   | Stream PDF data in chunks                                           |\n| `save_pdf`       | App only   | Save annotated PDF back to local file                               |\n\n¹ stdio only by default; in HTTP mode requires `--enable-interact` — see [Deployment](#deployment).\n\n## Example Prompts\n\nAfter the model calls `display_pdf`, it receives the `viewUUID` and a description of all capabilities. Here are example prompts and follow-ups that exercise annotation features:\n\n### Annotating\n\n> **User:** Show me the Attention Is All You Need paper\n>\n> _Model calls `display_pdf` → viewer opens_\n>\n> **User:** Highlight the title and add an APPROVED stamp on the first page.\n>\n> _Model calls `interact` with `highlight_text` for the title and `add_annotations` with a stamp_\n\n> **User:** Can you annotate this PDF? Mark important sections for me.\n>\n> _Model calls `interact` with `get_text` to read content first, then `add_annotations` with highlights/notes_\n\n> **User:** Add a note on page 1 saying \"Key contribution\" at position (200, 500), and highlight the abstract.\n>\n> _Model calls `interact` with `add_annotations` containing a `note` and either `highlight_text` or a `highlight` annotation_\n\n### Navigation & Search\n\n> **User:** Search for \"self-attention\" in the paper.\n>\n> _Model calls `interact` with action `search`, query `\"self-attention\"`_\n\n> **User:** Go to page 5.\n>\n> _Model calls `interact` with action `navigate`, page `5`_\n\n### Page Extraction\n\n> **User:** Give me the text of pages 1–3.\n>\n> _Model calls `interact` with action `get_text`, intervals `[{start:1, end:3}]`_\n\n> **User:** Take a screenshot of the first page.\n>\n> _Model calls `interact` with action `get_screenshot`, page `1`_\n\n### Stamps & Form Filling\n\n> **User:** Stamp this document as CONFIDENTIAL on every page.\n>\n> _Model calls `interact` with `add_annotations` containing `stamp` annotations on each page_\n\n> **User:** Fill in the \"Name\" field with \"Alice\" and \"Date\" with \"2026-02-26\".\n>\n> _Model calls `interact` with action `fill_form`, fields `[{name:\"Name\", value:\"Alice\"}, {name:\"Date\", value:\"2026-02-26\"}]`_\n\n### Saving\n\n> **User:** Save the annotated version as `/docs/contract-signed.pdf`.\n>\n> _Model calls `interact` with action `save_as`, path `/docs/contract-signed.pdf`. Fails if the file exists; pass `overwrite: true` to replace. The target path must be under a mounted directory root._\n\n> **User:** Save my changes back to the file.\n>\n> _Model calls `interact` with action `save_as`, `overwrite: true` (no `path`). Overwrites the original — same writability gate as the viewer's save button. Only works for local files; remote PDFs need an explicit `path`._\n\n## Testing\n\n### E2E Tests (Playwright)\n\n```bash\n# Run annotation E2E tests (renders annotations in a real browser)\nnpx playwright test tests/e2e/pdf-annotations.spec.ts\n\n# Run all PDF server tests\nnpx playwright test -g \"PDF Server\"\n```\n\n### API Prompt Discovery Tests\n\nThese tests verify that Claude can discover and use annotation capabilities by calling the Anthropic Messages API with the tool schemas. They are **disabled by default** — skipped unless `ANTHROPIC_API_KEY` is set:\n\n```bash\nANTHROPIC_API_KEY=sk-ant-... npx playwright test tests/e2e/pdf-annotations-api.spec.ts\n```\n\nThe API tests simulate a conversation where `display_pdf` has already been called, then send a follow-up user message and verify the model uses annotation actions (or at least the `interact` tool). Three scenarios are tested:\n\n| Scenario             | User prompt                                                       | Expected model behavior                    |\n| -------------------- | ----------------------------------------------------------------- | ------------------------------------------ |\n| Direct annotation    | \"Highlight the title and add an APPROVED stamp\"                   | Uses `highlight_text` or `add_annotations` |\n| Capability discovery | \"Can you annotate this PDF?\"                                      | Uses interact or mentions annotations      |\n| Specific notes       | \"Add a note saying 'Key contribution' and highlight the abstract\" | Uses `interact` tool                       |\n\n## Architecture\n\n```\nserver.ts                  # MCP server + tools\nmain.ts                    # CLI entry point\nsrc/\n├── mcp-app.ts             # Interactive viewer UI (PDF.js)\n├── pdf-annotations.ts     # Annotation types, diff model, PDF import/export\n└── pdf-annotations.test.ts # Unit tests for annotation module\n```\n\n## Key Patterns Shown\n\n| Pattern                       | Implementation                                                 |\n| ----------------------------- | -------------------------------------------------------------- |\n| App-only tools                | `_meta: { ui: { visibility: [\"app\"] } }`                       |\n| Chunked responses             | `hasMore` + `offset` pagination                                |\n| Model context                 | `app.updateModelContext()`                                     |\n| Display modes                 | `app.requestDisplayMode()`                                     |\n| External links                | `app.openLink()`                                               |\n| View persistence              | `viewUUID` + localStorage                                      |\n| Theming                       | `applyDocumentTheme()` + CSS `light-dark()`                    |\n| Annotations                   | DOM overlays synced with proper PDF annotation dicts           |\n| Annotation import             | Load existing PDF annotations via PDF.js `getAnnotations()`    |\n| Diff-based persistence        | localStorage stores only additions/removals vs PDF baseline    |\n| Proper PDF export             | pdf-lib low-level API creates real `/Type /Annot` dictionaries |\n| Save to file                  | App-only `save_pdf` tool writes annotated bytes back to disk   |\n| Dirty flag                    | `*` prefix on title when unsaved local changes exist           |\n| Command queue                 | Server enqueues → client polls + processes                     |\n| File download                 | `app.downloadFile()` for annotated PDF                         |\n| Floating panel with anchoring | Magnetic corner-snapping panel for annotation list             |\n| Drag, resize, rotate          | Interactive annotation handles with undo/redo                  |\n| Keyboard shortcuts            | Ctrl+Z/Y (undo/redo), Ctrl+S (save), Ctrl+F (search), ⌘Enter   |\n\n### Annotation Types\n\nSupported annotation types (synced with PDF.js):\n\n| Type            | Properties                                                         | PDF Subtype  |\n| --------------- | ------------------------------------------------------------------ | ------------ |\n| `highlight`     | `rects`, `color?`, `content?`                                      | `/Highlight` |\n| `underline`     | `rects`, `color?`                                                  | `/Underline` |\n| `strikethrough` | `rects`, `color?`                                                  | `/StrikeOut` |\n| `note`          | `x`, `y`, `content`, `color?`                                      | `/Text`      |\n| `rectangle`     | `x`, `y`, `width`, `height`, `color?`, etc.                        | `/Square`    |\n| `circle`        | `x`, `y`, `width`, `height`, `color?`, etc.                        | `/Circle`    |\n| `line`          | `x1`, `y1`, `x2`, `y2`, `color?`                                   | `/Line`      |\n| `freetext`      | `x`, `y`, `content`, `fontSize?`, `color?`                         | `/FreeText`  |\n| `stamp`         | `x`, `y`, `label`, `color?`, `rotation?`                           | `/Stamp`     |\n| `image`         | `x`, `y`, `width`, `height`, `imageData?`/`imageUrl?`, `rotation?` | `/Stamp`     |\n\n## Dependencies\n\n- `pdfjs-dist`: PDF rendering and annotation import (frontend only)\n- `pdf-lib`: Client-side PDF modification — creates proper PDF annotation dictionaries for export\n- `@modelcontextprotocol/ext-apps`: MCP Apps SDK\n","readmeFilename":"README.md"}