{"_id":"affine-mcp-server","_rev":"21-e136233e14a7d6042582cac966f79492","name":"affine-mcp-server","dist-tags":{"latest":"2.1.0"},"versions":{"1.2.0":{"name":"affine-mcp-server","version":"1.2.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.2.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"dist/index.js"},"dist":{"shasum":"a2dab91989b1216cc6ec1dc38c9ecbf6c60e4e76","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.2.0.tgz","fileCount":21,"integrity":"sha512-Ehurp01oVfSsMhQGUy21HfJXCJ9ne+YafdU4N8+ShP+Tt6fvV+JVvyFIp1OKQKLKGRzyzOkNIz4WY9pWu7XeYQ==","signatures":[{"sig":"MEQCIDVUK3aisd3hU3kPqSDyNDrxv5xJ+6bp/QQHLehHeMJSAiAS4iycflLgaDZWIwkdXAHNKsZlscdGo9wnSH/Y694iVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86373},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"b64ece1993176728c94dd4d050a92288f0c73cdb","private":false,"scripts":{"dev":"tsx watch src/index.ts","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"24.1.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","dotenv":"^16.6.1","undici":"^6.19.8","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^20.14.11"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.2.0_1758015303072_0.233332887371279","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"affine-mcp-server","version":"1.2.1","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.2.1","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"dist/index.js"},"dist":{"shasum":"c12edbf92accd75ce88ea21dff1a0773297df74b","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.2.1.tgz","fileCount":21,"integrity":"sha512-mMrBM1T5QP6yWwm+YIO4+KJ+wCI7lqIu8ucIhuT6QA/JXrjlcqSF4snVkjoSJx73Tjw0gLBZh6DHBIKDg38AvQ==","signatures":[{"sig":"MEYCIQDvPoYz4321Xo1o0M5xPe/mSkIv+Lc316j2YyQP7fSSXAIhAPFCzp1tbLz59zLTXMXqZUWz1Cu/VFEbg1Iq3uOFX0ut","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88877},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"64fafd3cd69440ea68a4ac7b118033c4b694429a","private":false,"scripts":{"dev":"tsx watch src/index.ts","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"24.1.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","dotenv":"^16.6.1","undici":"^6.19.8","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^20.14.11"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.2.1_1758093826345_0.6780095230630361","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"affine-mcp-server","version":"1.2.2","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.2.2","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"a9a333a700966ced281195ae7365e1a5c9fcf922","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.2.2.tgz","fileCount":22,"integrity":"sha512-ru7kynvI5ZQIn2tZzKcNExuoa0xJFUsliZndlgBxfN4AvF5tpqaB1lvax167G07rkqAMRov9Ep82lL/Hru+o5g==","signatures":[{"sig":"MEQCIEORqIzbot3EhY9myyL4hnCuMSmzPxR1tAD2TG6R2kjwAiAw1wvarST+gnqUN6CrguegYdiA2Imo2cDEyU1sLxq3SA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":88788},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"45ff4291c734bb9401673b4d3cc35d8f246829d2","private":false,"scripts":{"dev":"tsx watch src/index.ts","build":"tsc -p tsconfig.json","start":"node dist/index.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"24.1.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","undici":"^6.19.8","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^20.14.11"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.2.2_1758158369624_0.9795471260585551","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"affine-mcp-server","version":"1.3.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.3.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"e6398bfa2de685a3cfad3ce306f617c37567339f","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.3.0.tgz","fileCount":21,"integrity":"sha512-jLd/SLnZirfebHAc9o9HDmLBwh3bcoNwRYz+smTPQ6Z7DlRH9BxJxXmvOZu8oL19y4q75SnxKUei60p42t/Hsw==","signatures":[{"sig":"MEUCID7tvCkGEvgbK4vqYeI5oGzLVr37iaTiLnJkxBjIkZ4zAiEA0RvyCfvOjx7BnpT0IeYv8rHXpNvRGFGnDnwDKl03YY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76496},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"99607d6b17b8eef31b9ed4b73c85d6adf51edaf6","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","pack:check":"npm pack --dry-run","prepublishOnly":"npm run ci","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","undici":"^6.19.8","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^20.14.11"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.3.0_1770967912837_0.24570514131700327","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"affine-mcp-server","version":"1.4.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.4.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"6d072949126ed90c77b7f1c69a812d0a5c3dbbe6","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.4.0.tgz","fileCount":21,"integrity":"sha512-X/0T/Qu081t9ZTqOWhM5CSqQ/78V7UzoVgwW/6k9/ScUImiv+TNckFeNlHgP+h2lPLr3cVzFKchxzY8x6+gsXQ==","signatures":[{"sig":"MEUCIQCpR0BzjZLtplQcf5EuCmiDM9R+Qph9o8ZjhqWDwaPsEwIgUko2jK7UpXMlpJsxRzEkuJ3jmWVf6hW6r4B9JRfPIsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":82697},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"b35a2c03e611ecad6a72f50c22bbda4259f3cfb2","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","pack:check":"npm pack --dry-run","prepublishOnly":"npm run ci","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","undici":"^7.21.0","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.4.0_1770969424335_0.7413234704180889","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"affine-mcp-server","version":"1.5.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.5.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"5783707f728109a1a718e693687fe80183a39bb8","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.5.0.tgz","fileCount":21,"integrity":"sha512-mVUAvZ361LvmIB0Hrry+QpApMtdqnIcsolyRG5QKvrT4ppMkkBCB6EBGMlrJEm5qWeYaQhRpvBZHmGRzCGoiyA==","signatures":[{"sig":"MEUCIQDZahnIukxTKhP9GY7AOyrYBVhgyRvOxrrhdIcHLU1uoAIgdXWDUjwQ69PqgxJ2tC8T+Mq8ykEVqckiJHkHheWbD/o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124293},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"2bef6eb1e7c40f6b071ec3997a8cc18b3434cab1","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","pack:check":"npm pack --dry-run","prepublishOnly":"npm run ci","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","undici":"^7.21.0","form-data":"^4.0.4","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^25.2.3"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.5.0_1770982734696_0.9994946613240596","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"affine-mcp-server","version":"1.6.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.6.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"14b65ff5a1f79cbb4b2e72f0c640272254623665","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.6.0.tgz","fileCount":26,"integrity":"sha512-pl8DGXHw3N7qCMWDOZnV2EgAuws2/pI07XIuMfAIoPNA2dWzgQz/QD4x9ZtYIn7OnvCkxbrJHcyy0sDKa2Xefg==","signatures":[{"sig":"MEQCIGxrFieQR3zWDsAuAFJl1X4uIkzIhBadKGyoX3/7Kle8AiBJ8nAR+P46TQTMpdUlTEAbCaDEW8Q1ss5TDqtKkwE3uA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233890},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"682d31d2817e6e2cc2ff43beac82316eeac766e7","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","test:bearer":"node tests/test-bearer-auth.mjs","prepublishOnly":"npm run ci","test:db-create":"node tests/test-database-creation.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","undici":"^7.21.0","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/node":"^25.2.3","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.6.0_1771897522294_0.840729137205189","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"affine-mcp-server","version":"1.7.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.7.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"ab1f89e58788088683958aa7652ae101a5a58360","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.7.0.tgz","fileCount":25,"integrity":"sha512-mmBelEAHLuI77k3BLvdA/QAFCIKKcKXHEQ16px5B+KwWNQSNx5HEBzyGDO+1C2hklkfpOgdx2cR00NCtZikneg==","signatures":[{"sig":"MEYCIQDToTplk+AWLrIscT21qiKuIbTP5+Mkdp4iiepIPnAamQIhAPVlF5u42h32Hqo0IOKZG19YZ0gV/rbBOXxlbYYohOq+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":251522},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"7da707410426450471ba62084dff08293861d779","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","prepublishOnly":"npm run ci","test:db-create":"node tests/test-database-creation.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.7.0_1772155880611_0.7194515185768755","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"affine-mcp-server","version":"1.7.1","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.7.1","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"ce4237efdb905fb22580d1be293c2e0d163bf9f9","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.7.1.tgz","fileCount":25,"integrity":"sha512-/j69DCoZehTiKmOokpMddT6HUeDlRRF8IPpsdlHOAuAECd+Hh1Xg/BGpKYHzPmpnQzIj6jW1S7V7a6nrDiDreg==","signatures":[{"sig":"MEQCICZhDR1eXisvHU9W3AqEJeueDg2mA602Wl2Hn8PWh5vxAiBeiuFBOZlC1QUSYPt9sdXGr21fF0+YTfBlNfOTX4VNWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253384},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"e716f054975ebd336cd89e26bf1b7e34b872fc6c","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","prepublishOnly":"npm run ci","test:db-create":"node tests/test-database-creation.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.7.1_1772522132550_0.8352175459886331","host":"s3://npm-registry-packages-npm-production"}},"1.7.2":{"name":"affine-mcp-server","version":"1.7.2","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.7.2","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"fac2c98ba4c84d042ff3be518c66b877abbbce8a","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.7.2.tgz","fileCount":25,"integrity":"sha512-pm28zIGda2klMsrUq06dRr3mBxpmz/zn9HhgfNSF3a4HDSRFQu+371EQPyry2aS5WjUcRG5yzj31IOZoM3Gtgw==","signatures":[{"sig":"MEQCIB5yHr6bMfxM0bUm6DxuD/OArwWSfwzGAPOIEuGrQ2nHAiBSUC/GUt3nI5u5m0DaD+Gb/vsjdRZXiRspwt8Xu9+Wng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":263229},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"4fb31b6c17c78b1547dcf54079d020788a0254cf","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","prepublishOnly":"npm run ci","test:db-create":"node tests/test-database-creation.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.7.2_1772609434196_0.9723632630588612","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"affine-mcp-server","version":"1.8.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.8.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"9c184ef2715bfa2691e6ed593b02647742babdb3","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.8.0.tgz","fileCount":25,"integrity":"sha512-oO7BJ9uvh43oMSGnBVFkjK2yu1R2IfPzSpmZgGe6C83B9vvb2yos29pBhp1rocMtSSYpmVv/euQqnfXtOKW5DA==","signatures":[{"sig":"MEUCIH1ti+X2abO7YdWd4qHFYnPTRoGmhsKJ/qXFqUIHmpLdAiEAhABuD0o6c52wl1ySwU8tFfHTLRtje0RQrGuEQ6fULL4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":277839},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"6c8b3e3b234e15bcd639c47c0da62a0fd5f4e43c","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:db-cells":"node tests/test-database-cells.mjs","prepublishOnly":"npm run ci","test:db-create":"node tests/test-database-creation.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:comprehensive":"node test-comprehensive.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.8.0_1773033980659_0.5451336832961431","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"affine-mcp-server","version":"1.9.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.9.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"7dcb4f27915c0df56d737cdf726f1904a812b270","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.9.0.tgz","fileCount":25,"integrity":"sha512-jRTzTiUQx+xiuG9chu8tZmw98/ziUmvnaI9UALLOOIUQRMSJx69jqjHfF1A3LHqhzQwrNt7MLu+cZuRAUUPRog==","signatures":[{"sig":"MEQCIBhbB67lUAnItFTwWKANNwegFM2u8I4toQItj3h/sEe9AiB/MVCqYlBPNPtv1mVYyZ6SBUyQYa2MDQ7pNXf89w/4qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":283009},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"671cb544ff265b6a565715823b918605ed2e81ad","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:db-cells":"node tests/test-database-cells.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.0","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.9.0_1773133819210_0.8531344344194711","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"affine-mcp-server","version":"1.10.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.10.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"428a256b129acce1c912937f96fc0b7c02f52bab","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.10.0.tgz","fileCount":28,"integrity":"sha512-WHYurVT7ssjMJ+/8fQr4qbUAz4hZf0Y4WZnWy5hkTv3VN7cYgeO57ES9eXkRR6Itcfuut73X1a2tpiJbwFxD8Q==","signatures":[{"sig":"MEQCIGvOayUhBKRbf4NNvdsxnt8OTlPl6KeXM/xcwC1kT2hsAiAMLkICi2g6+5K/VLGZzLTXjNg18ZWuz/NCUr2DNBbsvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":365740},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"22b111738d20cbfe772c4aefcecd258b58f7a7f1","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:db-cells":"node tests/test-database-cells.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.10.0_1773794007670_0.36271786841130615","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"affine-mcp-server","version":"1.10.1","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.10.1","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"471d18f58501de70641ce2fc0929ba20646b820a","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.10.1.tgz","fileCount":28,"integrity":"sha512-zJGTNMs6W/aLq2kpqjU39/elCCBWhO70gUNPPxpPg8cdmaLm4EaoAjBCYB3nP26DcipBlXgdZam0D+uwGukSdA==","signatures":[{"sig":"MEUCIQCjhvKjOoh7TjotBWMErF5gvhIuPRZcosglmyoe59O0fwIgNsbA4Ktnl9vISK/3yE+GLG21oz1PSN8hoS1W1HeBssE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":366893},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"fb50dc58e0d076f250311054e8faaf6d51187f30","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:db-cells":"node tests/test-database-cells.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^5.5.4","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.10.1_1773799016246_0.1529990851227565","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"affine-mcp-server","version":"1.11.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.11.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"169a7470da93fae4c3d4263d8f0e9061f59dba20","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.11.0.tgz","fileCount":29,"integrity":"sha512-REOdkZVs6PVeICodZHwACBI6LgG+Nx9Rv76PhGyTPaFFHTh2DRy03KoBFzUOde/yjLLoCEbg74mprSGNvYcIqg==","signatures":[{"sig":"MEYCIQC7ij1fUKvNf4GB944uenO/MZM3vofYGqppiakfHTVkcQIhAMXxznU3texvDYICXvvHYobfQ1vIWDP7LWE3oHmWXH7D","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":413563},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"bc06e6b5a02c4c6f68564df40342723e9762238a","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.11.0_1774599089137_0.3390181464286077","host":"s3://npm-registry-packages-npm-production"}},"1.11.1":{"name":"affine-mcp-server","version":"1.11.1","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.11.1","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"38a063c2834ee442d5d389df5e4976b09b81fec8","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.11.1.tgz","fileCount":29,"integrity":"sha512-1JowGyRQaAv5HHPSrjMJBDTGW3jBLGvnd6yUyYxjcE+6JDUIn3XXiOBzKGcZik8CNFkeW4hahhLlxjZJfTqAOw==","signatures":[{"sig":"MEUCIQDIZg2k7amEqOZ1KLYicgvkDE3n7yzPDPcuk3IrFrn+XgIgPTv7ybV9FldyqWUkW0G5w+iOcoE3Aclk6+u2t5TmZvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":414589},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"34b1c609414dbab459c5edf6d2d39aefa45e2d3a","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.11.1_1774941733482_0.9996829312981301","host":"s3://npm-registry-packages-npm-production"}},"1.11.2":{"name":"affine-mcp-server","version":"1.11.2","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.11.2","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"a996801633a9d2c6ba21aad8105625bc1e9a29ef","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.11.2.tgz","fileCount":29,"integrity":"sha512-0e7/oa1yTnuq8od0mYNasq6FqMlKY/kgoACN3GRYKhl5ylgRCrHmR0W7zhUeYPwgMrpe6bNw5pA0AhKgkROYQQ==","signatures":[{"sig":"MEUCIHLSUtMSPghCNxYcOS3dgsy5S5YY+1kexlfJOQxrDMlqAiEAnAQCQ5Qq1F06v7hH7xjK4w84MRwiaLbPfh04pbW+1Q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415644},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"0eb71e676851c7cc4f8c8ce33237d3168173ad8f","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.1","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.11.2_1774942849274_0.3655518325732525","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"affine-mcp-server","version":"1.12.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.12.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"c1040aecc13a03ba20464edfbda8abe4c2f87f3f","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.12.0.tgz","fileCount":29,"integrity":"sha512-RqM5EMQzrqjNYnkD1dNc/ZJKT8a8vbm4lSBSNm9X7yKp83oK0yEN9V7cPCkx/ZYopf/zsuJ3j8RESGtvRno0EA==","signatures":[{"sig":"MEQCIFXQqGRZyxpYHioqtkKadM/PFkX9rn/A8cG/A1vXCo2CAiBm9sgtjP/6YDcEFVXxoJodzGr9bdLfXZES1pjYiAqWxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":421013},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"72dabf0da5cffd6618e6bd53ce64fc09ea1ff0fb","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:db-ui-rows":"node tests/test-database-ui-rows.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^7.21.0","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.12.0_1775706696744_0.5742552176614033","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"affine-mcp-server","version":"1.13.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@1.13.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"da011107ae88db7c1176eb93ddba61c430bf2d81","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-1.13.0.tgz","fileCount":35,"integrity":"sha512-rPOhgD8oaXJmY4B/IDVchVgjoRIuUYuRqgeoaCcwoJMl0pPn79YfEB2jEhFLiprKgK6AvabN+ctl1+H1tKqWHQ==","signatures":[{"sig":"MEQCIC6e54O+tEFrPvs839zmdDHT13i79MHcHx53rDYeEyAmAiBZLG3T96fTuNDXEveELPQAWZExiZuELZLU/PFzFtj17g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":529483},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"e3c9a97a0ab26ad3fc13534c75240327298ebbfb","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:db-ui-rows":"node tests/test-database-ui-rows.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:native-template":"node tests/test-native-template-instantiation.mjs","test:create-placement":"node tests/test-create-placement.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:capabilities-fidelity":"node tests/test-capabilities-fidelity.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^8.0.2","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_1.13.0_1775798192399_0.39787925874161467","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"affine-mcp-server","version":"2.0.0","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"author":{"name":"dawncr0w"},"license":"MIT","_id":"affine-mcp-server@2.0.0","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"homepage":"https://github.com/dawncr0w/affine-mcp-server#readme","bugs":{"url":"https://github.com/dawncr0w/affine-mcp-server/issues"},"bin":{"affine-mcp":"bin/affine-mcp"},"dist":{"shasum":"acea9e43ffba8962a26e64eec579445ada13b7af","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-2.0.0.tgz","fileCount":40,"integrity":"sha512-udPynX2PAPmSp0gLJ7Z+zbzQhDVq/PK9zCg7NWXHb1CczCoLR/nTIS3NXMJNPIiyholEb7ZkGdK3P6ok7nQdGA==","signatures":[{"sig":"MEUCIH3/4u5SSfQSWOC89RHRAyh7nKamjTpZu9/+4RWb6VifAiEA//2U42s1uKMLobWOg/i52/AeU5OcyfHt/+LJc5fyROo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1928211},"main":"dist/index.js","type":"module","engines":{"node":">=18"},"gitHead":"5423f853fca370e520a4be9dbef5f09a41d0e3f2","private":false,"scripts":{"ci":"npm run build && npm run test:tool-manifest && npm run pack:check","dev":"tsx watch src/index.ts","test":"npm run test:tool-manifest","build":"npm run clean && tsc -p tsconfig.json","clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","start":"node dist/index.js","test:e2e":"bash tests/run-e2e.sh","pack:check":"npm pack --dry-run","start:http":"MCP_TRANSPORT=http node dist/index.js","test:bearer":"node tests/test-bearer-auth.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:organize":"node tests/test-organize-tools.mjs","prepublishOnly":"npm run ci","test:data-view":"node tests/test-data-view.mjs","test:db-create":"node tests/test-database-creation.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:db-ui-rows":"node tests/test-database-ui-rows.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","test:cli-version":"node tests/test-cli-version.mjs","test:edgeless-ui":"npx playwright test tests/playwright/verify-edgeless-canvas.pw.ts --config tests/playwright/playwright.config.ts","test:http-bearer":"node tests/test-http-bearer.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:comprehensive":"bash tests/run-comprehensive.sh","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:edgeless-seed":"node tests/test-edgeless-canvas-setup.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:native-template":"node tests/test-native-template-instantiation.mjs","test:create-placement":"node tests/test-create-placement.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:surface-elements":"node tests/test-surface-elements.mjs","test:comprehensive:raw":"node test-comprehensive.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:capabilities-fidelity":"node tests/test-capabilities-fidelity.mjs","test:surface-element-gating":"node scripts/verify-surface-element-gating.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs"},"_npmUser":{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"},"repository":{"url":"git+https://github.com/dawncr0w/affine-mcp-server.git","type":"git"},"_npmVersion":"10.8.2","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"yjs":"^13.6.27","zod":"^3.23.8","cors":"^2.8.6","jose":"^6.2.1","undici":"^8.0.2","express":"^5.2.1","form-data":"^4.0.4","node-fetch":"^3.3.2","markdown-it":"^14.1.0","socket.io-client":"^4.8.1","fractional-indexing":"^3.2.0","@modelcontextprotocol/sdk":"^1.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.2","typescript":"^6.0.2","@types/cors":"^2.8.19","@types/node":"^25.2.3","@types/express":"^5.0.6","@playwright/test":"^1.50.0","@types/markdown-it":"^14.1.2"},"_npmOperationalInternal":{"tmp":"tmp/affine-mcp-server_2.0.0_1778141318589_0.24057686398377465","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"affine-mcp-server","version":"2.1.0","private":false,"type":"module","description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","author":{"name":"dawncr0w"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/DAWNCR0W/affine-mcp-server.git"},"bugs":{"url":"https://github.com/DAWNCR0W/affine-mcp-server/issues"},"homepage":"https://github.com/DAWNCR0W/affine-mcp-server#readme","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"main":"dist/index.js","bin":{"affine-mcp":"bin/affine-mcp"},"scripts":{"clean":"node -e \"require('fs').rmSync('dist',{ recursive: true, force: true })\"","build":"npm run clean && tsc -p tsconfig.json","dev":"tsx watch src/index.ts","start":"node dist/index.js","start:http":"MCP_TRANSPORT=http node dist/index.js","test":"npm run test:tool-manifest","test:cli-version":"node tests/test-cli-version.mjs","test:cli-commands":"node tests/test-cli-commands.mjs","test:cli-live":"node tests/test-cli-live.mjs","test:tool-manifest":"node scripts/verify-tool-manifest.mjs","test:tool-filtering":"node tests/test-tool-filtering.mjs","test:comprehensive":"bash tests/run-comprehensive.sh","test:comprehensive:raw":"node test-comprehensive.mjs","test:e2e":"bash tests/run-e2e.sh","test:db-create":"node tests/test-database-creation.mjs","test:db-cells":"node tests/test-database-cells.mjs","test:db-ui-rows":"node tests/test-database-ui-rows.mjs","test:db-schema":"node tests/test-database-schema.mjs","test:data-view":"node tests/test-data-view.mjs","test:doc-discovery":"node tests/test-doc-discovery.mjs","test:find-doc-by-title":"node tests/test-find-doc-by-title.mjs","test:create-placement":"node tests/test-create-placement.mjs","test:surface-elements":"node tests/test-surface-elements.mjs","test:surface-element-gating":"node scripts/verify-surface-element-gating.mjs","test:edgeless-seed":"node tests/test-edgeless-canvas-setup.mjs","test:edgeless-ui":"npx playwright test tests/playwright/verify-edgeless-canvas.pw.ts --config tests/playwright/playwright.config.ts","test:capabilities-fidelity":"node tests/test-capabilities-fidelity.mjs","test:native-template":"node tests/test-native-template-instantiation.mjs","test:data-view-ui":"npx playwright test tests/playwright/verify-data-view.pw.ts --config tests/playwright/playwright.config.ts","test:bearer":"node tests/test-bearer-auth.mjs","test:http-email-password":"node tests/test-http-email-password.mjs","test:http-bearer":"node tests/test-http-bearer.mjs","test:oauth-http":"node tests/test-oauth-http.mjs","test:organize":"node tests/test-organize-tools.mjs","test:create-doc-folder-placement":"node tests/test-create-doc-folder-placement.mjs","test:supporting-tools":"node tests/test-supporting-tools.mjs","test:tag-visibility":"node tests/test-tag-visibility.mjs","test:markdown-roundtrip":"node tests/test-markdown-roundtrip.mjs","test:markdown-rich-text-import":"node tests/test-markdown-rich-text-import.mjs","test:playwright":"npx playwright test --config tests/playwright/playwright.config.ts","pack:check":"npm pack --dry-run","ci":"npm run build && npm run test:tool-manifest && npm run pack:check","prepublishOnly":"npm run ci"},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.17.2","cors":"^2.8.6","express":"^5.2.1","form-data":"^4.0.4","jose":"^6.2.1","fractional-indexing":"^3.2.0","markdown-it":"^14.1.0","node-fetch":"^3.3.2","socket.io-client":"^4.8.1","undici":"^8.0.2","yjs":"^13.6.27","zod":"^3.23.8"},"devDependencies":{"@playwright/test":"^1.50.0","@types/cors":"^2.8.19","@types/express":"^5.0.6","@types/markdown-it":"^14.1.2","@types/node":"^25.2.3","tsx":"^4.16.2","typescript":"^6.0.2"},"gitHead":"9f6bc5274dcf723d4e6c01164a4a6db4974df943","_id":"affine-mcp-server@2.1.0","_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-oAOnYGLieN1lIMH/wdaCW14PdTJFeYhXBn3Pozz03+UnC7RvN2aCCe60egpLFgAAukfLUM4tiaPvlKMKa4H17Q==","shasum":"708fc981a27f5749894183fd6f3cf21328f14ea3","tarball":"https://registry.npmjs.org/affine-mcp-server/-/affine-mcp-server-2.1.0.tgz","fileCount":40,"unpackedSize":1934297,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/affine-mcp-server@2.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEfZTUKADCKDSKPzZv13W9UwI03AzlFv6WxR07dDlms9AiAsvbavl1LUfbgbf8s1694UjGXoB8FLgUoNPU3I+1bYFA=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:7464ab29-6439-4fa4-9861-c09df14c5d56"}},"directories":{},"maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/affine-mcp-server_2.1.0_1779354137227_0.34661895730952974"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-16T09:35:02.986Z","modified":"2026-05-21T09:02:17.720Z","1.2.0":"2025-09-16T09:35:03.256Z","1.2.1":"2025-09-17T07:23:46.493Z","1.2.2":"2025-09-18T01:19:29.832Z","1.3.0":"2026-02-13T07:31:52.987Z","1.4.0":"2026-02-13T07:57:04.510Z","1.5.0":"2026-02-13T11:38:54.845Z","1.6.0":"2026-02-24T01:45:22.467Z","1.7.0":"2026-02-27T01:31:20.798Z","1.7.1":"2026-03-03T07:15:32.690Z","1.7.2":"2026-03-04T07:30:34.337Z","1.8.0":"2026-03-09T05:26:20.806Z","1.9.0":"2026-03-10T09:10:19.365Z","1.10.0":"2026-03-18T00:33:27.824Z","1.10.1":"2026-03-18T01:56:56.396Z","1.11.0":"2026-03-27T08:11:29.314Z","1.11.1":"2026-03-31T07:22:13.685Z","1.11.2":"2026-03-31T07:40:49.497Z","1.12.0":"2026-04-09T03:51:36.885Z","1.13.0":"2026-04-10T05:16:32.588Z","2.0.0":"2026-05-07T08:08:38.784Z","2.1.0":"2026-05-21T09:02:17.425Z"},"bugs":{"url":"https://github.com/DAWNCR0W/affine-mcp-server/issues"},"author":{"name":"dawncr0w"},"license":"MIT","homepage":"https://github.com/DAWNCR0W/affine-mcp-server#readme","keywords":["mcp","affine","model-context-protocol","ai","claude","knowledge-base"],"repository":{"type":"git","url":"git+https://github.com/DAWNCR0W/affine-mcp-server.git"},"description":"Model Context Protocol server for AFFiNE - enables AI assistants to interact with AFFiNE workspaces, documents, and collaboration features.","maintainers":[{"name":"dawncr0w","email":"dev.dawncrow@gmail.com"}],"readme":"# AFFiNE MCP Server\n\nA Model Context Protocol (MCP) server for AFFiNE. It exposes AFFiNE workspaces and documents to AI assistants over stdio (default) or HTTP (`/mcp`) and supports both AFFiNE Cloud and self-hosted deployments.\n\n[![Version](https://img.shields.io/badge/version-2.1.0-blue)](https://github.com/dawncr0w/affine-mcp-server/releases)\n[![MCP SDK](https://img.shields.io/badge/MCP%20SDK-1.17.2-green)](https://github.com/modelcontextprotocol/typescript-sdk)\n[![CI](https://github.com/dawncr0w/affine-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/dawncr0w/affine-mcp-server/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)\n\n<a href=\"https://glama.ai/mcp/servers/@DAWNCR0W/affine-mcp-server\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/@DAWNCR0W/affine-mcp-server/badge\" alt=\"AFFiNE Server MCP server\" />\n</a>\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Choose Your Path](#choose-your-path)\n- [Quick Start](#quick-start)\n- [Compatibility Matrix](#compatibility-matrix)\n- [Tool Surface](#tool-surface)\n- [Documentation Map](#documentation-map)\n- [Verify Your Setup](#verify-your-setup)\n- [Security and Scope](#security-and-scope)\n- [Development](#development)\n- [Release Notes](#release-notes)\n- [License](#license)\n- [Support](#support)\n\n## Overview\n\nAFFiNE MCP Server is designed for three common scenarios:\n- Run a local stdio MCP server for Claude Code, Codex CLI, Cursor, or Claude Desktop\n- Expose a remote HTTP MCP endpoint for hosted or browser-connected clients\n- Automate AFFiNE workspace, document, database, organization, and comment workflows through a stable MCP tool surface\n\nHighlights:\n\n- Supports AFFiNE Cloud and self-hosted AFFiNE instances\n- Supports stdio and HTTP transports\n- Supports token, cookie, and email/password authentication\n- Exposes 85 canonical MCP tools backed by AFFiNE GraphQL and WebSocket APIs\n- Includes semantic page composition, native template instantiation, database intent composition, capability and fidelity reporting, and workspace blueprint helpers\n- Includes Docker images, health probes, and end-to-end test coverage\n\nScope boundaries:\n\n- This server can access only server-backed AFFiNE workspaces\n- Browser-local workspaces stored only in local storage are not available through AFFiNE server APIs\n- AFFiNE Cloud requires API-token-based access for MCP usage; programmatic email/password sign-in is blocked by Cloudflare\n\n> New in v2.1.0: Added exact-title document lookup, folder placement for `create_doc`, and trusted npm publishing.\n\n## Choose Your Path\n| Goal | Start here |\n| --- | --- |\n| Set up a local stdio server with the least friction | [docs/getting-started.md](docs/getting-started.md) |\n| Run the server in Docker or another OCI runtime | [docs/getting-started.md#path-c-run-from-the-docker-image](docs/getting-started.md#path-c-run-from-the-docker-image) |\n| Configure Claude Code, Claude Desktop, Codex CLI, or Cursor | [docs/client-setup.md](docs/client-setup.md) |\n| Run the server remotely over HTTP or behind OAuth | [docs/configuration-and-deployment.md](docs/configuration-and-deployment.md) |\n| Lock down tool exposure for least-privilege deployments | [docs/configuration-and-deployment.md#least-privilege-tool-exposure](docs/configuration-and-deployment.md#least-privilege-tool-exposure) |\n| Learn common AFFiNE workflows and tool sequences | [docs/workflow-recipes.md](docs/workflow-recipes.md) |\n| Browse the tool catalog by domain | [docs/tool-reference.md](docs/tool-reference.md) |\n\n## Quick Start\n\n### 1. Install the CLI\n\n```bash\nnpm i -g affine-mcp-server\naffine-mcp --version\n```\n\nYou can also run the package ad hoc:\n\n```bash\nnpx -y -p affine-mcp-server affine-mcp -- --version\n```\n\n### 2. Or run the server in Docker\n\n```bash\ndocker run -d \\\n  -p 3000:3000 \\\n  -e MCP_TRANSPORT=http \\\n  -e AFFINE_BASE_URL=https://your-affine-instance.com \\\n  -e AFFINE_API_TOKEN=ut_your_token \\\n  -e AFFINE_MCP_AUTH_MODE=bearer \\\n  -e AFFINE_MCP_HTTP_TOKEN=your-strong-secret \\\n  ghcr.io/dawncr0w/affine-mcp-server:latest\n```\n\nThen point your client at:\n\n```json\n{\n  \"mcpServers\": {\n    \"affine\": {\n      \"type\": \"http\",\n      \"url\": \"http://localhost:3000/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer your-strong-secret\"\n      }\n    }\n  }\n}\n```\n\nFor Docker, health checks, and remote deployment details, see [docs/configuration-and-deployment.md#docker](docs/configuration-and-deployment.md#docker).\n\n### 3. Save credentials with interactive login\n\n```bash\naffine-mcp login\n```\n\nThis stores credentials in `~/.config/affine-mcp/config` with mode `600`.\n\n- For AFFiNE Cloud, use an API token from `Settings -> Integrations -> MCP Server`\n- For self-hosted AFFiNE, you can use either an API token or email/password\n\n### 4. Register the server with your client\n\nClaude Code project config:\n\n```json\n{\n  \"mcpServers\": {\n    \"affine\": {\n      \"command\": \"affine-mcp\"\n    }\n  }\n}\n```\n\nCodex CLI:\n\n```bash\ncodex mcp add affine -- affine-mcp\n```\n\nMore client-specific setup is in [docs/client-setup.md](docs/client-setup.md).\n\n### 5. Verify the connection\n\n```bash\naffine-mcp status\naffine-mcp doctor\n```\n\nIf you want to expose the server remotely over HTTP instead of stdio, start with [docs/configuration-and-deployment.md](docs/configuration-and-deployment.md).\n\n## Compatibility Matrix\n\n| Target | Transport | Recommended auth | Recommended path |\n| --- | --- | --- | --- |\n| Claude Code | stdio | Saved config or API token | [docs/client-setup.md#claude-code](docs/client-setup.md#claude-code) |\n| Claude Desktop | stdio | Saved config or API token | [docs/client-setup.md#claude-desktop](docs/client-setup.md#claude-desktop) |\n| Codex CLI | stdio | Saved config or API token | [docs/client-setup.md#codex-cli](docs/client-setup.md#codex-cli) |\n| Cursor | stdio | Saved config or API token | [docs/client-setup.md#cursor](docs/client-setup.md#cursor) |\n| Containerized remote deployment | HTTP | Bearer token or OAuth | [docs/getting-started.md#path-c-run-from-the-docker-image](docs/getting-started.md#path-c-run-from-the-docker-image) |\n| Remote MCP clients | HTTP | Bearer token or OAuth | [docs/configuration-and-deployment.md#http-mode](docs/configuration-and-deployment.md#http-mode) |\n| AFFiNE Cloud | stdio or HTTP | API token | [docs/configuration-and-deployment.md#auth-strategy-matrix](docs/configuration-and-deployment.md#auth-strategy-matrix) |\n| Self-hosted AFFiNE | stdio or HTTP | API token, cookie, or email/password | [docs/configuration-and-deployment.md#auth-strategy-matrix](docs/configuration-and-deployment.md#auth-strategy-matrix) |\n\n## Tool Surface\n\n`tool-manifest.json` is the source of truth for canonical tool names. The MCP server exposes those tools through `tools/list` and `tools/call`.\n\nDomains:\n\n- Workspace: create, inspect, update, delete, and traverse workspaces\n- Organization: collections, collection-rule sync, workspace blueprints, and experimental organize or folder helpers\n- Documents: search, read, create, publish, move, tag, import/export, semantic composition, template inspection and native instantiation, capability and fidelity reporting, and block-level mutation\n- Databases: create columns, add rows, update rows, inspect schema, and compose database structures from intent\n- Comments: list, create, update, delete, and resolve\n- History: version history listing\n- Users and tokens: current user, sign-in, profile/settings, personal access tokens\n- Notifications: list and mark notifications as read\n- Blob storage: upload, delete, and cleanup blobs\n\nUse `AFFINE_TOOL_PROFILE=read_only`, `core`, or `authoring` when a deployment should expose a smaller surface than the complete `full` default. You can also combine profiles with `AFFINE_DISABLED_GROUPS` such as `docs.database`, `destructive`, or `admin` for finer control.\n\nFor the grouped catalog, notes, and operational caveats, see [docs/tool-reference.md](docs/tool-reference.md).\n\n## Documentation Map\n\n| Document | Purpose |\n| --- | --- |\n| [docs/getting-started.md](docs/getting-started.md) | First-run setup paths and verification |\n| [docs/client-setup.md](docs/client-setup.md) | Client-specific configuration snippets and tips |\n| [docs/configuration-and-deployment.md](docs/configuration-and-deployment.md) | Environment variables, auth modes, Docker, HTTP mode, and deployment guidance |\n| [docs/workflow-recipes.md](docs/workflow-recipes.md) | End-to-end workflows and example tool sequences |\n| [docs/tool-reference.md](docs/tool-reference.md) | Tool catalog grouped by domain |\n| [docs/edgeless-canvas-cookbook.md](docs/edgeless-canvas-cookbook.md) | Edgeless canvas layout helpers and surface elements, worked end-to-end |\n| [CONTRIBUTING.md](CONTRIBUTING.md) | Contributor workflow |\n| [SECURITY.md](SECURITY.md) | Security reporting |\n\n## Verify Your Setup\n\nUseful CLI commands:\n\n- `affine-mcp status` - test the effective configuration\n- `affine-mcp status --json` - machine-readable status output\n- `affine-mcp doctor` - diagnose config and connectivity issues\n- `affine-mcp show-config` - print the effective config with secrets redacted\n- `affine-mcp config-path` - print the config file path\n- `affine-mcp snippet <claude|cursor|codex|all> [--env]` - generate ready-to-paste client config\n- `affine-mcp logout` - remove stored credentials\n\nFor common failures, see:\n\n- [docs/getting-started.md#common-first-run-failures](docs/getting-started.md#common-first-run-failures)\n- [docs/configuration-and-deployment.md#deployment-checklist](docs/configuration-and-deployment.md#deployment-checklist)\n\n## Security and Scope\n\n- Never commit secrets or long-lived tokens\n- Prefer API tokens over cookies or passwords in production\n- Use HTTPS for non-local deployments\n- Rotate access tokens regularly\n- Restrict exposed tools with `AFFINE_DISABLED_GROUPS` and `AFFINE_DISABLED_TOOLS` for least-privilege setups\n- Use `/healthz` and `/readyz` when running the HTTP server behind a container platform or load balancer\n\n## Development\n\nRun the main quality gates before opening a PR:\n\n```bash\nnpm run build\nnpm run test:tool-manifest\nnpm run pack:check\n```\n\nAdditional validation:\n\n- `npm run test:comprehensive` boots a local Docker AFFiNE stack and validates the tool surface\n- `npm run test:e2e` runs Docker, MCP, and Playwright together\n- `npm run test:playwright` runs the Playwright suite only\n- Focused runners for the new high-level tool surface include `npm run test:create-placement`, `npm run test:capabilities-fidelity`, `npm run test:native-template`, `node tests/test-database-intent.mjs`, `node tests/test-semantic-page-composer.mjs`, `node tests/test-structured-receipts.mjs`, `node tests/test-organize-tools.mjs`, and `node tests/test-supporting-tools.mjs`\n\nLocal clone flow:\n\n```bash\ngit clone https://github.com/dawncr0w/affine-mcp-server.git\ncd affine-mcp-server\nnpm install\nnpm run build\nnode dist/index.js\n```\n\n## Release Notes\n\n- [CHANGELOG.md](CHANGELOG.md)\n- [RELEASE_NOTES.md](RELEASE_NOTES.md)\n- [GitHub Releases](https://github.com/dawncr0w/affine-mcp-server/releases)\n\n## License\n\nMIT License - see [LICENSE](LICENSE).\n\n## Support\n\n- Open an issue on [GitHub](https://github.com/dawncr0w/affine-mcp-server/issues)\n- Review AFFiNE product documentation at [docs.affine.pro](https://docs.affine.pro)\n\n## Acknowledgments\n\n- Built for the [AFFiNE](https://affine.pro) knowledge base platform\n- Uses the [Model Context Protocol](https://modelcontextprotocol.io) specification\n- Powered by [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk)\n","readmeFilename":"README.md"}