{"_id":"@milcho0604/velog-mcp","_rev":"26-6951c652833501b4ec3d4f9b2def4c1a","name":"@milcho0604/velog-mcp","dist-tags":{"latest":"0.9.5"},"versions":{"0.4.0":{"name":"@milcho0604/velog-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.4.0","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"ac24e817b2616f04e6795f420863099d604051a5","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.4.0.tgz","fileCount":97,"integrity":"sha512-KpwhnsAtQg2b22uSfGPZW16P/0ZWrQRFszqjeP06tBdUp5xRskA69kQg3L3fGGJV9HNN48J9oh3YsbRpP/gHSw==","signatures":[{"sig":"MEUCIFKEjtySgO6lGU3Iiu0xukuipgGbBS6Y9wLWqNTV1cswAiEA+i1vIWJv12XpbyREjTH5FNdbJEg6kKVb4v5nqFtSJ8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":645947},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"gitHead":"5615d1b96f22dabc8fa15637afd587f63983521d","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run build && npm run verify:dist"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Velog MCP server — 읽기 전면 지원. 쓰기는 초안과 비공개 발행이 기본이고, 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자가 켠다.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.4.0_1785642425133_0.08347587636283804","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@milcho0604/velog-mcp","version":"0.4.1","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.4.1","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"b4264a444d92e367123e7fafdcaff5b18183cd2a","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.4.1.tgz","fileCount":97,"integrity":"sha512-Uxnln+QPTclRRNyrdduJciO1d/Nsdbf7NWnSMscAyC3Mlvk9pWLCxWpcFL1uDVoge4GgkeAzq91xsawl+26rrA==","signatures":[{"sig":"MEUCIQDXu24BP1aU0VnsHEreXfL75QBoI67jvfgM/xyGCPt4HgIgEL1qNUMQsoAgp6x+1Y/mSWrCvjCnIavew2ANKGQuFPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":648398},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"gitHead":"5c0415979fb0855a61701a4aa05a5052be066cae","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run build && npm run verify:dist"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Velog MCP server — 읽기 전면 지원. 쓰기는 초안과 비공개 발행이 기본이고, 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자가 켠다.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.4.1_1785644634521_0.12861638706853196","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@milcho0604/velog-mcp","version":"0.4.2","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.4.2","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"b347de7217f4447fb8678997e6cb00f58340c9a6","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.4.2.tgz","fileCount":100,"integrity":"sha512-D+opZNeNpu0E82trlG/TdkkiqMGZ/HJVxvMj0GcCrkK72Qs81b5sDMBrIB848dl2drHlyPBwmB11e4U4bwrdbQ==","signatures":[{"sig":"MEUCIQD8n8pw+kS9mBL7XMnMiRm0MIjxvATTowX3fRusuHwJAAIgYWP1gbq0ZhWK9dDzmBW71wzPp6UG/3DQkMs/Aw54onw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":690288},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"gitHead":"18a2a2f52e141a807761e24d500fd329d2c2ac30","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run build && npm run verify:dist"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.6.1","description":"Velog MCP server — 읽기 전면 지원. 쓰기는 초안과 비공개 발행이 기본이고, 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자가 켠다.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.4.2_1786431012607_0.26287811026372343","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@milcho0604/velog-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.5.0","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"1960b1d215fff3650b96778e8a4c49d04710b163","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.5.0.tgz","fileCount":106,"integrity":"sha512-mB2D9Dg5SgNxkY+kqdpwXdCw4WFkBg7koG3Y25JZL6t3pOAgC/GF2Nk6bbBb04bKmpK5Dz36/PyE8V6E3NTCqg==","signatures":[{"sig":"MEUCIG512ivPwVEtAkB7rZ36R2D6evufoixDl+dCi5daOjeeAiEA9wwbYo3618szEMWOP3zJOKQ+FS41+dfrB6hISMTNtRc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729341},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=24"},"gitHead":"d84bb8e6c452369f4a30f70ede8a877620473bb2","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run build && npm run verify:dist"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Velog MCP server — 읽기 전면 지원. 쓰기는 초안과 비공개 발행이 기본이고, 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자가 켠다.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.5.0_1786590816871_0.18007746604690245","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@milcho0604/velog-mcp","version":"0.6.0","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.6.0","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"a38643de60c34a8960bf30da896a6132e56bf0a2","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.6.0.tgz","fileCount":106,"integrity":"sha512-C+QanuWBJzIgPzwIOMUVJhnTLiZuv0MANJgHqz3gGQ1luT3YQ/A1b+vKLMxS3fR/kUx8lon0DfUf3V0iTZhl3Q==","signatures":[{"sig":"MEQCIC1uBw8pBgVuuzWsRSe93cCBUkMx0UgpA2uJYgAPcN1YAiAETn1t51aci3Xep6HNViGxXG2jpMLk6cjh1XvI+TAHYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":742940},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"12afddc3c6bcc547f71857fab2b5b1369f7228bd","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run build && npm run verify:dist"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"Velog MCP server — 읽기 전면 지원. 쓰기는 초안과 비공개 발행이 기본이고, 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자가 켠다.","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.6.0_1787279094816_0.9871508194996128","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@milcho0604/velog-mcp","version":"0.6.1","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.6.1","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"12cd2068a8bd3398e44073f6910b57f1ff523e14","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.6.1.tgz","fileCount":107,"integrity":"sha512-GCZAQhfgdwPXgOkQVKxTDBCrMoZfaaxggE0ieneO+oKN/XPu2WlKyv7A2SlRARtwh4WCjGJ65qyQhvovXmDeFw==","signatures":[{"sig":"MEUCIQD/N5q0MPKXYGkNDoK5JYCFk++LrobJQXWck1Zs53YnPQIgUEOQMElZXhjMOKFolz/Xosyb8j+S3maNATWcyehl3U4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":752925},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"a79645b23cac70ce9aa3377655e19606df43f932","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"벨로그(velog.io) MCP 서버 — 조회·검색·통계는 인증 없이 동작하고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.6.1_1787482646067_0.36375118140315066","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@milcho0604/velog-mcp","version":"0.7.0","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.7.0","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"53fc6057fe49e1f4a0fbee1d8b81df513f197747","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.7.0.tgz","fileCount":110,"integrity":"sha512-chMkC5Fc7BvtBVlFgaujNXma4/0oUMuO6sXnIc29gG62646v6D890oixcS02LuT6Xyt5iy1xYkiWnCC6TIzWUg==","signatures":[{"sig":"MEUCIQClOcjgvVGteKNMl49y/t3s6bVB3IVorJNIGhcTC8mXxwIgPQKzzp3N5aCIkSlzSgah/pxlQVVTVtOrknMzbYZrknI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":825358},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"5a41645d0827abeeb3561bc9fbc13c767cd0b808","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"벨로그(velog.io) MCP 서버 — 조회·검색·통계는 인증 없이 동작하고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.7.0_1787554077036_0.29397005536692156","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@milcho0604/velog-mcp","version":"0.7.1","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.7.1","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"5bdd9278a750079bd5cdc85da7f0795b00531033","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.7.1.tgz","fileCount":110,"integrity":"sha512-jZKrN5C1aR+hXBI1MKL8DJp6ifL0NrxfOTxkRJ6i69UjzHRDf/6GgNZX32+uufqFiwKISIzGma+PSZ+AcQYcvg==","signatures":[{"sig":"MEUCIH+seU9huqNf2GNcRAKpfktApe+se/sBaxVD9Je3qSciAiEAxd6K4rJ9x/8oflUIVoT0Y8dvwFzIYekwlpnKbO4uDyw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":826485},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"24ea704584048137b41191ac55da7b33a4f97223","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"벨로그(velog.io) MCP 서버 — 조회·검색·통계는 인증 없이 동작하고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.7.1_1787557586975_0.023778535192662265","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@milcho0604/velog-mcp","version":"0.7.2","keywords":["mcp","model-context-protocol","velog","blog","claude"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.7.2","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"6fd61cdfef430061ccf6d308589ce58ca211b81f","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.7.2.tgz","fileCount":110,"integrity":"sha512-YobRRP9bFjsvDbAM8Q8THZKAdveXHkYbF/W1nnGfAzZ1xIQntoALK3e3NTnABP0/JxoAL6UBSQFRTn8p/lEDwA==","signatures":[{"sig":"MEYCIQCY9o9+aA3CMTZbH5eIk+uMcOTuz8IgeFuPw8F19ncM7QIhAJIx8afHheCyKlibOQ0mVZu3oFVD2jP87j4robbBQjT5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":827252},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"d8dca073474872ff4710a903bea6db3858a8f0b4","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify"},"_npmUser":{"name":"milcho0604","email":"milcho0604@gmail.com"},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.12.1","description":"벨로그(velog.io) MCP 서버 — 조회·검색·통계는 인증 없이 동작하고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.7.2_1787559484484_0.37140262257061196","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@milcho0604/velog-mcp","version":"0.9.3","keywords":["mcp","model-context-protocol","velog","blog","claude","벨로그","한국어","korean"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.9.3","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"80aad5dff3203faa16349cd0a42ba63a2b4bf6d1","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.9.3.tgz","fileCount":84,"integrity":"sha512-UUMEwtbjDupbLbO9+Lw54D1sqZPn/VbKHPp/70e4uFkKFFh204BF3735UWeGl8gjG73fPI1qnb8M1MWscYnMjQ==","signatures":[{"sig":"MEUCIC3kNqjI1Rc6aiH3+urLSxZ2bAFISZQQX9lashXQzcwcAiEA4Wpy3mzV+otxoEg8VqiSsYVS7hi9qFAGjyOzaIOvX9g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@milcho0604%2fvelog-mcp@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":923070},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"8ec1155f715adf81bae0f7bd3a92842881b8f8ec","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify","schema:baseline":"node scripts/build-baseline.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:df4141f1-dc95-4575-9e3c-6dffe8eca14a"}},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"벨로그(velog.io) MCP 서버. 조회와 검색과 통계는 인증 없이 되고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.9.3_1789633236186_0.4756385637776215","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@milcho0604/velog-mcp","version":"0.9.4","keywords":["mcp","model-context-protocol","velog","blog","claude","벨로그","한국어","korean"],"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","_id":"@milcho0604/velog-mcp@0.9.4","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"homepage":"https://github.com/milcho0604/velog-mcp#readme","bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"bin":{"velog-mcp":"dist/index.js"},"dist":{"shasum":"0f80fc5667e1bb1db28f7ec8278383d997713abb","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.9.4.tgz","fileCount":84,"integrity":"sha512-ww63gPa2YJupyg1SQPAotLJXhncLbFIjRzDMJmAcHgZoIJ/HWUP6EeE3FrSD6ezfJx+8omsuEmMrZY1U1U2EMA==","signatures":[{"sig":"MEQCICbRvhegQ9rasT9xexEqDchwEVZ0mqqL3Jbld0b8EuE6AiBI07plMGmMsOQQOMz1zKroWdFta+IGwZKerTQbiKDprw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDP6/2tT6LMjQqeXgVhZszn/V60TT13jYQHrCCM9tSofQIhALnYDHjJaRG3Tdk80I1Z9IXXSRNMOhcbuWLTrShaz3FV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@milcho0604%2fvelog-mcp@0.9.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":923262},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.18.0"},"gitHead":"f9345979aead698b99b844f5bff03aa0e951c2d5","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify","schema:baseline":"node scripts/build-baseline.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f433fddd-2fa8-4dab-8c5e-153e78bf17b6"}},"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"벨로그(velog.io) MCP 서버. 조회와 검색과 통계는 인증 없이 되고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"tmp":"tmp/velog-mcp_0.9.4_1789689156328_0.32750514351656457","host":"s3://npm-registry-packages-npm-production"}},"0.9.5":{"_id":"@milcho0604/velog-mcp@0.9.5","bin":{"velog-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"dist":{"shasum":"4660658402651cd74851f3e041069fc073e43909","tarball":"https://registry.npmjs.org/@milcho0604/velog-mcp/-/velog-mcp-0.9.5.tgz","fileCount":84,"integrity":"sha512-pAaKHjvh9+zpyw6IBV8X1SME6e66Itd+/yVHMp7YlPVIKKIDd4IO0QigxecKSZR/l0/TXanDMcxzIaC9KMj2Sw==","signatures":[{"sig":"MEUCIQD5xNaOvv5ni34U/nyF238jQ/dJD7bEsMfUb8q4nSzEZwIgPzfNNAz3csSxESdPeCus8pKzHY4lHkrjO4dOMM6agB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDZ2W6BJERnpzFe5vbP6xjFTEyCfrYmEvbO+Np6l7eO1AiAYSIKbVvbopUEYEOjEuWFGRNZaUO2fpuPnpUcLSu70xA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@milcho0604%2fvelog-mcp@0.9.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":924046},"main":"./dist/index.js","name":"@milcho0604/velog-mcp","type":"module","types":"./dist/index.d.ts","author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"engines":{"node":">=22.18.0"},"gitHead":"d1959da648b9fc8779d12a02fe216bc231918553","license":"MIT","mcpName":"io.github.milcho0604/velog","scripts":{"lint":"eslint .","test":"node --test 'src/__tests__/*.test.ts'","build":"tsc -p tsconfig.build.json","watch":"tsc -p tsconfig.build.json --watch","verify":"npm run typecheck && npm run lint && npm test && npm run build && npm run verify:dist","lint:fix":"eslint . --fix","prebuild":"node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"","postbuild":"node -e \"require('node:fs').chmodSync('dist/index.js',0o755)\"","typecheck":"tsc --noEmit","schema:dump":"node scripts/dump-schema.ts","verify:dist":"node scripts/verify-dist.ts","prepublishOnly":"npm run verify","schema:baseline":"node scripts/build-baseline.ts"},"version":"0.9.5","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:f433fddd-2fa8-4dab-8c5e-153e78bf17b6"}},"homepage":"https://github.com/milcho0604/velog-mcp#readme","keywords":["mcp","model-context-protocol","velog","blog","claude","벨로그","한국어","korean"],"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"_npmVersion":"11.19.0","description":"벨로그(velog.io) MCP 서버. 조회와 검색과 통계는 인증 없이 되고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","directories":{},"maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":true,"devDependencies":{"eslint":"^10.8.0","semver":"^7.8.5","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^24.13.3","@types/semver":"^7.7.1","typescript-eslint":"^8.65.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/velog-mcp_0.9.5_1789690432672_0.11074676563528629"}}},"time":{"created":"2026-08-02T03:47:04.823Z","modified":"2026-09-18T00:13:53.151Z","0.4.0":"2026-08-02T03:47:05.269Z","0.4.1":"2026-08-02T04:23:54.703Z","0.4.2":"2026-08-11T06:50:12.781Z","0.5.0":"2026-08-13T03:13:37.020Z","0.6.0":"2026-08-21T02:24:54.975Z","0.6.1":"2026-08-23T10:57:26.210Z","0.7.0":"2026-08-24T06:47:57.218Z","0.7.1":"2026-08-24T07:46:27.132Z","0.7.2":"2026-08-24T08:18:04.644Z","0.8.1":"2026-08-27T02:57:17.255Z","0.8.6":"2026-08-27T06:54:45.791Z","0.8.9":"2026-08-31T00:05:08.240Z","0.8.10":"2026-09-07T02:41:59.069Z","0.9.0":"2026-09-16T05:54:14.353Z","0.9.1":"2026-09-17T01:40:02.258Z","0.9.2":"2026-09-17T02:28:06.759Z","0.9.3":"2026-09-17T08:20:36.356Z","0.9.4":"2026-09-17T23:52:36.466Z","0.9.5":"2026-09-18T00:13:52.796Z"},"bugs":{"url":"https://github.com/milcho0604/velog-mcp/issues"},"author":{"url":"https://github.com/milcho0604","name":"Changhyun Kim"},"license":"MIT","homepage":"https://github.com/milcho0604/velog-mcp#readme","keywords":["mcp","model-context-protocol","velog","blog","claude","벨로그","한국어","korean"],"repository":{"url":"git+https://github.com/milcho0604/velog-mcp.git","type":"git"},"description":"벨로그(velog.io) MCP 서버. 조회와 검색과 통계는 인증 없이 되고, 쓰기는 초안과 비공개 발행이 기본이다. 공개 발행은 VELOG_ALLOW_PUBLIC=1 로 사용자만 켤 수 있다. 문서 없는 벨로그 GraphQL 동작을 실측해 정리했다. 런타임 의존성 2개, Node 22.18+","maintainers":[{"name":"milcho0604","email":"milcho0604@gmail.com"}],"readme":"# velog-mcp\n\n[![npm](https://img.shields.io/npm/v/@milcho0604/velog-mcp)](https://www.npmjs.com/package/@milcho0604/velog-mcp)\n[![Node](https://img.shields.io/badge/node-%3E%3D22.18-brightgreen)](https://nodejs.org)\n[![License](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![Runtime deps](https://img.shields.io/badge/runtime%20deps-2-lightgrey)](package.json)\n\n[벨로그](https://velog.io)를 Claude 같은 MCP 클라이언트에서 다루는 서버.\n글을 읽고, 초안을 쓰고, 발행하고, 통째로 백업한다.\n\n**[English →](README.en.md)**\n\n---\n\n## 왜 또 만들었나\n\n벨로그 MCP 서버가 이미 둘 있다. 이 구현은 세 가지가 다르다.\n\n**1. 발행은 기본값이 아니라 권한이다.**\n설치 직후에는 초안 작성과 **비공개 발행**까지 된다. 공개 발행은 환경변수를 넣어야\n열린다. 그 스위치는 모델이 못 건드린다 — MCP 설정 파일을 여는 사람만 바꿀 수 있다.\n\n**2. 벨로그 동작을 추측하지 않고 실측했다.**\n벨로그 GraphQL 은 비공식이라 문서가 없다. 이 레포는 **실제로 어떻게 동작하는지**를\n[velog-io/velog](https://github.com/velog-io/velog) 소스와 실호출로 확인해\n기록한다. 서버 쪽 함정 6가지가 [docs/api-reference.md](docs/api-reference.md) 에\n있다 — 오류 없이 빈 결과를 주는 경우, 발행글을 비공개로 만드는 경우 포함.\n\n**3. 런타임 의존성 2개.** `@modelcontextprotocol/sdk` 와 `zod` 뿐이다.\nHTTP 와 테스트 러너와 타입스크립트 실행은 전부 Node 내장을 쓴다.\n\n---\n\n## 설치\n\n**Node.js 22.18 이상**이 필요하다. 실행되는 것은 컴파일된 `dist/index.js` 지만, 개발과 검증이 `.ts` 를 직접 실행하고 그게 플래그 없이 도는 첫 버전이 22.18 이다. CI 는 22.18 과 24 와 26 에서 돌린다.\n\n### Claude Code 플러그인으로 (권장)\n\n```bash\n/plugin marketplace add milcho0604/velog-mcp\n/plugin install velog@milcho\n```\n\n설치할 때 값 네 개를 묻는다. **하나도 안 넣어도 설치되고, 읽기 전용으로 동작한다.**\n\n| 물어보는 것 | 안 넣으면 |\n| --- | --- |\n| Velog refresh token | 읽기 전용 (조회·검색·통계는 그대로) |\n| 공개 발행 허용 | 초안과 비공개 발행까지만 |\n| 프로필 수정 허용 | 프로필 도구가 꺼짐 |\n| 크롬 경로 | 표준 위치에서 자동으로 찾는다 |\n\n**토큰이 macOS 키체인에 들어간다.** 설정 파일에 평문으로 남지 않는다 —\n`sensitive: true` 로 선언한 값만 키체인으로 가고, 그건 테스트가 강제한다(P7).\n\n값을 나중에 바꾸려면 `/plugin manage`.\n\n### 그냥 MCP 서버로\n\nnpm 에 올려뒀으니 클론할 것 없이 MCP 클라이언트가 `npx` 로 띄운다. 설정 블록과\n클라이언트 지원 범위는 [설정](#설정) 을 볼 것.\n\n```bash\nclaude mcp add velog -e VELOG_REFRESH_TOKEN=여기에_토큰 \\\n  -- npx -y @milcho0604/velog-mcp@0.9.5\n```\n\n이 방식은 토큰이 클라이언트 설정 파일에 남는다. 위의 플러그인 방식은 키체인에 넣는다.\n\n### 직접 빌드해서\n\n```bash\ngit clone https://github.com/milcho0604/velog-mcp.git\ncd velog-mcp\nnpm install && npm run build\n```\n\n## 설정\n\nMCP 클라이언트 설정 파일(`claude_desktop_config.json`, `.mcp.json` 등)에 추가한다.\n\n```json\n{\n  \"mcpServers\": {\n    \"velog\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@milcho0604/velog-mcp@0.9.5\"],\n      \"env\": {\n        \"VELOG_REFRESH_TOKEN\": \"여기에 토큰\"\n      }\n    }\n  }\n}\n```\n\nClaude Code CLI 라면:\n\n```bash\nclaude mcp add velog -e VELOG_REFRESH_TOKEN=여기에_토큰 \\\n  -- npx -y @milcho0604/velog-mcp@0.9.5\n```\n\n로컬 체크아웃으로 돌리려면 command 를\n`node /절대경로/velog-mcp/dist/index.js` 로 바꾼다.\n\n> **어떤 클라이언트에서 되나?** 이건 stdio 서버다 — 클라이언트가 로컬 프로세스로 띄운다.\n> Claude Code·Claude Desktop·Cursor 처럼 MCP 서버를 로컬에서 실행하는 클라이언트에서 된다.\n> **claude.ai 와 ChatGPT 웹앱에서는 안 된다** — 둘 다 HTTP 로 접근 가능한 원격 MCP 서버만\n> 받는다. 연결이 내 기계가 아니라 그쪽 서버에서 출발하기 때문이다. 웹에서 쓰려면 서버를\n> 공개 호스팅하고 벨로그 토큰을 그 배포본에 넘겨야 하는데, 그러면 토큰을 내 기계에만\n> 두려던 이유가 사라진다.\n\n### 토큰 얻는 법\n\n벨로그는 공개 쓰기 API 가 없어서 브라우저 세션 쿠키로 인증한다.\n\n1. [velog.io](https://velog.io) 에 로그인\n2. 개발자도구(`F12`) → **Application** → **Cookies** → `https://velog.io`\n3. **`refresh_token`** 값을 복사\n\n**`VELOG_REFRESH_TOKEN` 하나만 넣으면 된다.** 벨로그 서버가 수명 짧은\n`access_token` 을 알아서 재발급하고([`authPlugin.mts`](https://github.com/velog-io/velog/blob/main/apps/server/src/common/plugins/global/authPlugin.mts)),\n이 서버가 응답에 실려 오는 갱신 쿠키를 받아 쓴다. 한 번 넣으면 **30일** 간다.\n\n`VELOG_ACCESS_TOKEN` 도 받지만 단독으로는 1시간이면 만료된다.\n\n> 토큰은 환경변수로만 읽는다. 디스크에 쓰지 않고, 브라우저 쿠키 DB 나 OS 키체인을\n> 건드리지 않는다. 다만 MCP 설정 파일에 적은 값은 그 파일에 평문으로 남는다 —\n> 그 파일 관리는 사용자 몫이다.\n\n**토큰이 없어도 서버는 뜬다.** 읽기 전용으로 동작하고, 공개 글 조회·검색·트렌딩·\n블로그 통계는 인증 없이 된다.\n\n---\n\n## 권한\n\n| 환경변수 | 되는 것 |\n| --- | --- |\n| *(설정 없음)* | 전체 읽기 · 초안 작성 · **비공개 발행** · 그림 생성·업로드 · 스키마 점검 — 도구 23개 |\n| `VELOG_ALLOW_PUBLIC=1` | …**공개 발행** 추가 (`is_private` 파라미터가 생김) |\n| `VELOG_ALLOW_PROFILE=1` | …**프로필 수정** 추가 (도구 5개) |\n\n두 스위치는 독립이다 — 하나만 켜도 되고 둘 다 켜도 된다.\n\n```json\n\"env\": {\n  \"VELOG_REFRESH_TOKEN\": \"...\",\n  \"VELOG_ALLOW_PUBLIC\": \"1\",\n  \"VELOG_ALLOW_PROFILE\": \"1\"\n}\n```\n\n'켬'으로 인정하는 값은 `1`, `true`, `yes`, `on` 뿐이다. 나머지는 전부 꺼짐 —\n오타로 조용히 켜지지 않는다.\n\n공개 발행이 꺼져 있으면 어떤 도구에도 `is_private` 파라미터가 **존재하지 않는다.**\n모델이 공개를 요청할 방법 자체가 없다. 켜면 파라미터가 생기지만 기본값은 여전히\n`true`(비공개)다.\n\n### 왜 비공개가 기본인가\n\n몸사리는 게 아니라 실측 근거가 있다. 벨로그의 발행 제한은 `is_private: false` 인\n글만 센다:\n\n```ts\n// apps/server/src/services/PostApiService/index.mts\ncount({ where: { fk_user_id, is_private: false, released_at: { gt: 5분전 } } })\nif (count >= 10) {\n  updateMany({ where: { fk_user_id, released_at: { gt: 5분전 } },\n               data: { is_private: true } })   // 최근 글을 '전부' 비공개로\n}\n```\n\n비공개 글은 이 계수를 **올리지 않는다.** 다만 `isPostLimitReached()` 는 공개 여부를\n보기 **전에** 무조건 실행되므로, 이미 최근 5분에 공개 글이 10건 쌓여 있으면 비공개\n초안 요청도 그 파괴 동작을 촉발할 수 있다 — '올리지 않는다'와 '유발하지 않는다'는\n다르다. 그래서 쓰기 무재시도와 자체 상한을 함께 유지한다.\n\n공개 글은 계수를 올리고, 한번 공개되면 RSS·검색 색인·구독 메일로 이미 나간 뒤라\n지워도 회수가 안 된다. 명시적 opt-in 을 둘 만한 비대칭은 여기에 있다.\n\n자세한 내용: [docs/security.md](docs/security.md)\n\n---\n\n## 도구\n\n23개. 벨로그 상태를 바꾸는 건 그중 10개뿐이다.\n\n### 읽기 — 인증 불필요\n\n| 도구 | 하는 일 |\n| --- | --- |\n| `velog_get_post` | 글 하나를 본문까지 |\n| `velog_list_posts` | 사용자의 글 목록, 태그로 좁힐 수 있음 |\n| `velog_search_posts` | 키워드 검색. `username` 을 주면 그 블로그 안에서만 |\n| `velog_trending_posts` | 트렌딩 (`day`/`week`/`month`/`year`) |\n| `velog_recent_posts` | 벨로그 전체 최신 글 |\n| `velog_get_user` | 프로필·팔로워 수·소개 |\n| `velog_list_series` | 시리즈 목록 (글 수와 id 포함) |\n| `velog_user_tags` | 사용자가 쓰는 태그와 글 수 |\n\n### 읽기 — 인증 필요\n\n| 도구 | 하는 일 |\n| --- | --- |\n| `velog_whoami` | 토큰이 어느 계정인지 (토큰 생존 확인용으로도) |\n| `velog_list_drafts` | 내 초안 목록과 id |\n\n### 파생 — 벨로그에 없는 기능\n\n| 도구 | 하는 일 |\n| --- | --- |\n| `velog_blog_stats` | 조회수·좋아요·댓글 집계, 상위 글, 연도별·태그별 분포 |\n| `velog_export_posts` | 글을 YAML 프론트매터 붙은 마크다운으로 저장 |\n| `velog_diagnose` | 지금 벨로그 스키마가 이 서버의 기준선과 같은지 대조 |\n\n### 쓰기\n\n| 도구 | 효과 |\n| --- | --- |\n| `velog_create_draft` | 초안 저장. 어떤 설정에서도 발행하지 않는다 |\n| `velog_update_draft` | 초안 **전체 교체** — 생략한 필드는 초기화된다 |\n| `velog_publish_post` | 새 글 발행 |\n| `velog_publish_draft` | 기존 초안을 발행 (저장된 본문을 그대로 씀) |\n| `velog_unpublish_post` | 발행글을 초안으로 되돌림 |\n| `velog_update_post` | 발행글 수정 — 생략한 필드는 **유지된다** |\n\n> `velog_update_draft` 는 생략하면 초기화하고, `velog_update_post` 는 유지한다.\n> 의도한 비대칭이고 이유는 [docs/tools.md](docs/tools.md) 에 있다.\n\n#### 썸네일 자동 채움\n\n`thumbnail` 을 생략하면 **본문 첫 이미지**를 썸네일로 쓴다. 목록·공유 카드가 글자만\n나오는 걸 막기 위해서다. 무엇을 넣었는지는 결과에 항상 표시하고, 후보가 여럿이면\n나머지도 함께 보여준다.\n\n| `thumbnail` 값 | 동작 |\n| --- | --- |\n| 생략 | 본문 첫 이미지로 자동 설정 |\n| URL | 그대로 사용 |\n| `null` | **자동 채움 끄기** — 일부러 비워 두는 경우 |\n\n코드블록·인라인코드 안의 이미지는 후보에서 **제외**한다(예제로 적어둔 마크다운이\n썸네일이 되면 안 되므로). `velog_update_post` 는 **기존 썸네일이 있으면 덮지 않는다** —\n제목만 고쳤는데 목록 카드가 바뀌는 일이 없도록 한 것이고, 이때 `null` 은 \"채우지 마라\"이지\n\"지워라\"가 아니다.\n\n#### 시리즈 — 이름으로 한 번에\n\n`series_name` 에 **이름**을 주면 저장 **전에** 내 시리즈에서 찾아 **같은 요청에 실어 보낸다**.\n글쓰기와 시리즈 등록이 한 번의 호출로 끝난다. id 는 사람도 AI 도 모르기 때문에 이름을 받는다.\n\n```\nseries_name: \"PostgreSQL\"     ← 대소문자·앞뒤 공백은 무시하고 찾는다\nseries_id:   \"e53810ca-...\"   ← id 를 알면 이쪽이 우선\n```\n\n⚠️ **못 찾으면 글을 저장하지 않는다.** 조용히 시리즈 없이 저장하면 들어간 줄 알기 때문이다.\n이때 있는 시리즈 목록을 함께 알려준다.\n\n`series_name`·`series_id` 를 둘 다 생략하면 저장 뒤 결과에 **내 시리즈 목록**을 붙여준다.\n이 조회가 실패해도 글은 이미 저장된 뒤이므로 **저장을 실패시키지 않는다**(취소도 삼킨다 —\n여기서 실패로 보고하면 재시도 때 글이 두 번 생긴다).\n\n> ⚠️ 벨로그 API 로는 **시리즈를 만들 수 없다.** 뮤테이션에 시리즈 관련이 하나도 없고\n> `WritePostInput` 도 `series_id` 만 받는다. 새 시리즈는 벨로그 웹에서 한 번 만들면\n> 그 뒤부터 이 도구로 붙일 수 있다.\n\n`username` 을 받는 도구 중 `velog_list_drafts`·`velog_blog_stats`·`velog_export_posts`\n는 생략하면 **내 계정**을 쓴다. `velog_search_posts` 는 생략하면 **벨로그 전체**를 검색한다.\n\n### 그림 — 다이어그램·표지\n\n| 도구 | 효과 |\n| --- | --- |\n| `velog_render_diagram` | 구성도·흐름도를 그려 올린다 |\n| `velog_render_sequence` | 참가자와 순서 있는 메시지로 시퀀스 다이어그램을 그린다 |\n| `velog_render_cover` | 글 표지 카드(1200×630)를 만든다 |\n| `velog_upload_image` | 로컬 이미지를 올리고 마크다운을 돌려준다 |\n\n넘기는 건 **무엇이 있고 무엇이 어디로 흐르는지**뿐이다. 색·여백·글자 실측·모서리\n라운딩·캔버스 크기는 렌더러가 쥔다. 매번 처음부터 그리면 매번 다르게 생기기 때문이다.\n\n수치는 전부 실측이다. 노드 폭과 줄바꿈은 브라우저 `getBBox()` 로 잰다 — 글자수로\n추정하면 한글·영문이 섞인 라벨에서 반드시 틀린다. 캔버스는 다 그린 **뒤에** 내용\nbbox 로 정하므로 그림이 잘릴 수가 없다.\n\n그리고 스스로 감사해서 여섯 가지를 보고한다:\n\n```\n카드 밖으로 삐져나온 글자 · 억지로 맞추려 눌린 자간\n노드를 관통하거나 노드 뒤에 숨은 선 · 그룹 이름표를 가린 선\n선끼리 겹침 · 노드끼리 겹침 · 라벨이 카드나 그룹 이름표에 얹히거나 그룹 테두리에 걸침\n```\n\n**감사에 하나라도 걸리면 올리지 않는다. 그리고 그걸 끄는 스위치는 없다.**\n벨로그에는 이미지 삭제 API 가 없고 업로드 한도도 깎이니, 어설픈 그림은 올리는 것보다\n고쳐 그리는 게 낫다. 모델이 스스로 켤 수 있는 우회는 방어가 아니다 —\n공개 발행 스위치와 같은 이유다([ADR 0004](docs/decisions/0004-capability-model.md)).\n**감사에 떨어진 PNG 는 이 서버로 올릴 길이 없다.** `upload:false` 로 그려도 그 산출물은\n거부 목록에 오르고, 경로를 `velog_upload_image` 에 줘도 막힌다 — 그 두 단계 우회를\n막으려고 만든 장치다. 고쳐서 다시 그리는 것이 유일한 경로다.\n(감사를 **통과한** PNG 는 `upload:false` 로 그린 뒤 경로를 넘겨 올릴 수 있다.)\n\n아이콘은 내장 28종(`server`·`database`·`cloud`·`clock`·`alert` …)이고 전부 도형\n조합이다. 밖에서 받아오는 게 하나도 없다 — 렌더러는 DNS 를 막은 채로 돈다.\n\n**크롬이 필요하다** (크로미움 계열이면 된다: Edge·Brave·Chromium). macOS·리눅스·\n윈도우에서 알아서 찾고, 다른 데 있으면 `VELOG_CHROME_PATH` 로 지정한다.\n이 중 브라우저를 쓰는 건 `velog_render_diagram`, `velog_render_sequence`, `velog_render_cover` **셋뿐**이고,\n`velog_upload_image` 를 포함한 나머지 19개는 크롬 없이 동작한다.\n\n**비용은 실측해서 밝혀 둔다.** 그림 한 장에 크롬 9~11개·최대 약 1GB 를 3~4초 쓰고\n0 으로 돌아온다. 이건 크롬의 바닥이지 우리 그림 탓이 아니다.\n좌표·글자·개수에는 전부 상한이 있고, 캔버스 상한(6000px/900만px)은 **페이지 안에서**\n걸린다 — 브라우저는 크기를 받는 순간 표면을 준비하므로 바깥에서 막으면 늦다.\n**렌더는 줄을 세운다** — MCP 클라이언트가 도구를 병렬로 부르기 때문에, 안 그러면\n그림 다섯 장 요청에 크롬 45개·6GB 가 된다. 줄을 세우면 동시 4회도 한 장 분량으로\n고정된다. 10회 연속에서 누적이 없는 것도 확인했다.\n\n### 프로필 수정 — `VELOG_ALLOW_PROFILE=1`\n\n도구 5개가 추가된다: `velog_update_profile`(이름·한줄소개), `velog_update_about`,\n`velog_update_blog_title`, `velog_update_social_links`, `velog_update_profile_image`.\n설정이 없으면 **등록조차 되지 않는다.**\n\n게이트를 둔 건 위험해서가 아니다 — 전부 되돌릴 수 있고 본인 계정에만 영향이며\n어디로도 배포되지 않는다. 이유는 **혼동**이다: 프로필의 `short_bio` 와 글의\n`short_description` 은 이름이 비슷하다. \"소개 좀 고쳐줘\" 가 어느 쪽인지 모호할 때,\n스위치가 꺼져 있으면 잘못 짚어도 프로필에 손이 닿지 않는다.\n\n`velog_update_profile` 은 **생략한 항목을 유지한다.** 벨로그의 `UpdateProfileInput`\n은 `display_name` 과 `short_bio` 를 둘 다 필수로 받아서 한쪽만 보내면 다른 쪽이\n빈 문자열로 덮인다 — 그래서 현재 값을 읽어 채워 보낸다.\n\n---\n\n## 사용법\n\n설정이 끝나면 MCP 클라이언트에 그냥 말하면 된다.\n\n```\n\"오늘 고친 버그로 벨로그 초안 잡아줘\"\n   → 마크다운을 쓰고 초안으로 저장, 편집 URL 을 준다\n\n\"작년에 HTTP/2 로 뭐 썼더라\"\n   → 내 글 안에서 검색\n\n\"내 글 조회수 상위 10개랑 어떤 태그가 제일 많이 읽혔는지\"\n   → 블로그 전체를 훑어 집계\n\n\"내 글 전부 ~/blog-backup 에 백업해\"\n   → 프론트매터 붙은 .md 로 저장\n\n\"그 초안 발행해줘\"\n   → 기본은 비공개. 공개는 VELOG_ALLOW_PUBLIC=1 이 있어야 한다\n\n\"요청이 LB 에서 워커 거쳐 레디스까지 어떻게 흐르는지 그려줘\"\n   → 그림을 그리고 자가감사한 뒤 올리고, 본문에 붙일 마크다운을 준다\n\n\"이 글 표지 이미지 만들어줘\"\n   → 1200×630 카드. 주소를 velog_update_post 의 thumbnail 에 넣으면 표지가 된다\n```\n\n되돌릴 수 없는 도구에는 `destructiveHint` 가 붙어 있다. **다만 annotation 은\n«힌트» 이지 차단이 아니다** — 호출 전에 승인을 물을지는 MCP 클라이언트 설정에 달렸다.\n서버가 막는 것은 따로다: 공개 발행은 `VELOG_ALLOW_PUBLIC=1` 없이는 경로 자체가 없고,\n쓰기는 재시도하지 않으며, **공개 발행**은 이 서버 인스턴스 안에서 5분에 5건으로\n스스로 제한한다(비공개 발행·초안에는 이 제한이 걸리지 않는다).\n\n### 백업 파일 형식\n\n```yaml\n---\ntitle: \"글 제목\"\ndate: 2022-12-31T18:32:39.790Z\nslug: \"url-slug\"\nurl: \"https://velog.io/@username/url-slug\"\ntags: [\"태그1\", \"태그2\"]\nlikes: 260\nviews: 16323\n---\n\n마크다운 본문…\n```\n\n---\n\n## 개발\n\n```bash\nnpm test              # node:test 로 .ts 직접 실행 — jest·ts-node 없음\nnpm run typecheck     # 테스트 포함 — 종전엔 제외돼 실제 오류가 숨어 있었다\nnpm run lint          # typescript-eslint (타입 기반)\nnpm run build         # tsconfig.build.json (dist 에 테스트 미포함)\nnpm run schema:dump   # 현재 벨로그 GraphQL 스키마 덤프\nnpm run schema:baseline  # schema/baseline.json 을 실측으로 다시 만든다 (velog_diagnose 의 기준선)\nnpm run schema:baseline -- --check   # 쓰지 않고 «지금 기준선이 맞는지» 만 본다\n```\n\n테스트 683건(0.9.5 기준). `safety.test.ts` 가 보안 불변식(A1~A13)을,\n`render.test.ts` 가 구성도 불변식(R1~R23, D1)과 시퀀스 불변식(S1~S12)을,\n`plugin.test.ts` 가 포장 불변식(P1~P28)을 고정한다.\n깨지면 우회하지 말고 왜 깨졌는지부터 볼 것.\n\n여기 있는 방어는 전부 **일부러 망가뜨려** 확인했다. 소스 변이 54종 + 발행 관문\n자체를 겨눈 변이 12종(`scripts/gate-mutation.sh`), 각각이 검사를 정확히 1건씩\n실패시켜야 한다. **방어를 지웠는데도 통과하는 테스트는 테스트가 아니다.**\n이 저장소에도 그런 게 여럿 있었고, 그렇게 해서 고쳤다.\n\n## 문서\n\n| 문서 | 내용 |\n| --- | --- |\n| [docs/PRD.md](docs/PRD.md) | 기획서 — 목표·비목표·성공 기준 |\n| [docs/architecture.md](docs/architecture.md) | 구조, Node 타입 스트리핑이 허용하는 TS 부분집합 |\n| [docs/api-reference.md](docs/api-reference.md) | 벨로그 GraphQL 스키마 실측 + 서버 함정 |\n| [docs/security.md](docs/security.md) | 토큰 취급, 권한 모델, 의도적으로 뺀 기능 |\n| [docs/tools.md](docs/tools.md) | 도구 카탈로그와 주의사항 |\n| [docs/decisions/](docs/decisions/) | 설계 결정 기록 (ADR) |\n| [CHANGELOG.md](CHANGELOG.md) | 버전별로 무엇이 깨져 있었고 무엇이 고쳐졌나 |\n\n## 참고\n\n벨로그 내부 GraphQL API 를 쓴다. 비공식이라 예고 없이 바뀔 수 있다.\n뭔가 깨지면 `npm run schema:dump` 를 돌려 `docs/api-reference.md` 와 diff 하는 게\n가장 빠르다.\n\n벨로그 [이용약관](https://velog.io/policy/terms)에는 자동화 접근을 제한하는 조항이\n없다. 본인 토큰으로 본인 글을 다루는 것은 권한 내 행위이고, 게시물 저작권은\n회원에게 귀속된다(제5조).\n\n## 라이선스\n\nMIT\n","readmeFilename":"README.md"}