{"_id":"bookstack-mcp","_rev":"20-584030bf7d2b161364dfdbdb86949813","name":"bookstack-mcp","dist-tags":{"latest":"5.7.1"},"versions":{"2.1.0":{"name":"bookstack-mcp","version":"2.1.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@2.1.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"5f53c743b554ddbcea02451c0c96356b7bdd9dc8","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-2.1.0.tgz","fileCount":5,"integrity":"sha512-Hnu/zIvF/tVLwiBegZHLuvY1xKXNWPeAU9e/doUPwkJSpmjbjmGKPRliHnaz6Y5jbrfsbrONebFaicGp469sjg==","signatures":[{"sig":"MEQCIFIpmF/5he72vtxnrngeau4tjD7l0MGr0nfmDNFl/JmAAiBTjwT2OMssrpqYbegFZ0pMcA8HQSY9D00BWjSjgozWHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53455},"type":"module","engines":{"node":">=18"},"gitHead":"f2c84fdbd583aa82e65ddcb7d35bc1658fb602ca","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"ttpears","email":"ttpears@gmail.com"},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_2.1.0_1773459229598_0.6296439656317134","host":"s3://npm-registry-packages-npm-production"}},"2.1.1":{"name":"bookstack-mcp","version":"2.1.1","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@2.1.1","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"939e9c9fba42fc68ee7bd8cafa27989feccf3525","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-2.1.1.tgz","fileCount":5,"integrity":"sha512-Fm/vP12JCovC5J0DlqIQCz2Am/pjj1Yz8yx98VgewiZvH/haLm7VUMx+wvM3lGzvMYMsx+Y4qNV0gdOldQiszA==","signatures":[{"sig":"MEUCIG5x1gA88/2v9FEeUzbRQb+qnjsWPOzxhbW9RjiMLh2EAiEA3E/ZtbP0q4jsNYw0PkMo1H1neaFv/2cOF0CCfM1mFfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53394},"type":"module","engines":{"node":">=18"},"gitHead":"e6f3f0a20d615fe8afbe1f6fddfb7a47763ebaa2","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"ttpears","email":"ttpears@gmail.com"},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"25.7.0","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_2.1.1_1773459872885_0.4566951224957898","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"bookstack-mcp","version":"3.1.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.1.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"58c6650475ca763a9e4dc2695f7aca763bd945a6","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.1.0.tgz","fileCount":5,"integrity":"sha512-n7I5VGVtHA7TqVcGo9UbYniqYdwNMYYe5ZFbNqSDgHHwNmHhVQn3CxXr6DoHLZqKnfNqgX0aj+TpsUW6uTJfCw==","signatures":[{"sig":"MEYCIQDF0KCXqxBkVtE8cI0NNDEO8PIcMBUT6sialeFh172iGQIhAKbv7OfYZoGxaV8prfPe3cjXSPizh/NI6hJOiljyH39B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75039},"type":"module","engines":{"node":">=18"},"gitHead":"326d12ab714700eb697bc07350cf094e9491088b","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.1.0_1777345216686_0.774206056702091","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"bookstack-mcp","version":"3.2.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.2.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"c12b059d77438bc9f39e5ce88c5796a93fd3e964","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.2.0.tgz","fileCount":5,"integrity":"sha512-n6JJUhEYeZJZS5aPjGVlhkBcGD7tRGgyKlOkPwWfCjOkjN7hTWG2JDvc26BYZFCrzFs5jah5Fpke7dKcKXEf2Q==","signatures":[{"sig":"MEQCIFAaPNjhSPsi2FvYWlPWq2LZYLCPCl+y7v2ZcIuLZsDuAiA0L0xT/GKVHa7guC+hJ1NDMRQp6Ny69WcUBSorev1org==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86005},"type":"module","engines":{"node":">=18"},"gitHead":"7e0ad729626499074ed9f88eb6d7757078607e16","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.2.0_1777346114412_0.17217843729032856","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"bookstack-mcp","version":"3.3.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.3.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"38fb445986e8283f7daa521400ec8bd4ba2763c3","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.3.0.tgz","fileCount":5,"integrity":"sha512-VjapDqAEyibcIeTD87tQemgzQ4pXThTgf9H6Wk+lz4dIV96SnO0HWi5nC0YB88GYIvYeBFhEWx1FiPkrrFjIyQ==","signatures":[{"sig":"MEQCIAGOrQpl1OcEBRAqK6SU4F1CFj3Iyihi6jjlIaKi1gkZAiB/oVUsyodJYh0StuiUfkp37TKXUIWu2fwbKTpTlObsYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":86952},"type":"module","engines":{"node":">=18"},"gitHead":"b612aeb8a9534d9dec893a430071acd22fb89f38","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.3.0_1777348651073_0.27216458089896056","host":"s3://npm-registry-packages-npm-production"}},"3.3.1":{"name":"bookstack-mcp","version":"3.3.1","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.3.1","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"6caf4303d618f1d3ba577febad03758ad16efaba","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.3.1.tgz","fileCount":5,"integrity":"sha512-J35NIrPKzDnq/2ZHvEyLoJMY8DRxeUSK8IBOowEr1kTV6jj2X1Qfrn/piODrJzeThnavgbhES/qvet0Dye1rRw==","signatures":[{"sig":"MEUCIQDWA4+Q2OipJ9L7E3WH9+eHN2nda+qfDn5B2RWl9XfCdwIgIvh+5YjuOYHwRyidFUokQV2bEV0IgMdIz5/MMLYZh4k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89111},"type":"module","engines":{"node":">=18"},"gitHead":"884eebee4e95cd898f0e93217302849badeeda7a","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.3.1_1777350217421_0.694287893016345","host":"s3://npm-registry-packages-npm-production"}},"3.3.2":{"name":"bookstack-mcp","version":"3.3.2","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.3.2","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"550e42b5f5deb714be6f8607b2f97d35fe3f24bd","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.3.2.tgz","fileCount":5,"integrity":"sha512-ikWpjtvByLB8DW/pQZ7qg5X2plgp4h7de3Ni8G0Rdg7+aduJmyDxRYN8E9I/LD/iLEpTJFiDMMbnx54Qi8tVqg==","signatures":[{"sig":"MEUCIQDSAAF6FBJwwVLiOikFtMFzKX/NCSKqgHjp0rkYVTLwyAIgY+T932uEF1EvHqi/NdpAam5gaohceYkcWvkqrfu1O8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90287},"type":"module","engines":{"node":">=18"},"gitHead":"119b2a9dfb181e274a21d8936633624e1c32096d","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.3.2_1777350894214_0.5501604656012995","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"bookstack-mcp","version":"3.4.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.4.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"36be46e33177e3cd3b882bf5b6aa7be606c9d19c","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.4.0.tgz","fileCount":5,"integrity":"sha512-2ZQ/24OuL5mTHOVmmpmbcE8Li+AYvv9MgOZaVkxqh0UHi1qs5US+rTWq7rUh+JH5IkG1Y0amViTCwp17i333WQ==","signatures":[{"sig":"MEUCIB0uBpNU0NhkYFo5hqMldAhsC7BVvgHFwDNb1yLKnHLaAiEAko6ma9av97cst7EFUBdA+8znOH6G3ivc6WdoNT//PR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":90287},"type":"module","engines":{"node":">=18"},"gitHead":"4903a0b2537fb619ab8819bed220bd640bb95569","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.14.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.4.0_1778772552536_0.26089660242119295","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"bookstack-mcp","version":"3.5.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@3.5.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"aa9df93f246080363492266ab069ed4eb39484a4","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-3.5.0.tgz","fileCount":5,"integrity":"sha512-+bMy9oCuUrU2hMS1GDBo0YnqXdz31hZN2KNsoJDNM0qJQwBBc2laaAE0RoJqVrYPwdl7L1HSgQNRCtoBzDBiBg==","signatures":[{"sig":"MEQCIB1KRQrM5exoWokIZdv1DKJf1Lheym/asesGERKDwD8eAiAlacPO1+PnIo7EDnJn49ZW14QCcN0c1RoWx1mJYeSf6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@3.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94456},"type":"module","engines":{"node":">=18"},"gitHead":"1754df6328cb942fd0eea780b18a042ae9538c16","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.14.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_3.5.0_1778774357407_0.2733068957939213","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"bookstack-mcp","version":"4.0.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@4.0.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"bff4ed059fd157255a9f74f01a5d47d222673147","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-4.0.0.tgz","fileCount":5,"integrity":"sha512-KQYc4ACbK+j8lkkLpbfFfnGR4aq20O11oPyJveE3FIoftYQTnLjiDrpQ19YMSNr3NBQ5UIcgjK/4i1Ui1lEQ0g==","signatures":[{"sig":"MEYCIQDNyQ1QZi8mX0EPqB0ukmm8yvnocQCJEMGik0FeASRp1gIhALHkNxH3ELXl/GDiTZ5g/fShHx4pFeeBVQmeF3JXbHl7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@4.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":80397},"type":"module","engines":{"node":">=18"},"gitHead":"cd1d444158a9ab73d84150e37fb6ab36c432f773","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.15.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","axios":"^1.6.0","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_4.0.0_1779556697367_0.9433280218106996","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"bookstack-mcp","version":"5.1.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.1.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"05c07c7d3d52c1ceab3b679b2899f2e25e0464ea","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.1.0.tgz","fileCount":8,"integrity":"sha512-y0M98gcOLBBf4p1d+Gel+GaRoCFDyo6HRpIe7WNZlEGE9y/pOnBgWZiT5JLTiQewxrsZLauOSmjDqicaRU9lDA==","signatures":[{"sig":"MEYCIQDThE8K6+3mg9/lHsbqCzpaAr61qnPM/JbC4yxuex9SOwIhALQjTLIv4+AsXFma4S+dwTS/mSyvJy45A2ySuEqMoDbQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":106735},"type":"module","engines":{"node":">=18"},"gitHead":"f9a5c8abf0a4b405adfedadd13efd88ce4bf804c","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"20.20.2","dependencies":{"zod":"^3.25.76","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.1.0_1782708077262_0.491617244607665","host":"s3://npm-registry-packages-npm-production"}},"5.2.3":{"name":"bookstack-mcp","version":"5.2.3","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.2.3","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"5761f0252799e56c3253182114ffa2fc2545e1a5","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.2.3.tgz","fileCount":8,"integrity":"sha512-TqcKj79W/AeyZRrHM6XqN1BZowPWJu81UeAmJOXTFrCSdDqbnTiHy+zKTJPyNGvrZHPUDvMsSn8+WGB7KmIy7Q==","signatures":[{"sig":"MEUCIQDW1ZD5wTnD7dDNFV5JkKQKUE+ACrdebC6I9y5PQ0ev7AIgGDhlMsqtkbiGLKdHyN8rjsbd0jnb9JrqijFwKFDvECE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":112696},"type":"module","engines":{"node":">=18"},"gitHead":"5d7a64462ecedaad4537bfeb028725d2d4e24d88","scripts":{"dev":"tsx src/index.ts","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.2.3_1784691364750_0.4041590665731738","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"bookstack-mcp","version":"5.3.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.3.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"95837e2d252d6433b0edd6ae64a4107305e949c4","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.3.0.tgz","fileCount":9,"integrity":"sha512-nFMzUN0fqm2SCkOWh25OI69yfJGOkHOHfMKgkvHhhsdpCtd11a9hEIQ9JMDQ8bzf7VODPG6Kpm1AejlMa2wvTg==","signatures":[{"sig":"MEUCIDXsasQmin+kweAOMDSCQsd8oCMwOKJ68HBc+CbQ1737AiEA7kzdrMSOy+biFEPCUOLwsywsI/dX39mlw4Jv7/KeUFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":115341},"type":"module","engines":{"node":">=18"},"gitHead":"c44793a33de37001c12d64172eeb8ba03348452a","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.0.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.1","dependencies":{"zod":"^3.25.76","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.3.0_1784698020009_0.29033149038038086","host":"s3://npm-registry-packages-npm-production"}},"5.4.0":{"name":"bookstack-mcp","version":"5.4.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.4.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"28fc21969420a0a3e1c7ecb19d621e69947f4575","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.4.0.tgz","fileCount":11,"integrity":"sha512-H+XQ9Xd31A0yX/gLiOQkU1OzaChhJJjVN+ZvN7m2mRUXG270E/fKIP10vcnHsk97rGW2ZYZGW1RemyebQ4M3tw==","signatures":[{"sig":"MEYCIQDoIISYWo87m8Cm7ZPZUkOSOxH3im0RvMwmjUCIB3PwxwIhAJapi6YOgQQAfAk3NlzB4kqsu80BXlcVlyoqWupSBtVU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":124580},"type":"module","engines":{"node":">=18"},"gitHead":"90763d17ee9ffe9aa814cae5292f15e344aa8a71","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.4.0_1788495582261_0.3698886269653592","host":"s3://npm-registry-packages-npm-production"}},"5.4.1":{"name":"bookstack-mcp","version":"5.4.1","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.4.1","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"799dcc11c01df89299d2363328a59acf188a8472","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.4.1.tgz","fileCount":11,"integrity":"sha512-i8gvFhOK7iW50L1/VKiZdKJo+NfG0AbZ8fuX4W5TCCQ2XppBXFeDBU/Ni4L+erSyo3z06NNh1addFr38eXODDg==","signatures":[{"sig":"MEUCIBC85kXcfTNO8a6V6BAEzEYwSxGsPymn4zsWEqLJSNOTAiEAoFEWK1Rrft+0n2bnMdyN1bSw33SIjrdZdLsBV2NpGnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAHzwFv04DHHN07BEVrhwlDhMpry2PhkF+nIztofE9LrAiEAlWhZTWy6wo3t05OM8cqJ3VFB7SioiZpz8F9DnkLnuLU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127089},"type":"module","engines":{"node":">=18"},"gitHead":"4b39975477addbdbef01d67497af14a50774370e","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^3.25.76","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^5.3.0","@types/node":"^20.10.0"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.4.1_1789322372081_0.6401547118980226","host":"s3://npm-registry-packages-npm-production"}},"5.5.0":{"name":"bookstack-mcp","version":"5.5.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.5.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"70818dd6cad851cf8d8c8569f274418dac0af598","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.5.0.tgz","fileCount":16,"integrity":"sha512-Rdzh5tITpoyOxcU8OYUfcfSiJGX+YIuCjJeL7Jieyib1UrP0LEVmPATAe8QRK93NK9VsEbzIcHecMwAcbpXQOQ==","signatures":[{"sig":"MEQCIAG+o7JOqXhKTAixT3o7O1iwAlcnfXtlvzmbx0m63+weAiAHPFlbtfz99cTXODtitJEB6OTATzvuAfS9193KYAEV9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA69nIDvh7Cs95Juzjytn9VAMQgC2TFUUagIZVJe88YEAiBH4CtDawBAl25ar9J+ANzaN4eOPirqgBMrXoiuHbnfDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157491},"type":"module","engines":{"node":">=18"},"gitHead":"97102d3318146f9590fcae02c7c6611f14c3da0a","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.6.5","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.5.0_1791588240582_0.24426629836396652","host":"s3://npm-registry-packages-npm-production"}},"5.6.0":{"name":"bookstack-mcp","version":"5.6.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.6.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"372b9ff7770d3eaba6d3ffa36e7a5e835ea0d2eb","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.6.0.tgz","fileCount":16,"integrity":"sha512-SWtL0Tv6m0gMdEZhy+1OKzq1fKsgHjlKow3N/mkzz5J7VkirDlN5EmJdL+G+W8XEIDeA7pvBQk1YjrFLIyuTPw==","signatures":[{"sig":"MEUCIQDELdrFws1Xy4Co6BlBihU51NvgrTiqPGEYxCx8+k7KMAIgEl18bXbaErPm7DmtXXk76IIPJj97TRc1ZiadNF0IOn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBsdS/NL9GbRt/vR06E70hiVcOLJspk4Ry58LVweZKi6AiEAidCsOukA7BCrWOIXUKzYu0cgFvxKF9vtiU8+HEqnoqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":158990},"type":"module","engines":{"node":">=18"},"gitHead":"21a07cb3c9df372f4f1d83d18b4cb59327dd3b06","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.6.5","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.6.0_1791673654780_0.4887432610948168","host":"s3://npm-registry-packages-npm-production"}},"5.6.1":{"name":"bookstack-mcp","version":"5.6.1","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.6.1","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"dd648ecaf89ea8f08b24f2eec3bc4db3a1ecd621","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.6.1.tgz","fileCount":17,"integrity":"sha512-MnMY1DQT1O0xOVfVE85eSoiISU5GKnPp+Zgngk2DZ2UMIsP0lqtk9wv1vhj3WIED8HPfegowoF+YpAh37YQHvw==","signatures":[{"sig":"MEUCIQD1e1SoCsR4n7A3aoT3m202W6jhoHy5GLqtIv114uc1uwIgd3LYUA52I8piiQXLEmmTXRfjYP+KLJO6KMNe3J/nP3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHyLlX2+cllyWSPVnszSekl1LMS5Ugduo7mF/CuWm4JzAiBF5t29HPSBO6DCj5o+xgLosXb7EZQwuNOVUoGR2ipVWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":161740},"type":"module","engines":{"node":">=18"},"gitHead":"8ce2acbbe6d65b8a4ae259d2686312c5dca83005","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.2.0","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.3","dependencies":{"zod":"^4.6.5","jose":"^6.2.3","axios":"^1.6.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.25.3"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.6.1_1792465424013_0.9608698818308246","host":"s3://npm-registry-packages-npm-production"}},"5.7.0":{"name":"bookstack-mcp","version":"5.7.0","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"author":{"name":"ttpears"},"license":"MIT","_id":"bookstack-mcp@5.7.0","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"homepage":"https://github.com/ttpears/bookstack-mcp#readme","bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"bin":{"bookstack-mcp":"dist/index.js"},"dist":{"shasum":"baf99fb24f463a88565b9b2d64651d39d656baaa","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.7.0.tgz","fileCount":17,"integrity":"sha512-vPpWbLMJDH2yzFMnoEB3s0RhoPxQSFuXXrWpUuTmCe8UamFXSWKvotJUGH5PLzcv0qp/YegtBhGwHMMQmPLRTQ==","signatures":[{"sig":"MEUCIFtiYkbrRdPbD4z/8rvM/PANYQu6BNZHoQbmZjDZCblyAiEAn2m5mlQgU94Xu7faesLFW9inDthfdWc+xgXk03idh9I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGXfzEKSWj01tVfKho8025xcZIQHyvvuTvNuHuWrhuC6AiA29bN+BK+bsnEkGzRe9yUlBXEbXqYwOIZzXWt9N4xzwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":163417},"type":"module","engines":{"node":">=18"},"gitHead":"005f957a8bd67c91bd18c716513c801a08f7b0c0","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"87189470-f7e8-43ba-9148-6af3f3359e74"}},"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.2.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"_nodeVersion":"22.23.4","dependencies":{"zod":"^4.6.5","jose":"^6.2.14","axios":"^1.21.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"tmp":"tmp/bookstack-mcp_5.7.0_1793422757827_0.4284296224555041","host":"s3://npm-registry-packages-npm-production"}},"5.7.1":{"_id":"bookstack-mcp@5.7.1","bin":{"bookstack-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"dist":{"shasum":"0d2268102c039f66de1828854724c2162da48e76","tarball":"https://registry.npmjs.org/bookstack-mcp/-/bookstack-mcp-5.7.1.tgz","fileCount":18,"integrity":"sha512-x1j8SehtuZu/KF32W469trnu5Vj2JHphcIDlzZ5I2Ym+44AjcwZNybEJnTgTVS3xLy2a0QkeAcHZRMT6LtYs4g==","signatures":[{"sig":"MEUCIQClXvDYOG33RURGrt1Ohv4euSJHTpXGYgIWwKlB3TAlGQIgaJ3QTgrOfGGNz3tGu+fAxiceI/pi2MjeWrWh6pcv7UM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICEY4OZM1eYAgGBkw71KiPW/yenLjtf8C0KSXc+EX6rbAiEA4jwqImSVLuXfPAaZYUJg4JRJQ/xqLYOPzgHzGLFY1s4="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/bookstack-mcp@5.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":168533},"name":"bookstack-mcp","type":"module","author":{"name":"ttpears"},"engines":{"node":">=18"},"gitHead":"2c57a03c299d2482209e8578c18609fa76cb80f8","license":"MIT","scripts":{"dev":"tsx src/index.ts","test":"node --import tsx --test 'src/**/*.test.ts'","build":"tsc && shx chmod +x dist/*.js","start":"node dist/index.js","prepare":"npm run build","type-check":"tsc --noEmit"},"version":"5.7.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"87189470-f7e8-43ba-9148-6af3f3359e74"}},"homepage":"https://github.com/ttpears/bookstack-mcp#readme","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"_npmVersion":"12.2.1","description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","directories":{},"maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"_nodeVersion":"22.23.4","dependencies":{"zod":"^4.6.5","jose":"^6.2.14","axios":"^1.21.0","ioredis":"^5.11.1","@modelcontextprotocol/sdk":"^1.32.2"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.4.0","tsx":"^4.6.0","typescript":"^7.0.2","@types/node":"^26.6.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/bookstack-mcp_5.7.1_1793425476174_0.8913407048118499"}}},"time":{"created":"2026-03-14T03:33:49.597Z","modified":"2026-10-31T05:44:36.534Z","2.1.0":"2026-03-14T03:33:49.732Z","2.1.1":"2026-03-14T03:44:33.044Z","3.1.0":"2026-04-28T03:00:16.817Z","3.2.0":"2026-04-28T03:15:14.601Z","3.3.0":"2026-04-28T03:57:31.233Z","3.3.1":"2026-04-28T04:23:37.588Z","3.3.2":"2026-04-28T04:34:54.365Z","3.4.0":"2026-05-14T15:29:12.689Z","3.5.0":"2026-05-14T15:59:17.564Z","4.0.0":"2026-05-23T17:18:17.522Z","5.1.0":"2026-06-29T04:41:17.399Z","5.2.3":"2026-07-22T03:36:04.927Z","5.3.0":"2026-07-22T05:27:00.124Z","5.4.0":"2026-09-04T04:19:42.406Z","5.4.1":"2026-09-13T17:59:32.184Z","5.5.0":"2026-10-09T23:24:00.711Z","5.6.0":"2026-10-10T23:07:34.852Z","5.6.1":"2026-10-20T03:03:44.102Z","5.7.0":"2026-10-31T04:59:17.910Z","5.7.1":"2026-10-31T05:44:36.262Z"},"bugs":{"url":"https://github.com/ttpears/bookstack-mcp/issues"},"author":{"name":"ttpears"},"license":"MIT","homepage":"https://github.com/ttpears/bookstack-mcp#readme","keywords":["mcp","bookstack","model-context-protocol","ai","wiki","documentation","claude","librechat"],"repository":{"url":"git+https://github.com/ttpears/bookstack-mcp.git","type":"git"},"description":"MCP server for BookStack wiki — search, read, create, and manage documentation via AI assistants","maintainers":[{"name":"ttpears","email":"ttpears@gmail.com"}],"readme":"# BookStack MCP Server\n\n[![npm version](https://img.shields.io/npm/v/bookstack-mcp)](https://www.npmjs.com/package/bookstack-mcp)\n[![npm downloads](https://img.shields.io/npm/dm/bookstack-mcp)](https://www.npmjs.com/package/bookstack-mcp)\n[![CI](https://github.com/ttpears/bookstack-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/ttpears/bookstack-mcp/actions/workflows/ci.yml)\n[![HOL trust score](https://img.shields.io/endpoint?url=https%3A%2F%2Fhol.org%2Fapi%2Fregistry%2Fbadges%2Fplugin%3Fslug%3Dttpears%252Fbookstack-mcp%26metric%3Dtrust%26style%3Dflat)](https://hol.org/registry/plugins/ttpears%2Fbookstack-mcp)\n[![Node.js](https://img.shields.io/node/v/bookstack-mcp)](https://nodejs.org)\n[![MCP](https://img.shields.io/badge/MCP-compatible-7DC9D6)](https://modelcontextprotocol.io)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n<img src=\"assets/logo.svg\" width=\"96\" align=\"right\" alt=\"bookstack-mcp\"/>\n\nA [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server that gives AI assistants full access to your [BookStack](https://www.bookstackapp.com) documentation — search, read, create, and manage content.\n\n```bash\nnpx bookstack-mcp\n```\n\nRead the [privacy policy](./PRIVACY.md) for data flows, credentials, optional\nOAuth/Redis state, and logging. Your MCP client and deployment operator may have\nadditional policies. The [terms of use](./TERMS.md) explain the scope of the\nsoftware under its [MIT license](./LICENSE).\n\nField notes: [Why my BookStack MCP server starts read-only](https://hackyourworld.com/bookstack-mcp-server-read-only-by-default/) covers the shared-token rate-limit failure, process-wide cache, response-size measurements, and permission boundaries that shaped the current design.\n\n## Features\n\n- 21 read-only tools + 22 write tools for BookStack API access\n- Books, chapters, pages, shelves, attachments, and comments — full CRUD\n- Recycle bin support — restore or permanently delete soft-deleted content\n- Type-safe input validation with Zod (auto-coerces string/number params for broad client compatibility)\n- Embedded URLs and content previews in all responses\n- Markdown export fallback for HTML-authored pages, so AI clients always get usable content\n- Token-efficient responses: compact JSON, no redundant fields, no N+1 fetches — ~30–55% smaller payloads than 3.x\n- Write operations disabled by default for safety\n- Works with Claude Desktop, Claude Code, LibreChat, and any MCP-compatible client\n- Stdio and Streamable HTTP transports\n\n## Quick Start\n\n### Install from npm\n\n```bash\nnpx bookstack-mcp\n```\n\n### Or clone and build\n\n```bash\ngit clone https://github.com/ttpears/bookstack-mcp.git\ncd bookstack-mcp\nnpm install && npm run build\nnpm start\n```\n\n### Environment Variables\n\n```env\nBOOKSTACK_BASE_URL=https://your-bookstack.com   # Required\nBOOKSTACK_TOKEN_ID=your-token-id                # Required\nBOOKSTACK_TOKEN_SECRET=your-token-secret        # Required\nBOOKSTACK_ENABLE_WRITE=false                    # Optional, default false\nBOOKSTACK_INSECURE_SKIP_TLS_VERIFY=false        # Optional, default false\nBOOKSTACK_TIMEOUT_MS=30000                     # Optional, timeout per HTTP attempt\nBOOKSTACK_RETRY_TIMEOUT_MS=60000               # Optional, total budget per API request\n```\n\nEach API request has a total budget covering concurrency queue time, HTTP attempts,\nand rate-limit backoff. HTTP 429 responses are retried up to five times, with each\ndelay capped at 30 seconds. If a delay cannot fit in the remaining budget or retries\nare exhausted, the tool returns an explicit BookStack rate-limit error. The budget\napplies to each API request; tools that fetch multiple endpoints can take longer.\n\nWith write operations enabled, `update_page` and `update_chapter` accept `priority`\nas a non-negative integer (including numeric strings). Lower values sort first;\nuse these tools to order pages and chapters within a book.\n\n`create_page` and `update_page` also accept an optional `changelog` message\n(1–180 characters), saved as the revision summary in the page's history. It\nneeds BookStack v26.09 or newer; older versions silently ignore it.\n\n`create_page`, `update_page`, `create_book`, and `update_book` accept `tags`\nas an array of `{ \"name\": \"Environment\", \"value\": \"Production\" }` objects.\nUse `\"value\": \"\"` for a tag with no value. Chapter and shelf create/update\ntools also support tags.\n\nOn updates, `tags` replaces the entire tag list: omit it to leave tags unchanged,\nor pass `[]` to remove all tags. To add, edit, or remove individual tags, first\nread the entity with `get_page` or `get_book`, then send the revised list,\nincluding every tag you want to keep. For example:\n\n```json\n{\"id\": 42, \"tags\": [{\"name\": \"Environment\", \"value\": \"Production\"}, {\"name\": \"Reviewed\", \"value\": \"\"}]}\n```\n\nPass this to `update_page` or `update_book`. A tag-only update needs no page\ncontent and preserves the editor source. Tag writes require\n`BOOKSTACK_ENABLE_WRITE=true` and the corresponding BookStack edit permission.\n\n`get_page` accepts `format: \"raw\"` to return the page's stored editor HTML\n(BookStack's `raw_html`). The `html` format is the rendered view readers see:\npage includes are resolved and the content filter has run, so attributes such as\n`rel`, `data-*` or legacy `width`/`align` may be gone.\n\nWhen you edit a page, match the format to the page's `editor` field:\n\n- **HTML (WYSIWYG) pages:** read `format: \"raw\"` and send the result back as\n  `update_page.html`. Starting from `html` saves the rendered output and drops\n  whatever rendering removed.\n- **Markdown pages:** read `format: \"markdown\"` and send the result back as\n  `update_page.markdown`. For these pages `raw_html` is HTML generated from the\n  Markdown, and saving any `html` clears the stored Markdown source.\n\n> **Security warning:** `BOOKSTACK_INSECURE_SKIP_TLS_VERIFY=true` disables TLS certificate verification for outgoing requests to BookStack. Use only for self-signed certs on a trusted LAN — connections become vulnerable to MITM attacks. The server logs a `WARNING` line at startup whenever this is enabled.\n\n## Client Configuration\n\n### Codex plugin\n\nThis repository includes a native Codex manifest at\n`.codex-plugin/plugin.json`, which references the stdio server in `.mcp.json`.\nSet `BOOKSTACK_BASE_URL`, `BOOKSTACK_TOKEN_ID`, and `BOOKSTACK_TOKEN_SECRET` in\nthe environment that launches Codex before enabling the plugin. Write operations\nremain disabled unless `BOOKSTACK_ENABLE_WRITE=true` is set.\n\nThe manifest supplies the project website, privacy policy, and terms of use for\nplugin directories, including HOL. The HOL Guard CI workflow scans this manifest\nalongside the Claude and Gemini manifests. After a passing scan on `main`, a\nseparate job sends an authenticated score summary to HOL so the registry can\nshow the result checked in CI. PR scans remain read-only. See\n[HOL registry setup](docs/HOL.md) for ownership verification and reporting details.\n\n### Claude Desktop\n\nThe easiest install is the prebuilt MCPB bundle attached to each [GitHub release](https://github.com/ttpears/bookstack-mcp/releases/latest):\n\n1. Download `bookstack-mcp-<version>.mcpb` from the latest release.\n2. Open Claude Desktop → **Settings → Extensions** and drag the `.mcpb` file in (or click *Install Extension*).\n3. Fill in **BookStack URL**, **API Token ID**, and **API Token Secret**. Tokens are stored in your OS keychain. Leave **Enable Write Operations** as `false` for read-only access; set to `true` to enable create/update/delete tools.\n\n#### Manual install (JSON config)\n\nIf you'd rather edit the config file directly:\n\n```json\n{\n  \"mcpServers\": {\n    \"bookstack\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"bookstack-mcp\"],\n      \"env\": {\n        \"BOOKSTACK_BASE_URL\": \"https://your-bookstack.com\",\n        \"BOOKSTACK_TOKEN_ID\": \"your-token-id\",\n        \"BOOKSTACK_TOKEN_SECRET\": \"your-token-secret\"\n      }\n    }\n  }\n}\n```\n\n### LibreChat (stdio, single-user)\n\nAdd to your `librechat.yaml`:\n\n```yaml\nmcpServers:\n  bookstack:\n    command: npx\n    args:\n      - -y\n      - bookstack-mcp\n    env:\n      BOOKSTACK_BASE_URL: \"https://your-bookstack.com\"\n      BOOKSTACK_TOKEN_ID: \"your-token-id\"\n      BOOKSTACK_TOKEN_SECRET: \"your-token-secret\"\n```\n\n### LibreChat (Streamable HTTP, recommended for production / Docker)\n\nRun the server as a long-lived HTTP service and point LibreChat at the URL. This is the right setup for multi-user or containerized deployments.\n\nStart the server in HTTP mode:\n\n```bash\nMCP_TRANSPORT=http \\\nMCP_HTTP_PORT=8080 \\\nBOOKSTACK_BASE_URL=https://your-bookstack.com \\\nBOOKSTACK_TOKEN_ID=your-token-id \\\nBOOKSTACK_TOKEN_SECRET=your-token-secret \\\nnpx bookstack-mcp\n```\n\nThen configure LibreChat:\n\n```yaml\nmcpServers:\n  bookstack:\n    type: streamable-http\n    url: http://bookstack-mcp:8080/mcp\n```\n\n#### Per-user BookStack credentials\n\nSet `BOOKSTACK_ALLOW_REQUEST_CREDENTIALS=true` on the HTTP server to accept\n`X-Bookstack-Token-Id` and `X-Bookstack-Token-Secret` on each request. Both headers\nmust be supplied together; when both are absent, the server uses its environment\ncredentials. This is opt-in and does not change the write-tool or OAuth role gates.\nUse a read-only environment token with limited visibility for the fallback.\nCredential overrides apply to each request, including reused MCP sessions, and\ntheir slug caches are private to that request. Send credentials over HTTPS or a\ntrusted internal connection and configure proxies to redact these headers.\n\n```yaml\nmcpServers:\n  bookstack:\n    type: streamable-http\n    url: http://bookstack-mcp:8080/mcp\n    headers:\n      X-Bookstack-Token-Id: \"{{BOOKSTACK_TOKEN_ID}}\"\n      X-Bookstack-Token-Secret: \"{{BOOKSTACK_TOKEN_SECRET}}\"\n    customUserVars:\n      BOOKSTACK_TOKEN_ID: { title: \"BookStack token ID\" }\n      BOOKSTACK_TOKEN_SECRET: { title: \"BookStack token secret\" }\n```\n\n#### Gallery images\n\n`list_images` lists images with optional `uploaded_to`, `offset`, `count`, and\n`sort` parameters. With write mode enabled, `create_image` accepts exactly one\nabsolute `file_path` or HTTP(S) `url`, a required existing page ID `uploaded_to`,\nand an optional `name`. It uploads the binary data directly and returns BookStack's\nhosted URL, thumbnails, and `content.html` / `content.markdown` snippets. PNG,\nJPEG, GIF, WebP, and SVG sources up to 50 MB are supported; BookStack may impose\nsmaller limits. `delete_image` deletes an image and its thumbnails by `id`.\n\nIn stdio mode, files and HTTP(S) URLs are available to the trusted local client.\nIn HTTP mode, local files are disabled unless\n`BOOKSTACK_ALLOW_LOCAL_IMAGE_FILES=true`. URL sources require a comma-separated\n`BOOKSTACK_IMAGE_ALLOWED_HOSTS` hostname allowlist, which also applies to every\nredirect. For example, allow your image service with\n`BOOKSTACK_IMAGE_ALLOWED_HOSTS=images.example.com`. Source downloads never use\nthe BookStack authorization token. Deleting an image can break existing page references.\n\n> **3.0.0 breaking change:** the deprecated HTTP+SSE transport (`GET /sse` + `POST /messages`) has been removed. Streamable HTTP at `/mcp` already speaks SSE for streaming responses, and is the only HTTP transport in current MCP clients. If you're on an older client that needs the legacy endpoints, pin to `bookstack-mcp@2.x`.\n\n#### HTTP transport environment variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `MCP_TRANSPORT` | `stdio` | Set to `http` to enable the HTTP server |\n| `MCP_HTTP_PORT` | `8080` | Port to listen on |\n| `MCP_HTTP_HOST` | `127.0.0.1` | Bind address. Loopback by default for safety |\n| `MCP_HTTP_ALLOWED_HOSTS` | *(loopback only)* | Comma-separated allowlist of `Host` header hostnames for DNS rebinding protection. Required when binding to a non-loopback address |\n| `MCP_HTTP_PATH` | `/mcp` | Streamable HTTP endpoint |\n| `MCP_HTTP_MAX_BODY_BYTES` | `10485760` (10 MiB) | Maximum MCP JSON request size in bytes; positive integer |\n\nOAuth registration and token request bodies are limited to 64 KiB. Body reads\nmust complete within 30 seconds. Oversized bodies return HTTP 413, slow bodies\nreturn 408, and malformed MCP JSON returns 400 without echoing its contents.\n\nOAuth sessions are bound to both the user's identity and current write role.\nIf that role changes, the server closes the old session and returns 404 so the\nclient reinitializes with the appropriate credential and tool set. OAuth pending\nstates and authorization codes are consumed atomically, including with Redis.\n\nWhen binding to `0.0.0.0` (e.g. inside a container reachable from other services), set `MCP_HTTP_ALLOWED_HOSTS` to the hostnames LibreChat will use to reach this server, e.g. `MCP_HTTP_ALLOWED_HOSTS=bookstack-mcp,bookstack-mcp.internal`.\n\nRestart LibreChat after config changes.\n\n### Remote hosting & Claude Connector (Docker + Entra OAuth)\n\nA container image is published to `ghcr.io/ttpears/bookstack-mcp` (released `:X.Y.Z`/`:latest`,\nplus per-PR preview tags `:branch-<slug>`). The server can run as a public **Claude Connector**\ngated by Microsoft 365 / Entra ID login — users sign in, no API key or client credential to\npaste; write tools are unlocked per session by an Entra app role.\n\nSee **[docs/SETUP.md](docs/SETUP.md)** for the full runbook: Entra app registration steps,\nthe environment-variable reference, internal LibreChat deployment, and the public OAuth\nconnector setup.\n\n### Claude Code (CLI)\n\nThe recommended path is the `ttpears/claude-plugins` marketplace, which ships this repo's plugin manifest (`.claude-plugin/plugin.json`):\n\n```\n/plugin marketplace add ttpears/claude-plugins\n/plugin install bookstack-mcp@ttpears-plugins\n```\n\nThen set the `BOOKSTACK_*` environment variables in your shell so the plugin's MCP server can authenticate:\n\n```bash\nexport BOOKSTACK_BASE_URL=https://your-bookstack.com\nexport BOOKSTACK_TOKEN_ID=your-token-id\nexport BOOKSTACK_TOKEN_SECRET=your-token-secret\n```\n\n#### Manual install (alternative)\n\nIf you'd rather not use the marketplace, register the server directly with `claude mcp add`. Repeat `--env` for each variable, put all flags **before** the server name, and use `--` to mark the start of the command Claude Code will spawn:\n\n```bash\nclaude mcp add bookstack \\\n  --transport stdio \\\n  --scope user \\\n  --env BOOKSTACK_BASE_URL=https://your-bookstack.com \\\n  --env BOOKSTACK_TOKEN_ID=your-token-id \\\n  --env BOOKSTACK_TOKEN_SECRET=your-token-secret \\\n  -- npx -y bookstack-mcp\n```\n\nScope picks where the entry is written:\n\n| Scope | Where it lives | Shared via git | Use it when |\n|-------|----------------|----------------|-------------|\n| `local` (default) | `~/.claude.json`, scoped to the current project | No | Trying it out in one repo |\n| `user` | `~/.claude.json`, available in every project | No | You want bookstack everywhere |\n| `project` | `.mcp.json` at the repo root | Yes | The whole team should get it |\n\nThe resulting config entry looks like this (in `.mcp.json` for project scope, or `~/.claude.json` otherwise):\n\n```json\n{\n  \"mcpServers\": {\n    \"bookstack\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"bookstack-mcp\"],\n      \"env\": {\n        \"BOOKSTACK_BASE_URL\": \"https://your-bookstack.com\",\n        \"BOOKSTACK_TOKEN_ID\": \"your-token-id\",\n        \"BOOKSTACK_TOKEN_SECRET\": \"your-token-secret\"\n      }\n    }\n  }\n}\n```\n\n> **Tip for committed `.mcp.json`:** Claude Code expands `${VAR}` and `${VAR:-default}` references in `.mcp.json` from the surrounding shell. Use that to keep secrets out of git: set `\"BOOKSTACK_TOKEN_SECRET\": \"${BOOKSTACK_TOKEN_SECRET}\"` in the file and have each developer export the variable in their shell.\n\n## MCP Resources\n\nBooks and pages are also exposed as MCP resources, so clients that browse resources (Claude Desktop, MCP Inspector, etc.) can `@`-mention them directly:\n\n| URI template | Description |\n|--------------|-------------|\n| `bookstack://book/{id}` | A book, returned as JSON metadata |\n| `bookstack://page/{id}` | A page, returned as markdown plus a JSON metadata blob |\n\nBoth templates support `id` autocompletion: as you type, the server searches BookStack and returns matching IDs so you don't have to remember numeric IDs by hand.\n\n> **4.0.0 breaking changes:** tool responses were trimmed for token efficiency. Removed fields: `direct_link`, `*_friendly` date strings, `content_info`, `contextual_info`, `change_summary`, `pagination_hint`, `location`, `summary`/`tags_summary`/`book_count` on shelves, and the buggy `page_url` on attachments. Use `url`, the ISO date fields, and `download_url` instead. The `get_capabilities` tool was removed — clients should use `tools/list` (built into MCP). Responses are now compact JSON (no pretty-printing) and `get_recent_changes` no longer issues per-result fetches.\n\n## Available Tools\n\n### Read Operations (always available)\n\n| Tool | Description |\n|------|-------------|\n| `search_content` | Search across all content with filtering |\n| `search_pages` | Search pages with optional book filtering |\n| `get_books` / `get_book` | List or get details of books |\n| `get_pages` / `get_page` | List or get full page content |\n| `get_chapters` / `get_chapter` | List or get chapter details |\n| `get_shelves` / `get_shelf` | List or get shelf details |\n| `get_attachments` / `get_attachment` | List or get attachment details |\n| `list_images` | List gallery images, optionally filtered by page |\n| `get_comments` / `get_comment` | List or get page comments (BookStack v25.11+) |\n| `find_users` | Look up BookStack users by name, email, or slug to resolve user slugs for `{created_by:X}`-style search filters |\n| `get_recycle_bin` | List items in the recycle bin |\n| `export_page` | Export page as HTML, PDF, Markdown, plaintext, or ZIP |\n| `export_book` | Export entire book |\n| `export_chapter` | Export chapter |\n| `get_recent_changes` | Recently updated content |\n\n### Write Operations (requires `BOOKSTACK_ENABLE_WRITE=true`)\n\n| Tool | Description |\n|------|-------------|\n| `create_book` / `update_book` / `delete_book` | Create, update, or delete a book |\n| `create_chapter` / `update_chapter` / `delete_chapter` | Create, update (including moving to a different book or reordering), or delete a chapter |\n| `create_page` | Create a new page (HTML or Markdown) |\n| `update_page` | Update content, rename, or move to a different book/chapter |\n| `delete_page` | Delete a page (recoverable from recycle bin) |\n| `create_shelf` / `update_shelf` / `delete_shelf` | Manage shelves |\n| `create_attachment` / `update_attachment` / `delete_attachment` | Manage attachments |\n| `create_image` / `delete_image` | Upload gallery images from files or URLs, or delete images |\n| `create_comment` / `update_comment` / `delete_comment` | Manage page comments (v25.11+) |\n| `restore_deleted` / `permanently_delete` | Restore or permanently destroy items in the recycle bin |\n\n## BookStack API Setup\n\n1. Log into BookStack as an admin\n2. Go to **Settings > Users > Edit your user**\n3. Ensure the user has **Access System API** permission\n4. In the **API Tokens** section, create a new token\n5. Copy the Token ID and Token Secret\n\n> **Also grant the role “Export Content”** if you read pages written in the\n> WYSIWYG editor. BookStack returns an empty `markdown` body for those pages, and\n> `get_page` recovers it from the server-side HTML→markdown export endpoint. Without\n> the permission that fallback fails and the page reads as empty. The default Viewer\n> role does not include it.\n\n## Security\n\n- Write operations are **disabled by default**\n- Use HTTPS for production instances\n- Store API tokens securely (never commit to git)\n- Consider a dedicated BookStack user with limited permissions\n\n## Development\n\n```bash\nnpm run dev          # Hot reload with tsx\nnpm run type-check   # Type checking only\nnpm run build        # Production build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}