{"_id":"@ai-hub-open/vk-ads-mcp","_rev":"11-d9904f705bb91fdd7b4686ef75f86d9c","name":"@ai-hub-open/vk-ads-mcp","dist-tags":{"latest":"0.8.0"},"versions":{"0.2.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.2.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.2.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"07986ee24b72e1d0ce648586e5b0d151230a4b24","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.2.0.tgz","fileCount":26,"integrity":"sha512-kvr/2x3uvhF9NGLO9sE5lE52yQcHQre5DhOz+bYEOu+DKt0rvhyolssn3DBlg6kVSBAjH5p+AmU+z73/bzrq1Q==","signatures":[{"sig":"MEUCIQCiTKoWl/L2YtGZ+yj3tqGOOnFsPHGWvUOu+lyNoJ/+9QIgFaoXrcDeKGLAwZweDT2l1ce9xNzyzjtv8/9jOvl13s4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117646},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"73815ecfe7d463d22b9e08966671ef8d1e6f0fcb","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"11.12.0","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.2.0_1785133583259_0.4510942453500866","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.2.1","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.2.1","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"da1aa5d59c95ec163dfa28f0cb1ee9a927d1a6fc","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.2.1.tgz","fileCount":26,"integrity":"sha512-5AOZ+8pngtuD3NDu5ESeMC6M7OvhX/2TcDD+cynCuX5CFKcO2jlqp1bpG5I9pVsGDiHMSoaoQc6gKzS5Pcgyog==","signatures":[{"sig":"MEYCIQDdDOJ5Ngqq+LIHQp8Uq2OGoTpcqnhquXnhl61YKpkL1wIhAOY8jrRK4obIUf6Vk2/4tEIRUFOWnZvgjxbOZL7NMgoH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117869},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"9fbab7424acabc2c76e53e2aab8fc07c125f856f","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"11.12.0","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"25.8.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.2.1_1785135456192_0.47837262886462084","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.2.2","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.2.2","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"b8a6f6557c7978f7f0cb8463d0cd66d7b468c3f3","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.2.2.tgz","fileCount":26,"integrity":"sha512-8Dbt60k0NQmvOozyEhxp4LZUaaeAjfXX/mLxGDMl180zp870wwDY7lhRujdZea1Yqkthmkx4CXpa2yz49031Pg==","signatures":[{"sig":"MEQCIB7TQ4eF/UWSwOzt4BwwakoWY46fFD/ftiiVOvXbs6sZAiAlhlo7IiAMZdwK096IDUodJjw3uF+20A9wJp8vNx5UfQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":118144},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"738af6ce8a2993ac680f80ffe38f9f9f7b4422b5","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.2.2_1785392946974_0.7917584533009185","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.3.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.3.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"9e776833d0c7e2c87e448ceae86983155d26d9f0","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.3.0.tgz","fileCount":29,"integrity":"sha512-byEihmB4fK9ljCa291XS0W2l12w/oilvnxK2j9KmxssVa8kuUYYb7CXtLjbhSEGOGRkG/25DCm+UvmyG2J0D7g==","signatures":[{"sig":"MEQCIES64n4Ft2J2hV8OTlkdLHSkilly7MSPTGc0N66UOhR8AiBuurCjN3Bz05jdm8mqhl4GXdHSQ0PFHCzOblNpDISVpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":137667},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"69592e55c5d681921be2d2ec7508dc422a25c431","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.3.0_1785412116522_0.25524556534114984","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.4.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.4.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"2ccf5a7b395b0d5f96462085781df3aeb0d8684a","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.4.0.tgz","fileCount":29,"integrity":"sha512-g24JBQyWFg3yBqmIvn5Mkm14gbORBBw40P+WwVjwPZ9J2eavtYuVW2wW20wU08todQerbSICXUjliSR3qeylOg==","signatures":[{"sig":"MEYCIQDB8MVK/0bOotsYj3KGfcaFvZrPFDN0X+ywu63FBpvq0QIhAKblGpadvGlEb4CRu2QzqbcU3YFNUzmmjwXR4rKDO35n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":143573},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"f30f74202e5a375c7dbd07634852cec77521c0f8","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.4.0_1787205785962_0.19590447003697942","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.5.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.5.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"e9a284051cc760a9e0d9e2d69efef7e5c38c939b","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.5.0.tgz","fileCount":29,"integrity":"sha512-wQtcVSbAgFT0YqaWp9EeBcy/tursm8Loh3pieL8ogpVnLACvO40MiA+2wMjQdf0FNCZkiPPRYSeOPP85JqnkNQ==","signatures":[{"sig":"MEYCIQCj+NZ9K49Z420gl3jIckPq1leUJImPyn6Ktipz7tWycwIhAJLPqs8/DWjUQB+oGsLwOF13pfsXjI07r9O/mwCLEnEr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":147556},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"e78ba59a5981913d0837748ff2af9523c4bfe7b3","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.5.0_1787237927047_0.7683119882067762","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.6.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.6.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"70090fbd8f1197d9454a99abcc638c5e9c0c3436","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.6.0.tgz","fileCount":29,"integrity":"sha512-qWNd8x8J3x14R1TVuPj6txCuld+chjE+a22viuorL8ywyuNF8XdeDwjqxuA0yDtLUODFxgOxGfdSi09zMn/N6Q==","signatures":[{"sig":"MEUCIGfsfSHISQtxPD7R/EkgNgDHTf2eONZJG5QVdLfG+kHCAiEApv/eoYlUyrT7Yy6HbgZbWfBq7bH58Ztla4kd1S+R5zI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":154640},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"28b8c1f56b66eeaa4bd3d6b31de861837694c344","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.6.0_1787299798349_0.5841031395987004","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.6.1","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.6.1","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"43798436a3322d00bdc6cc1cbd16d91b66a99a0a","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.6.1.tgz","fileCount":29,"integrity":"sha512-lYigkt2tMARpr0ujKx8eSyHwgZD/zEl1QN+bV6c2rxm/fPdpYr8/4H4MzY+4ass0mn+zv3leU7nvlGQP28l30g==","signatures":[{"sig":"MEUCIFPWGyiMzRvbz84w+edeYX32Z0LBJcIumYoKvLj8CUhEAiEAuXaYRhRQSN6S8n7EJzoB8T5+3hfAHSCpQYljbUwE+BI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156065},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"645c88baeb65e03118c75f98e858b965544ff228","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.6.1_1787307210160_0.20233479861413772","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.7.0","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"license":"Apache-2.0","_id":"@ai-hub-open/vk-ads-mcp@0.7.0","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"bin":{"vk-ads-mcp":"src/index.ts"},"dist":{"shasum":"5b52ccd641c7d37bb64cb382a89d50c60277c12d","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.7.0.tgz","fileCount":29,"integrity":"sha512-5gDwfQQFC0WJS+LIGeKgPVgrldRIXvkSpdtEAnEDEvFP+51HWg+3+1LMoLoWSHceN5EV8vyf3DEtRLmXJ+uzYQ==","signatures":[{"sig":"MEYCIQCc8Gh9dsVZgsMKY4LZLXkrblvPnF+864tBrWdR07ZEMgIhAK0cnx44HEdgqdBsL0nLDIgpylWORNelGo2kRWnke6xB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":161289},"main":"src/index.ts","type":"module","engines":{"bun":">=1.1.0"},"gitHead":"ffe042ef3cdbeb7cadfa79fc741d935578827a96","mcpName":"io.github.ai-hub-open/vk-ads-mcp","scripts":{"test":"bun test","build":"bun build ./src/index.ts --target=bun --outdir=./dist","start":"bun run src/index.ts","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"repository":{"url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git","type":"git"},"_npmVersion":"12.0.2","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/vk-ads-mcp_0.7.0_1787310064991_0.6620477534019038","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@ai-hub-open/vk-ads-mcp","version":"0.8.0","description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","license":"Apache-2.0","type":"module","main":"src/index.ts","scripts":{"start":"bun run src/index.ts","build":"bun build ./src/index.ts --target=bun --outdir=./dist","test":"bun test","typecheck":"tsc --noEmit","prepublishOnly":"tsc --noEmit"},"devDependencies":{"@types/bun":"latest","typescript":"^5.5.0"},"bin":{"vk-ads-mcp":"src/index.ts"},"repository":{"type":"git","url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git"},"homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"engines":{"bun":">=1.1.0"},"publishConfig":{"access":"public"},"mcpName":"io.github.ai-hub-open/vk-ads-mcp","gitHead":"a36041dcc369f7ce9ae511cec9948305d6af2912","_id":"@ai-hub-open/vk-ads-mcp@0.8.0","_nodeVersion":"22.23.2","_npmVersion":"12.0.2","dist":{"integrity":"sha512-KjMLkL1Fe0ILTrkEkP4HFcuf2ypCZHcjI4wb1pFfFTKkRljNarlMy6phzC1MIivjfSv3BmF5vlLBdWJPdwNL2w==","shasum":"c393f4a711be09e30aafef0b1bd1d646fa13a17d","tarball":"https://registry.npmjs.org/@ai-hub-open/vk-ads-mcp/-/vk-ads-mcp-0.8.0.tgz","fileCount":29,"unpackedSize":163526,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ai-hub-open%2fvk-ads-mcp@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCye16vRRCn7M68KfdxP1GFNL/z4rTw1xX4go8VRuSVVwIhAIOOIqm1+Spjj3qrEADkuCVszoScNqieilStymfsSM1g"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:a4ea4e8c-ddd1-4f1f-927a-436815bf0cc7"}},"directories":{},"maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vk-ads-mcp_0.8.0_1787680571990_0.6525076553731075"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-27T06:26:23.003Z","modified":"2026-08-25T17:56:12.597Z","0.2.0":"2026-07-27T06:26:23.397Z","0.2.1":"2026-07-27T06:57:36.343Z","0.2.2":"2026-07-30T06:29:07.085Z","0.3.0":"2026-07-30T11:48:36.656Z","0.4.0":"2026-08-20T06:03:06.105Z","0.5.0":"2026-08-20T14:58:47.197Z","0.6.0":"2026-08-21T08:09:58.480Z","0.6.1":"2026-08-21T10:13:30.312Z","0.7.0":"2026-08-21T11:01:05.221Z","0.8.0":"2026-08-25T17:56:12.196Z"},"bugs":{"url":"https://github.com/ai-hub-open/vk-ads-mcp/issues"},"license":"Apache-2.0","homepage":"https://github.com/ai-hub-open/vk-ads-mcp#readme","keywords":["mcp","model-context-protocol","vk-ads","ppc","advertising","click-ru","bun"],"repository":{"type":"git","url":"git+https://github.com/ai-hub-open/vk-ads-mcp.git"},"description":"MCP server for VK Ads API (ads.vk.com, myTarget v2) — Bun/TypeScript port","maintainers":[{"name":"dmitry-zhokhov","email":"ai-hub-open@proton.me"},{"name":"akainq","email":"aka.inq@gmail.com"}],"readme":"# MCP «ВК Реклама»\n\n<!-- mcp-name: io.github.ai-hub-open/vk-ads-mcp -->\n\nMCP на Bun и TypeScript, который даёт ИИ-агенту прямой доступ к [API ВК Рекламы](https://ads.vk.com/) (myTarget API v2).\n\n## Что это\n\nИз диалога с вами агент читает состояние аккаунта и вносит изменения через API: смотрит кампании, группы и объявления, выгружает статистику, создаёт и правит сущности, загружает креативы, собирает аудитории для ремаркетинга, запускает и останавливает показы.\n\nСтратегию и тексты объявлений сервер не придумывает — он исполняет решения, которые принимаете вы вместе с агентом. В наборе 44 инструмента.\n\n## Как проходит работа\n\n1. **Подключение и доступ.** Вы выбираете готовый токен ВК Рекламы, OAuth-приложение или подключение через click.ru. Проверить связь можно инструментом `auth_check`. Сервер работает локально через стандартный ввод-вывод или по HTTP, в том числе с несколькими аккаунтами.\n2. **Чтение состояния.** Перед изменением агент получает кампании, группы, объявления, справочники и текущую статистику.\n3. **Изменение.** Агент создаёт и правит сущности, загружает изображения и видео, собирает аудитории и списки клиентов и меняет статусы.\n4. **Проверка.** После изменения агент снова читает состояние и статистику.\n\nСервер не запускает кампании самостоятельно. Показ включается только отдельной явной сменой статуса.\n\n## Инструменты\n\n| Область | Что позволяет сделать |\n|---|---|\n| **Авторизация и аккаунт** | Проверить доступ, получить данные аккаунта и отозвать лишние OAuth-токены |\n| **Кампании — API `ad_plans`** | Создавать и вести кампании верхнего уровня, задавать сроки и ограничения бюджета |\n| **Группы объявлений — API `campaigns`** | Создавать группы с целью, бюджетом и таргетингом, запускать и останавливать показы |\n| **Дополнительные группы — API `ad_groups`** | Группировать объявления по таргетингу |\n| **Объявления — API `banners`** | Читать, править, удалять и отправлять на повторную модерацию; создаются они вложенными в группу |\n| **Контент** | Загружать изображения и видео из локального файла или по URL |\n| **Статистика** | Получать данные по дням и итоги за период |\n| **Ремаркетинг** | Работать с сегментами, пикселями и списками пользователей |\n| **Агентство** | Получать список клиентов и создавать клиентов агентского аккаунта |\n| **Справочники** | Искать регионы, подбирать пакеты форматов по цели кампании, смотреть валюты и страны |\n\n### Терминология API\n\nВ новом интерфейсе ВК Рекламы и API одни и те же уровни называются по-разному:\n\n| В интерфейсе | В API |\n|---|---|\n| Кампания | `ad_plan` |\n| Группа объявлений | `campaign` |\n| Объявление | `banner` |\n\nГруппа `campaign`, созданная без `ad_plan_id`, становится «сиротой» и не видна в новом кабинете. Создавайте группы внутри кампании или сразу передавайте `ad_plan_id`.\n\n## Что делает агент, а что остаётся человеку\n\n**Сервер и агент:**\n\n- получают и обновляют токен доступа;\n- читают состояние аккаунта и справочники;\n- создают, правят и загружают сущности по вашему заданию;\n- получают статистику и проверяют результат изменения.\n\n**Человек:**\n\n- выдаёт токен или ключи доступа;\n- выбирает бюджет, таргетинг, креативы, тексты и аудитории;\n- подтверждает план до создания, правки или удаления;\n- отдельным решением запускает показы.\n\nУ сервера нет встроенной точки подтверждения: вызов на изменение уходит в API сразу. Кампании, группы и объявления удаляются мягко через статус `deleted`; удаление сегментов, пикселей и списков пользователей необратимо на стороне API.\n\n## Ограничения\n\n- Сервер не пишет стратегию и не придумывает креативы.\n- Объявления нельзя создать отдельным вызовом: в API нет такого метода, они заводятся вложенным массивом `banners` внутри группы объявлений.\n- Статистика доступна только по дням и суммарно: срезов по возрасту, полу, гео и устройствам в API нет, асинхронных отчётов тоже. Не охвачены, но в API есть: данные в реальном времени, конверсии по целям, события приложений и офлайн-конверсии.\n- Из справочников доступны валюты, страны и регионы; интересов, отраслей и браузеров в API нет.\n- В наборе нет инструментов для создания лид-форм.\n- API не позволяет получить список ранее загруженных изображений и видео.\n- Похожие аудитории и группы ремаркетинга недоступны; используйте сегменты, пиксели и списки пользователей.\n- Сервер не гарантирует прохождение модерации.\n- ВК ограничивает число активных OAuth-токенов: при превышении лишние токены нужно отозвать.\n- Операции чтения проверялись на живом API выборочно. Создание, правка и удаление покрыты автоматическими тестами, но перед работой с важным аккаунтом их стоит проверить на безопасном объекте.\n\n## Требования\n\n- [Bun](https://bun.sh) 1.1+\n\n## Установка\n\nИз npm — одной командой (нужен установленный Bun):\n\n```bash\nbunx @ai-hub-open/vk-ads-mcp\n```\n\nДля подключения в конфиге MCP-клиента: `\"command\": \"bunx\", \"args\": [\"@ai-hub-open/vk-ads-mcp\"]` плюс переменные окружения одного из режимов ниже.\n\nИли из исходников:\n\n```bash\ngit clone https://github.com/ai-hub-open/vk-ads-mcp.git\ncd vk-ads-mcp\nbun install\n```\n\n## Настройка\n\nСкопируйте `.env.example` в `.env` и заполните **один из вариантов** (переменные окружения имеют приоритет над `.env`):\n\n**A. Через [click.ru](https://click.ru) — основной путь: токен без заявок на доступ к API, свои ключи ВК не нужны:**\n\n```bash\nCLICK_RU_TOKEN=<API-токен из профиля click.ru>\nCLICK_RU_ACCOUNT_ID=<ID рекламного аккаунта ВК Рекламы в click.ru>\nCLICK_RU_USER_ID=<ID пользователя click.ru>   # только при работе из мастер-аккаунта\n```\n\nСервер сам запрашивает access_token VK Ads у click.ru, кэширует и обновляет его при `401`. Токен click.ru создаётся в профиле `https://click.ru/userinfo.html` → поле «API Token» → «Создать»; ID аккаунта ВК Рекламы — через `GET /accounts` в `https://api.click.ru/V0/docs/`. Справка: `https://help.click.ru/2327`, `https://help.click.ru/4814`.\n\n**B. Готовый access_token VK Ads:**\n\n```bash\nVK_ADS_ACCESS_TOKEN=eyJ0...\n```\n\nТокен: [ads.vk.com](https://ads.vk.com/) → Настройки профиля → Получить токен / API.\n\n**C. OAuth 2.0 Client Credentials — приложение, одобренное на [target.vk.ru](https://target.vk.ru/):**\n\n```bash\nVK_ADS_CLIENT_ID=12345\nVK_ADS_CLIENT_SECRET=abcdef...\n# VK_ADS_AGENCY_CLIENT_NAME=<username клиента>  # агентство от имени клиента\n```\n\nСервер сам получает токен (`grant_type=client_credentials` / `agency_client_credentials`) и хранит его вместе с `refresh_token`. Когда срок истекает, токен **продлевается**, а не выпускается заново: у ВК лимит в 5 активных токенов на приложение и пользователя, и продление заменяет токен, не занимая новый слот. Так подключение живёт сколько угодно, а остальные слоты остаются свободными для ваших других интеграций.\n\nВ сетевом режиме подключите том для кэша, иначе `refresh_token` теряется при каждой выкладке и сервер выпускает новый токен — в `docker-compose.yml` это уже сделано. Если лимит всё же исчерпан, отзовите лишние токены инструментом `vk_ads_token_revoke`.\n\n## Запуск\n\n```bash\nbun run src/index.ts          # stdio — для локальных MCP-клиентов\nbun run src/index.ts --http   # HTTP-сервер на :3000\n```\n\n## Подключение к Claude Code\n\n`.mcp.json` в корне вашего проекта (см. также `.mcp.json.example`):\n\n```json\n{\n  \"mcpServers\": {\n    \"vk-ads\": {\n      \"command\": \"bun\",\n      \"args\": [\"run\", \"/абсолютный/путь/к/vk-ads-mcp/src/index.ts\"],\n      \"env\": {\n        \"CLICK_RU_TOKEN\": \"<ваш токен>\",\n        \"CLICK_RU_ACCOUNT_ID\": \"<ID аккаунта ВК Рекламы>\"\n      }\n    }\n  }\n}\n```\n\nДля режима готового токена в `env` вместо `CLICK_RU_*` укажите `VK_ADS_ACCESS_TOKEN`.\n\n**📋 Инструкция для ИИ-агента** — скопируйте и передайте своему агенту (Claude Code / Codex), подставив ключи:\n\n> Установи и подключи MCP «VK Ads»: склонируй `https://github.com/ai-hub-open/vk-ads-mcp.git`, проверь Bun (`bun --version`, если нет — установи с https://bun.sh), выполни `bun install` в корне репозитория. Зарегистрируй локальный stdio-MCP: команда `bun`, аргументы `run <абсолютный_путь_к_репо>/src/index.ts`, переменные окружения — мои ключи: `CLICK_RU_TOKEN=<...>`, `CLICK_RU_ACCOUNT_ID=<...>` (или `VK_ADS_ACCESS_TOKEN=<...>` для режима готового токена). Проверь `tools/list` и сообщи результат.\n\n## HTTP-режим\n\n```bash\nMCP_TRANSPORT=http MCP_PORT=3000 bun run src/index.ts\n```\n\nПеременные: `MCP_PORT` (3000), `MCP_HOST` (0.0.0.0), `MCP_AUTH_TOKEN` (если задан — запросы должны нести `Authorization: Bearer <token>`), `MCP_ALLOWED_ORIGIN` (CORS).\n\n| Метод + путь | Назначение |\n|---|---|\n| `POST /mcp` | JSON-RPC 2.0 запрос (или батч) |\n| `GET /healthz` | проверка доступности |\n| `GET /mcp/tools` | список инструментов (отладка) |\n\n**Несколько аккаунтов:** данные доступа можно передавать в заголовках каждого запроса; они имеют приоритет над `.env`. Один сервер может обслуживать несколько клиентов:\n\n```\nX-VK-Ads-Token: <access_token>       X-Click-Ru-Token: <API-токен>\n                                     X-Click-Ru-Account-Id: <ID аккаунта ВК Рекламы>\nX-VK-Ads-Client-Id: <client_id>      X-Click-Ru-User-Id: <ID пользователя>\nX-VK-Ads-Client-Secret: <secret>     X-Click-Ru-Base-Url: <опционально>\nX-VK-Ads-Agency-Client-Name: <...>   X-VK-Ads-Base-Url: <опционально>\n```\n\nСервер можно запустить без данных доступа в `.env` — тогда они передаются в каждом запросе. Полученные через OAuth или click.ru токены сохраняются в памяти и на диске отдельно для каждого набора доступа: ключ хранения включает отпечаток секрета, поэтому знание одного лишь публичного идентификатора (`client_id`, `account_id`) чужой токен из кэша не выдаёт.\n\n**Данные доступа в адресе — для клиентов без заголовков.** Claude Desktop и подобные приложения позволяют указать только URL сервера. Для них включается отдельный набор адресов: `MCP_ALLOW_URL_TOKEN=true`, после чего подходит любая из трёх форм:\n\n```\nhttps://ваш-домен/t/<токен ВК Рекламы>                  готовый токен, живёт 24 часа\nhttps://ваш-домен/o/<client_id>/<client_secret>         сервер обновляет токен сам\nhttps://ваш-домен/c/<токен click.ru>/<id аккаунта>      сервер обновляет токен сам\n```\n\nПользователю достаточно вставить такой адрес в настройки — больше ничего не требуется: ни установки программ, ни отдельного входа. Данные доступа в адресе сами служат пропуском, поэтому `MCP_AUTH_TOKEN` для них не спрашивается (обычный `/mcp` продолжает его требовать).\n\nВыбирайте вторую или третью форму, если подключение должно работать дольше суток: готовый токен ВК Рекламы живёт 24 часа, а `client_id` + `client_secret` и ключ click.ru долгоживущие — сервер по ним выпускает и обновляет токен сам. Учтите: адрес попадает в журналы обратного прокси-сервера, поэтому отключите в них запись пути и ограничьте частоту запросов.\n\n**⚠️ Безопасность:** при публикации в сеть задайте `MCP_AUTH_TOKEN` и закройте порт за обратным прокси-сервером с TLS.\n\n**Ограничения загрузки креативов в сетевом режиме.** Запросы приходят извне, поэтому чтение файлов с диска сервера выключено, а адреса для загрузки по ссылке проверяются: внутренние диапазоны (`127.0.0.1`, `169.254.169.254`, приватные сети) и уводящие туда перенаправления блокируются. При локальном запуске обе возможности включены — это ваши собственные файлы и сеть. Управление: `VK_ADS_ALLOW_LOCAL_FILES`, `VK_ADS_ALLOW_PRIVATE_NETWORK`.\n\n## Docker\n\n```bash\ncp .env.example .env   # заполните ключи и MCP_AUTH_TOKEN\ndocker compose up -d --build\ncurl http://localhost:3000/healthz\n```\n\n## Тесты\n\n```bash\nbun test                        # 110 тестов: доступ, хранение токенов, сервер, транспорт, защита от SSRF, инструменты\nbun run typecheck               # tsc --noEmit\nbun run scripts/live-check.ts   # проверка чтения через реальный API (нужны данные доступа)\n```\n\nТипы и тесты запускаются на каждый pull request и push в `main` и `dev`.\n\n## Лицензия\n\n[Apache License 2.0](LICENSE)\n","readmeFilename":"README.md"}