{"_id":"@mailgun/mcp-server","_rev":"11-19990a82a7623e52beaa5adab940173e","name":"@mailgun/mcp-server","dist-tags":{"latest":"2.3.1"},"versions":{"1.0.0-beta.1":{"name":"@mailgun/mcp-server","version":"1.0.0-beta.1","keywords":["mailgun","mcp","model-context-protocol","email","ai"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@1.0.0-beta.1","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"jvb182","email":"john.badali@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mailgun-mcp-server":"src/mailgun-mcp.js"},"dist":{"shasum":"e4160f80eb8ac43c5cfda49bf587d4aaab51c473","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-1.0.0-beta.1.tgz","fileCount":5,"integrity":"sha512-N/biu1XoM69/uautP7ItPx7VAUtyK2merdIW64FO7lqRygkrrM+BuBpt8LTUhFgNEMvGxsZgOaxic9xo/emfPg==","signatures":[{"sig":"MEYCIQDQcMpMZ7/zOY7V5HUd6aoYGasM1GYI4AKSbm3x+RY6/QIhAJvAJNRplxOFuSaW0XOw56Kqg/aEXto/RjES5+0M1yFa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719362},"main":"src/mailgun-mcp.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"ba10da7bd8c8869c3d74653640e9b4c5c73552a1","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node src/mailgun-mcp.js","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"jvb182","email":"john.badali@gmail.com"},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server for Mailgun, enabling MCP-compatible AI clients to interact with the Mailgun email service.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^10.0.0","@eslint/js":"^10.0.1","@jest/globals":"^29.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.0-beta.1_1770661605584_0.9284670180385841","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@mailgun/mcp-server","version":"1.0.0","keywords":["mailgun","mcp","model-context-protocol","email","ai"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@1.0.0","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"jvb182","email":"john.badali@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mailgun-mcp-server":"src/mailgun-mcp.js"},"dist":{"shasum":"50d6803c0ea2937947d79ca9ae18ddf07913b5c4","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-1.0.0.tgz","fileCount":5,"integrity":"sha512-ExVJ3AOA44dwiqG4hu4/EbYD9mWj6RZSROJ+xRnX7UfVDcMO5DVwUGNOHKavwNKZg6Rhj4H6Zp/AT5TPiWQ+NQ==","signatures":[{"sig":"MEQCIC1LfrPIM2CpKufp1yy32WuOj4YtmsWL9UO2rUNmqHTIAiAjKOE80w4wRuLAdItoFoe8HkgKotGqUdkbmTNMlB78Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":720194},"main":"src/mailgun-mcp.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"a309f0ea34e726531080b6ff7289eb34f01ae552","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node src/mailgun-mcp.js","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"jvb182","email":"john.badali@gmail.com"},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server for Mailgun, enabling MCP-compatible AI clients to interact with the Mailgun email service.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^10.0.0","@eslint/js":"^10.0.1","@jest/globals":"^29.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.0_1770663459637_0.18413894140596332","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@mailgun/mcp-server","version":"1.0.1","keywords":["mailgun","mcp","model-context-protocol","email","ai"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@1.0.1","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"jvb182","email":"john.badali@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"src/mailgun-mcp.js","mailgun-mcp-server":"src/mailgun-mcp.js"},"dist":{"shasum":"a1470157c5bbc83a1ba2c357286c57603fda9665","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-1.0.1.tgz","fileCount":5,"integrity":"sha512-rlgOePA7g8HjO0Udv73JIBSeiKlm0+bI1fk2phPUKZrGILFDZESMxbF8uLBpZMqf0amnJJRgSu4j+/+eaAp3ww==","signatures":[{"sig":"MEQCIDU4fpjV84SXfuIwirsHspuWdha+qzHI1a8VRFai0JktAiBTjI3tjJJUhKSaRjtCWxstdYJNA7BBuzQ/QLyuO4AIKQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":721666},"main":"src/mailgun-mcp.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"353352b1835bde58d93111b4a9d89b831f2b0b52","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node src/mailgun-mcp.js","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"jvb182","email":"john.badali@gmail.com"},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server for Mailgun, enabling MCP-compatible AI clients to interact with the Mailgun email service.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^10.0.0","@eslint/js":"^10.0.1","@jest/globals":"^29.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.1_1770667077483_0.1751157677922417","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@mailgun/mcp-server","version":"1.0.2","keywords":["mailgun","mcp","model-context-protocol","email","ai"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@1.0.2","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"jvb182","email":"john.badali@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"src/mailgun-mcp.js","mailgun-mcp-server":"src/mailgun-mcp.js"},"dist":{"shasum":"3d93626c5b8dd8c9633794de44bac52abbf6f632","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-1.0.2.tgz","fileCount":7,"integrity":"sha512-wbp+fmKcEPz5cQMz4ZdL6y9vTFDDPBeG7ybYThjOKwv7J5Ma7+ERpia55HTPSwVv5nPKUV6uQ+9DJ2YqvXtZVw==","signatures":[{"sig":"MEQCIBtQZlH4VqjVz+Lr+UTj9oYHnV0n2W8j5WhdeI1srxP2AiBseintAsyXkF+ecTXMoP44yfMMZklnbc/Il1quWVWoTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":731556},"main":"src/mailgun-mcp.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"731da8abbe7cb5688c1a2e00ad65431643e582e1","scripts":{"lint":"eslint .","test":"node --experimental-vm-modules node_modules/jest/bin/jest.js","start":"node src/mailgun-mcp.js","test:watch":"node --experimental-vm-modules node_modules/jest/bin/jest.js --watch","test:coverage":"node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage"},"_npmUser":{"name":"jvb182","email":"john.badali@gmail.com"},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"10.9.2","description":"A Model Context Protocol (MCP) server for Mailgun, enabling MCP-compatible AI clients to interact with the Mailgun email service.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"zod":"^3.24.2","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","eslint":"^10.0.0","@eslint/js":"^10.0.1","@jest/globals":"^29.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_1.0.2_1770749539902_0.6236111135498479","host":"s3://npm-registry-packages-npm-production"}},"2.1.2":{"name":"@mailgun/mcp-server","version":"2.1.2","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@2.1.2","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"dist/mailgun-mcp.js","mailgun-mcp-server":"dist/mailgun-mcp.js"},"dist":{"shasum":"253791599cb3b4480d9686aff05d224d1fa68ce9","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-2.1.2.tgz","fileCount":51,"integrity":"sha512-ruYAuFXt+ffwlMi7nDsDhMgt0lQT6/ljvcpVUZigPZsvJGPlnlEJ7iEzCTBxNZS05hDEgxVv+l4wxOkyHuHgqA==","signatures":[{"sig":"MEUCIA8iufDgaQU/kbBtMVztHUZqHfLIywt5CBnXEFdhnbPjAiEAvVhsknodM6dC3zBlMDFcz9Mls/sH4bVxdWgPtUyjpdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mailgun%2fmcp-server@2.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":801296},"main":"dist/mailgun-mcp.js","type":"module","types":"dist/mailgun-mcp.d.ts","engines":{"node":">=20.20.2"},"gitHead":"c5975078648f7b233115b5488249801250f46377","mcpName":"com.mailgun/mailgun-mcp-server","scripts":{"fmt":"oxfmt","lint":"npm run check:versions && oxlint","test":"vitest run","build":"tsc && cp src/openapi.yaml dist/openapi.yaml","start":"node dist/mailgun-mcp.js","prepare":"husky","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:watch":"vitest","test:coverage":"vitest run --coverage","check:versions":"node scripts/check-version-sync.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bceb3f28-4dba-436d-8c52-f8cc50286b3a"}},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","directories":{},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["oxlint --fix","oxfmt"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.45.0","oxlint":"^1.60.0","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","lint-staged":"^16.4.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_2.1.2_1784910726825_0.8349229212577625","host":"s3://npm-registry-packages-npm-production"}},"2.1.3":{"name":"@mailgun/mcp-server","version":"2.1.3","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@2.1.3","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"dist/mailgun-mcp.js","mailgun-mcp-server":"dist/mailgun-mcp.js"},"dist":{"shasum":"3cfb9da7544a4d128a4869a6f3b45e0d4517a3a0","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-2.1.3.tgz","fileCount":54,"integrity":"sha512-iOh93eL4nyWV9K9FUmFnPO1LxT+wtBiC9xsfut9ZdIqCFp50NtcuJ5xGP5C6NWoFOqccYDPuULNeJbv1R6Os0Q==","signatures":[{"sig":"MEUCIQDoxQbUfs8UGRMofcNKL4Z539t7QKngSfB+Vp1Axs3P2wIgLwb3xjpjoV4fDHEjTsxIM6/gof6pV30O6mE5VKWYbbo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICGcvXUecVWvv3VNjBRXMC5esy5OZpo4UsLvQ/YkeW4jAiEA8fUqUcj++PYsYrim4gRIq3k9algxjs3wjm5iWq3LBKs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mailgun%2fmcp-server@2.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":802808},"main":"dist/mailgun-mcp.js","type":"module","types":"dist/mailgun-mcp.d.ts","engines":{"node":">=20.20.2"},"gitHead":"da4581b5715c0c07a774f6ccddb3a2d38796231b","mcpName":"com.mailgun/mailgun-mcp-server","scripts":{"fmt":"oxfmt","lint":"npm run check:versions && oxlint","test":"vitest run","build":"tsc && cp src/openapi.yaml dist/openapi.yaml","start":"node dist/mailgun-mcp.js","prepare":"husky","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:watch":"vitest","test:coverage":"vitest run --coverage","check:versions":"node scripts/check-version-sync.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bceb3f28-4dba-436d-8c52-f8cc50286b3a"}},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","directories":{},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["oxlint --fix","oxfmt"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.45.0","oxlint":"^1.60.0","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","lint-staged":"^16.4.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_2.1.3_1789574240240_0.2044865846699","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@mailgun/mcp-server","version":"2.2.0","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@2.2.0","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"dist/mailgun-mcp.js","mailgun-mcp-server":"dist/mailgun-mcp.js"},"dist":{"shasum":"5901791a64d08d33e7a41811683d874990cc97cb","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-2.2.0.tgz","fileCount":54,"integrity":"sha512-8Qm++h//Y5ecIIL/RycH833/miu5CxuTywIuinRyViCk30RD2A1D+aa0XpL80C+i9E9ffjSWnEMBU7Gnzx92cQ==","signatures":[{"sig":"MEYCIQCWymk4vYKBi+KB0hoOqy+/pklLcB59zcxLcTnS5ymGFwIhAOaN/Z3ZBAp5Yn2eHUHqaQmPOFUKPARBZrE7o1rJS3Sk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDLLZ75mtxEtAjgzMBg6v/jC5y9SqE9+Du6EUszA+lMpgIgC7vHHqeiRfqK79V1Fy0T1QEQTRkLcubWdTl8Edn/jK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mailgun%2fmcp-server@2.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":787893},"main":"dist/mailgun-mcp.js","type":"module","types":"dist/mailgun-mcp.d.ts","engines":{"node":">=20.20.2"},"gitHead":"8db87fc364b625e9e1edce7a6c913e2e0d334644","mcpName":"com.mailgun/mailgun-mcp-server","scripts":{"fmt":"oxfmt","lint":"npm run check:versions && oxlint","test":"vitest run","build":"tsc && cp src/openapi.yaml dist/openapi.yaml","start":"node dist/mailgun-mcp.js","prepare":"husky","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:watch":"vitest","test:coverage":"vitest run --coverage","check:versions":"node scripts/check-version-sync.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bceb3f28-4dba-436d-8c52-f8cc50286b3a"}},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","directories":{},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["oxlint --fix","oxfmt"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.45.0","oxlint":"^1.60.0","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","lint-staged":"^16.4.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_2.2.0_1793984744825_0.8466797330211522","host":"s3://npm-registry-packages-npm-production"}},"2.3.0":{"name":"@mailgun/mcp-server","version":"2.3.0","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","_id":"@mailgun/mcp-server@2.3.0","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"bin":{"mcp-server":"dist/mailgun-mcp.js","mailgun-mcp-server":"dist/mailgun-mcp.js"},"dist":{"shasum":"c7277efecce8881561019eb08e96891bc1074823","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-2.3.0.tgz","fileCount":60,"integrity":"sha512-sttPBumHdSOmd2zHq+uRLdxEF0f7SSzVqdf1njxdENZkM0Ey0+rxN0LbMRRlXJmua0hYf4vEKAEeREAr6psoew==","signatures":[{"sig":"MEYCIQCyS/Fs9i4HQtO7a/F0HSBKPB4HsYR/1FBZkzlE09Hm3AIhALCIroQrJh49SDoUNZwmzopptoV5Y4NwDSAAynZGNdDw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDvsBDLuCmpM/iW4o38OqvEbThtt8hPWGe8I7HYTAPnXQIgVaHwBxOG9oNHNBO7WKWD3MT8aNUwM/47CGM/fkc2C6k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mailgun%2fmcp-server@2.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":826993},"main":"dist/mailgun-mcp.js","type":"module","types":"dist/mailgun-mcp.d.ts","engines":{"node":">=20.20.2"},"gitHead":"3e639097c17f8a8aee694577d422286f1b2e3972","mcpName":"com.mailgun/mailgun-mcp-server","scripts":{"fmt":"oxfmt","lint":"npm run check:versions && oxlint","test":"vitest run","build":"tsc && cp src/openapi.yaml dist/openapi.yaml","start":"node dist/mailgun-mcp.js","prepare":"husky","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:watch":"vitest","test:coverage":"vitest run --coverage","check:versions":"node scripts/check-version-sync.mjs","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bceb3f28-4dba-436d-8c52-f8cc50286b3a"}},"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","directories":{},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["oxlint --fix","oxfmt"]},"_nodeVersion":"24.15.0","dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.24.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.45.0","oxlint":"^1.60.0","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","lint-staged":"^16.4.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"tmp":"tmp/mcp-server_2.3.0_1794252617925_0.21635448550548375","host":"s3://npm-registry-packages-npm-production"}},"2.3.1":{"_id":"@mailgun/mcp-server@2.3.1","bin":{"mcp-server":"dist/mailgun-mcp.js","mailgun-mcp-server":"dist/mailgun-mcp.js"},"bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"dist":{"shasum":"997e3d981410db043083a993c52ab25021b4b392","tarball":"https://registry.npmjs.org/@mailgun/mcp-server/-/mcp-server-2.3.1.tgz","fileCount":60,"integrity":"sha512-U2h/xi7dkEsk0x2NqcozP2H79XlwPztFsbfO9JV1wnQbpyK8kBYIsMOnixJqzU59yeCj3TOdWP2G41IJsvRa1g==","signatures":[{"sig":"MEYCIQDyC+0+17nAtHuh3H63FkvH3LCrIwSW1D8VtQH6HsD09AIhAOveCAPePlpccNwJAKWO2kftFJm7F8duxc+fpwlhdns1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCRxxFHpa9jTqbekkr7WIgHWTqU7XTNntkrz8EZAxqkeQIgKB9u0FrjngokfoK/MzI6P3xKrMUrwbIPt7eFfvb4ojI="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@mailgun%2fmcp-server@2.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":827216},"main":"dist/mailgun-mcp.js","name":"@mailgun/mcp-server","type":"module","types":"dist/mailgun-mcp.d.ts","author":{"name":"Mailgun Technologies, Inc"},"engines":{"node":">=20.20.2"},"gitHead":"a51975eb4b2f3255e94f436a7deffa13bea16788","license":"Apache-2.0","mcpName":"com.mailgun/mailgun-mcp-server","scripts":{"fmt":"oxfmt","lint":"npm run check:versions && oxlint","test":"vitest run","build":"tsc && cp src/openapi.yaml dist/openapi.yaml","start":"node dist/mailgun-mcp.js","prepare":"husky","lint:fix":"oxlint --fix","fmt:check":"oxfmt --check","test:watch":"vitest","test:coverage":"vitest run --coverage","check:versions":"node scripts/check-version-sync.mjs","prepublishOnly":"npm run build"},"version":"2.3.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"bceb3f28-4dba-436d-8c52-f8cc50286b3a"}},"homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"_npmVersion":"11.12.1","description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","directories":{},"lint-staged":{"*.{ts,tsx,js,mjs,cjs}":["oxlint --fix","oxfmt"]},"maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"_nodeVersion":"24.15.0","allowScripts":{"fsevents@2.3.3":true},"dependencies":{"zod":"^4.3.6","js-yaml":"^4.1.0","@modelcontextprotocol/sdk":"^1.24.0"},"_hasShrinkwrap":false,"devDependencies":{"husky":"^9.1.7","oxfmt":"^0.78.0","oxlint":"^1.60.0","vitest":"^4.1.3","typescript":"^6.0.2","@types/node":"^25.5.2","lint-staged":"^16.4.0","@types/js-yaml":"^4.0.9"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-server_2.3.1_1794256784288_0.6222195932445528"}}},"time":{"created":"2026-02-09T18:26:45.444Z","modified":"2026-11-09T20:39:44.767Z","1.0.0-beta.1":"2026-02-09T18:26:45.754Z","1.0.0":"2026-02-09T18:57:39.814Z","1.0.1":"2026-02-09T19:57:57.678Z","1.0.2":"2026-02-10T18:52:20.142Z","2.1.2":"2026-07-24T16:32:06.983Z","2.1.3":"2026-09-16T15:57:20.320Z","2.2.0":"2026-11-06T17:05:45.074Z","2.3.0":"2026-11-09T19:30:18.041Z","2.3.1":"2026-11-09T20:39:44.395Z"},"bugs":{"url":"https://github.com/mailgun/mailgun-mcp-server/issues"},"author":{"name":"Mailgun Technologies, Inc"},"license":"Apache-2.0","homepage":"https://github.com/mailgun/mailgun-mcp-server#readme","keywords":["ai","email","mailgun","mcp","model-context-protocol"],"repository":{"url":"git+https://github.com/mailgun/mailgun-mcp-server.git","type":"git"},"description":"An MCP server that gives AI agents a practical interface to Mailgun workflows for sending, diagnosing deliverability, and taking account actions safely.","maintainers":[{"name":"jtetlermg","email":"jtetler@mailgun.com"},{"name":"zeefarmer","email":"admin@mailgunhq.com"},{"name":"oleksandr-mazepa","email":"zepa1993@gmail.com"},{"name":"pw_dev","email":"devs@mailgun.net"},{"name":"ai-wintermute","email":"dorokhova.olha@gmail.com"}],"readme":"# Mailgun MCP Server\n\n[![npm version](https://img.shields.io/npm/v/@mailgun/mcp-server.svg)](https://www.npmjs.com/package/@mailgun/mcp-server)\n[![MCP](https://img.shields.io/badge/MCP-Server-blue.svg)](https://github.com/modelcontextprotocol)\n[![License](https://img.shields.io/badge/license-Apache%202.0-green.svg)](LICENSE)\n\n## Overview\n\nA [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for [Mailgun](https://mailgun.com) that gives AI agents a practical, workflow-oriented interface to send email, diagnose deliverability, and manage account operations.\n\n> [!NOTE]\n> This MCP server runs locally on your machine and communicates over stdio. Mailgun does not currently offer a hosted version of this server.\n\n### Capabilities\n\n- **Messaging** — Send emails, retrieve stored messages, resend messages\n- **Domains** — View domain details, verify DNS configuration, manage tracking settings (click, open, unsubscribe)\n- **Webhooks** — List, create, and update event webhooks\n- **Routes** — View and update inbound email routing rules\n- **Mailing Lists** — Create, view, and update mailing lists and their members\n- **Templates** — Create, view, and update email templates with versioning\n- **Analytics** — Query sending metrics, usage metrics, and logs\n- **Stats** — View aggregate statistics by domain, tag, provider, device, and country\n- **Suppressions** — View bounces, unsubscribes, complaints, and allowlist entries\n- **IPs & IP Pools** — View IP assignments and dedicated IP pool configuration\n- **Bounce Classification** — Analyze bounce types and delivery issues\n- **Validation** — Validate email address deliverability and syntax before sending (`validate`)\n- **Optimize (Inbox Placement)** — Retrieve inbox placement / seed test results to gauge deliverability (`optimize`)\n- **Inspect (Email Preview)** — Retrieve email rendering and preview test results across clients (`inspect`)\n- **Account Limits** — View custom monthly sending limits\n\nThe labels above (`validate`, `optimize`, `inspect`) are the product tags used by [tag filtering](#tag-filtering). Every other capability is registered under the `send` tag, which is split into `send.<group>` [toolsets](#on-demand-toolsets).\n\n> [!NOTE]\n> Tools are limited to read and update operations — no delete operations are exposed, which keeps the blast radius of an unintended action small. See [Security Considerations](#security-considerations).\n\n### How it works\n\nThe server is OpenAPI driven. At startup it parses a bundled Mailgun OpenAPI spec and registers a curated allowlist of endpoints as MCP tools, generating each tool's input schema (via Zod) from the spec. Every tool is annotated with a Mailgun product tag (`send`, `validate`, `optimize`, or `inspect`), the toolset it belongs to, and whether it only reads data.\n\nBy default the server loads every tool at startup. With `--tags dynamic`, it loads a small [core set of tools](#on-demand-toolsets) plus three tools the model uses to load more toolsets on demand, which keeps the tool definitions sent to the model small. [Tag filtering](#tag-filtering) loads a fixed set of tools at startup instead, so a given workflow can expose exactly the products it needs.\n\n## Prerequisites\n\n- Node.js (v20.12 or higher)\n- Mailgun account and API key\n\n## Installation\n\nThe server is published to npm as [`@mailgun/mcp-server`](https://www.npmjs.com/package/@mailgun/mcp-server) and runs over stdio. Most clients can launch it on demand with `npx`, so there's nothing to install globally. In each snippet below, replace `YOUR-mailgun-api-key` with a key from your [Mailgun API security settings](https://app.mailgun.com/settings/api_security).\n\n> [!TIP]\n> If your account is hosted in Mailgun's EU region, add `\"MAILGUN_API_REGION\": \"eu\"` to the `env` block (or `-e MAILGUN_API_REGION=eu` on the CLI). It defaults to `us`.\n\n### Claude Code\n\n```bash\nclaude mcp add mailgun -e MAILGUN_API_KEY=YOUR-mailgun-api-key -- npx -y @mailgun/mcp-server\n```\n\nThen run `/mcp` in Claude Code to confirm the **mailgun** server is connected.\n\n### Claude Desktop\n\nOpen **Settings → Developer → Edit Config**, or edit the file directly:\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%/Claude/claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mailgun/mcp-server\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\",\n        \"MAILGUN_API_REGION\": \"us\"\n      }\n    }\n  }\n}\n```\n\n### Cursor\n\nOpen the command palette and choose **Cursor Settings → MCP → Add new global MCP server**, then add:\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mailgun/mcp-server\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n      }\n    }\n  }\n}\n```\n\n### Codex\n\n```bash\ncodex mcp add mailgun \\\n  --env MAILGUN_API_KEY=YOUR-mailgun-api-key \\\n  -- npx -y @mailgun/mcp-server\n```\n\n### VS Code (GitHub Copilot)\n\nAdd the following to your `settings.json`:\n\n```json\n{\n  \"mcp\": {\n    \"servers\": {\n      \"mailgun\": {\n        \"command\": \"npx\",\n        \"args\": [\"-y\", \"@mailgun/mcp-server\"],\n        \"env\": {\n          \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Windsurf\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mailgun/mcp-server\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n      }\n    }\n  }\n}\n```\n\n### Gemini CLI\n\nAdd to `~/.gemini/settings.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mailgun/mcp-server\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n      }\n    }\n  }\n}\n```\n\n## Configuration\n\n### Environment variables\n\n| Variable               | Required | Default              | Description                                                                                 |\n| ---------------------- | -------- | -------------------- | ------------------------------------------------------------------------------------------- |\n| `MAILGUN_API_KEY`      | Yes      | —                    | Your Mailgun API key                                                                        |\n| `MAILGUN_API_REGION`   | No       | `us`                 | API region: `us` or `eu`                                                                     |\n| `MAILGUN_API_HOSTNAME` | No       | (derived from region) | Override the API hostname (e.g. `api.eu.mailgun.net`). Takes precedence over the region.     |\n| `MAILGUN_MCP_TAGS`     | No       | (all)                | Comma-separated tags or toolsets to load, or `dynamic` for core tools with more loaded on demand. Equivalent to `--tags`. The CLI flag takes precedence. |\n\n### CLI options\n\nPass flags after the package name in your client's `args` (e.g. `[\"-y\", \"@mailgun/mcp-server\", \"--tags\", \"validate,inspect\"]`).\n\n| Flag              | Description                                                                             |\n| ----------------- | -------------------------------------------------------------------------------------- |\n| `--tags <list>`   | Comma-separated tags or toolsets to load (default: all). Valid: `all`, `dynamic`, `core`, `send`, `validate`, `optimize`, `inspect`, and the `send.<group>` toolsets. |\n| `--list-tags`     | Print every valid `--tags` value with a description and exit.                         |\n| `--help`, `-h`    | Show usage and exit.                                                                    |\n\n### On-demand toolsets\n\nWith `--tags dynamic` (or `MAILGUN_MCP_TAGS=dynamic`), the server starts with these core tools:\n\n| Tool                                    | Purpose                         |\n| --------------------------------------- | ------------------------------- |\n| `post-v3-domain-messages`               | Send an email                   |\n| `get-v4-domains`                        | List domains                    |\n| `get-v4-domains-name`                   | Domain details and DNS records  |\n| `put-v4-domains-name-verify`            | Re-check a domain's DNS records |\n| `get-v3-domains-name-tracking`          | Tracking settings               |\n| `get_metrics_summary`                   | Summary of key sending metrics  |\n| `post-v1-analytics-metrics`             | Query account metrics           |\n| `post-v1-analytics-logs`                | Query event logs                |\n| `post-v2-bounce-classification-metrics` | Bounce classification metrics   |\n| `get-v3-domain-bounces`                 | List bounces                    |\n| `get-v3-domain-bounces-address`         | Look up a bounce record         |\n| `get-v3-domain-unsubscribes`            | List unsubscribes               |\n| `get-v3-domain-complaints`              | List complaints                 |\n| `get-v3-domain-templates`               | List templates                  |\n| `validate_email`                        | Validate an email address       |\n\nEvery tool belongs to a toolset. The model loads the rest of a toolset when a task needs it:\n\n| Toolset             | Tools | Contents                                                                 |\n| ------------------- | ----- | ------------------------------------------------------------------------ |\n| `send.messages`     | 3     | Send email; retrieve and resend stored messages                          |\n| `send.domains`      | 8     | Domains, DNS verification, sending queues, tracking settings             |\n| `send.webhooks`     | 4     | Domain webhooks                                                          |\n| `send.account`      | 8     | Account IPs, dedicated IP pools, custom sending limits                   |\n| `send.message_tags` | 8     | Message tags, stats by tag, tag limits                                   |\n| `send.analytics`    | 12    | Stats and aggregates, analytics metrics and logs, bounce classification  |\n| `send.suppressions` | 8     | Bounces, unsubscribes, complaints, allowlist                             |\n| `send.routes`       | 3     | Inbound routes                                                           |\n| `send.lists`        | 8     | Mailing lists and members                                                |\n| `send.templates`    | 8     | Templates and template versions                                          |\n| `validate`          | 1     | Email address validation                                                 |\n| `optimize`          | 1     | Inbox placement test results                                             |\n| `inspect`           | 1     | Email preview test results                                               |\n\nThe model loads toolsets with three extra tools:\n\n- **`mailgun_list_toolsets`** lists every toolset and its tools, marking which are loaded and which change data. Given a tool name, it returns that tool's input schema instead.\n- **`mailgun_enable_toolset`** loads one or more toolsets. The server then notifies the client that its tool list changed (`notifications/tools/list_changed`), and the new tools appear alongside the core ones. The response lists the new tools without their input schemas, which come with the updated tool list.\n- **`mailgun_call_tool`** runs a read-only tool by name, whether or not its toolset is loaded. It's a fallback for clients that don't refresh their tool list after a change. It refuses core tools and tools that change data, so those always run as their own tool call.\n\nLoaded toolsets last until the client disconnects. On-demand loading needs a client that refreshes its tool list when the server reports a change; Claude Code does. In clients that don't, newly loaded tools won't appear: read-only tools still work through `mailgun_call_tool`, and tools that change data need the default (all tools) or [`--tags`](#tag-filtering), for example `--tags core,send.templates`.\n\n### Tag filtering\n\nSetting `--tags` or `MAILGUN_MCP_TAGS` to anything other than `dynamic` loads exactly the matching tools at startup, without the loading tools. Use it to narrow the tools shown to the model (for example, only validation tools for a workflow that doesn't send email).\n\nValid values (run `--list-tags` for descriptions):\n\n- `all` — every tool (the default)\n- `dynamic` — the core tools, with other toolsets loaded [on demand](#on-demand-toolsets). Use it on its own; combining it with other values fails at startup.\n- `core` — only the core tools listed above\n- `send`, `validate`, `optimize`, `inspect` — every tool for that product (`send` covers every `send.<group>` toolset)\n- A toolset ID such as `send.templates`\n\nFiltering uses **OR semantics**: a tool is loaded if it matches any value in the list. For example, `core,send.templates` loads the core tools plus every template tool.\n\n**Via CLI flag** — pass `--tags` in your MCP client config's `args`:\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@mailgun/mcp-server\", \"--tags\", \"validate,inspect\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n      }\n    }\n  }\n}\n```\n\n**Via environment variable** — set `MAILGUN_MCP_TAGS` (CLI flag wins if both are present):\n\n```json\n\"env\": {\n  \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\",\n  \"MAILGUN_MCP_TAGS\": \"validate,inspect\"\n}\n```\n\n> [!TIP]\n> Run the binary with `--list-tags` to print every valid value, or `--help` for full usage. Unknown values are rejected at startup with a clear error message.\n\n## Sample Prompts\n\n#### Send an Email\n\n```\nCan you send an email to EMAIL_HERE with a funny email body that makes it sound\nlike it's from the IT Desk from Office Space? Please use the sending domain\nDOMAIN_HERE, and make the email from \"postmaster@DOMAIN_HERE\"!\n```\n\n> [!NOTE]\n> Some MCP clients require a paid plan to invoke tools that send data. If sending fails silently, check your client's plan.\n\n#### Fetch and Visualize Sending Statistics\n\n```\nWould you be able to make a chart with email delivery statistics for the past week?\n```\n\n#### Manage Templates\n\n```\nCreate a welcome email template for new signups on my domain DOMAIN_HERE.\nInclude a personalized greeting and a call-to-action button.\n```\n\n#### Investigate Deliverability\n\n```\nCan you check the bounce classification stats for my account and tell me\nwhat the most common bounce reasons are?\n```\n\n#### Troubleshoot DNS\n\n```\nCheck the DNS verification status for my domain DOMAIN_HERE and tell me\nif anything needs fixing.\n```\n\n#### Review Suppressions\n\n```\nAre there any unsubscribes or complaints for DOMAIN_HERE? Summarize the\ntop offenders.\n```\n\n#### Manage Routing Rules\n\n```\nList all my inbound routes and explain what each one does.\n```\n\n#### Create a Mailing List\n\n```\nCreate a mailing list called announcements@DOMAIN_HERE and add these\nmembers: alice@example.com, bob@example.com.\n```\n\n#### Compare Domains\n\n```\nCompare my sending volume and delivery rates across all my domains for\nthe past month.\n```\n\n#### Engagement by Region\n\n```\nBreak down my email engagement by country and device for DOMAIN_HERE.\n```\n\n#### Review Tracking Settings\n\n```\nList all my domains and show which ones have tracking enabled for clicks\nand opens.\n```\n\n#### Validate an Email Address\n\n```\nValidate the email address EMAIL_HERE and tell me whether it's safe to send to.\n```\n\n#### Check Inbox Placement (Optimize)\n\n```\nPull the inbox placement results for seed test RESULT_ID_HERE and summarize\nwhere my message landed (inbox, spam, or missing) by provider.\n```\n\n#### Preview an Email (Inspect)\n\n```\nGet the email preview results for test TEST_ID_HERE and tell me if the email\nrenders correctly across clients.\n```\n\n## Development\n\n### Run from source\n\nThe server is written in TypeScript. Clone, install, build, and test:\n\n```bash\ngit clone https://github.com/mailgun/mailgun-mcp-server.git\ncd mailgun-mcp-server\nnpm install\nnpm run build\nnpm test\n```\n\n`npm run build` compiles `src/` to `dist/` and copies the bundled OpenAPI spec. Point your MCP client at the built entry instead of `npx` (use an absolute path):\n\n```json\n{\n  \"mcpServers\": {\n    \"mailgun\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mailgun-mcp-server/dist/mailgun-mcp.js\"],\n      \"env\": {\n        \"MAILGUN_API_KEY\": \"YOUR-mailgun-api-key\"\n      }\n    }\n  }\n}\n```\n\n### Live testing while you edit\n\nMCP servers are long-lived stdio processes that don't hot-reload, so the loop is: rebuild on save, then reconnect the client to pick up changes.\n\n1. Run `npm run build` once so `dist/openapi.yaml` is in place.\n2. Keep the TypeScript compiler running to rebuild `dist/` on every save:\n\n   ```bash\n   npx tsc --watch\n   ```\n\n3. Point a separate MCP client (or MCP Inspector, below) at `dist/mailgun-mcp.js`. After a change, restart the MCP client session to load the new build.\n\n### Testing with MCP Inspector\n\nThe [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector) lets you exercise tools without a full client. Build first, then launch it against the built server:\n\n```bash\nnpm run build\nMAILGUN_API_KEY=YOUR-mailgun-api-key npx @modelcontextprotocol/inspector node dist/mailgun-mcp.js\n```\n\nOpen the Inspector UI, click **Connect**, then use **List Tools** to verify the server is working. To test a filtered toolset, append flags after the server path:\n\n```bash\nMAILGUN_API_KEY=YOUR-mailgun-api-key npx @modelcontextprotocol/inspector node dist/mailgun-mcp.js --tags validate,inspect\n```\n\n### Pre-commit hooks\n\n`npm install` installs a git pre-commit hook (via husky) that runs `oxlint --fix` and `oxfmt` on staged TypeScript/JavaScript files and runs `npm run check:versions`. Fixable issues are auto-fixed and re-staged; commits that introduce unfixable lint errors or version-sync mismatches are rejected. If you already had a local clone before this change, run `npm install` once to install the hook.\n\n### Note on adding [endpoints](https://github.com/mailgun/mailgun-mcp-server/blob/main/src/endpoints.ts)\nEndpoints are grouped by toolset in `endpointGroups`. A plain string entry takes its product tag from its toolset (`send.templates` → `send`) and is treated as read-only only if it's a `GET`. Use the object form of `EndpointEntry` to set a tool name, mark a tool as `core` (loaded at startup in dynamic mode), or mark a `POST` that only queries data as `readOnly: true`.\n\n## Security Considerations\n\n### API key isolation\n\nYour Mailgun API key is passed as an environment variable and is never exposed to the AI model itself — it is only used by the MCP server process to authenticate requests. The server does not log API keys, request parameters, or response data.\n\n### Local execution\n\nThe server runs locally on your machine. All communication with the Mailgun API is over HTTPS with TLS certificate validation enforced. No data is sent to third-party services beyond the Mailgun API.\n\n### API key permissions\n\nUse a dedicated Mailgun API key with permissions scoped to only the operations you need. The server exposes read and update operations but does not expose any delete operations, which limits the blast radius of unintended actions.\n\n### Rate limiting\n\nThe server does not implement client-side rate limiting. Each tool call from the AI translates directly into a Mailgun API request. The server relies on Mailgun's server-side rate limits to prevent abuse — requests that exceed those limits will return an error to the AI assistant.\n\n### Prompt injection\n\nAs with any MCP server, a crafted or adversarial prompt could trick the AI assistant into calling operations you did not intend — for example, modifying tracking settings or reading mailing list members. Review your AI assistant's tool-call confirmations before approving actions, especially in untrusted prompt contexts.\n\n### Tool loading and approvals\n\nEvery tool carries the MCP `readOnlyHint` annotation, so clients can tell tools that only read data from tools that change it (for example when asking for approval). `mailgun_list_toolsets` and `mailgun_call_tool` are read-only. `mailgun_enable_toolset` changes which tools the session sees, so it isn't marked read-only, but it never changes anything in Mailgun. `mailgun_call_tool` runs only read-only tools that aren't in the core set, so approving it can never send email or change account settings. Tools that change data always run as their own tool call.\n\nLoading toolsets on demand reduces what the model sees; it isn't an access control, because the model can load any toolset. To limit which tools the server exposes at all, use [`--tags`](#tag-filtering).\n\n### Webhook URLs\n\nWebhook create and update operations accept arbitrary URLs provided through the AI assistant. The MCP server passes these URLs to the Mailgun API without additional validation. Mailgun is responsible for validating webhook destinations. Ensure your AI assistant does not set webhook URLs to unintended internal or sensitive addresses.\n\n### Input validation\n\nAll tool parameters are validated against the Mailgun OpenAPI specification using Zod schemas. However, validation depends on the accuracy of the OpenAPI spec, and some edge-case parameters may fall back to permissive validation. The Mailgun API performs its own server-side validation as an additional layer of protection.\n\n## Debugging\n\nThe MCP server communicates over stdio. Refer to the [MCP Debugging Guide](https://modelcontextprotocol.io/docs/tools/debugging) for troubleshooting.\n\n## License\n\nApache 2.0 — see [LICENSE](LICENSE) for details.\n\n## Contributing\n\nWe welcome contributions! Please feel free to submit a [Pull Request](https://github.com/mailgun/mailgun-mcp-server/pulls) or open an [Issue](https://github.com/mailgun/mailgun-mcp-server/issues).\n","readmeFilename":"README.md"}