{"_id":"mcp-api-doc-generator","_rev":"11-437206818a60c7cc3475f10c7e62466f","name":"mcp-api-doc-generator","dist-tags":{"latest":"1.1.4"},"versions":{"1.1.1":{"name":"mcp-api-doc-generator","version":"1.1.1","keywords":["mcp","api","documentation","openapi","swagger","rest","endpoints","sdk","codegen"],"license":"MIT","_id":"mcp-api-doc-generator@1.1.1","maintainers":[{"name":"aivp","email":"wasuppeople3@gmail.com"}],"bin":{"api-doc-generator":"dist/index.js"},"dist":{"shasum":"12a9ae28a02af8e730a2eb65bcf80478fb2db4d4","tarball":"https://registry.npmjs.org/mcp-api-doc-generator/-/mcp-api-doc-generator-1.1.1.tgz","fileCount":35,"integrity":"sha512-i8gaxFRgbQIc3lYHJCDo4jvKjBHSoQLUpYbD8ZHz6yL5Tdbynd7KYEj37IdiB5zOgvo8qQ2ahNEo9KdiJrq4EA==","signatures":[{"sig":"MEUCIQDpreLXyHabgyYYBU9HMUDkb+BC48EeaRS8FjEmkQoaPQIgb1K2KCo9MowL99c7Xhi8QNM9RpCjP7IW2shQzfr+r1E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":123586},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"4c2db3d7214a1ecbb45e5c3d246105a0288cd2ea","scripts":{"dev":"tsc --watch","build":"tsc && chmod 755 dist/index.js","start":"node dist/index.js","start:sse":"node dist/index.js --sse","prepublishOnly":"npm run build"},"_npmUser":{"name":"aivp","email":"wasuppeople3@gmail.com"},"_npmVersion":"11.11.0","description":"MCP server for generating API documentation — OpenAPI 3.1 specs, endpoint docs, TypeScript SDKs, validation, and test suites","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0","express":"^4.21.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-api-doc-generator_1.1.1_1774963720617_0.7370881711780986","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"mcp-api-doc-generator","version":"1.1.3","keywords":["mcp","api","documentation","openapi","swagger","rest","endpoints","sdk","codegen"],"license":"MIT","_id":"mcp-api-doc-generator@1.1.3","maintainers":[{"name":"aivp","email":"wasuppeople3@gmail.com"}],"bin":{"api-doc-generator":"dist/index.js"},"dist":{"shasum":"6fa484fc082d78bc40dadea855c69e1f93ea5cbd","tarball":"https://registry.npmjs.org/mcp-api-doc-generator/-/mcp-api-doc-generator-1.1.3.tgz","fileCount":24,"integrity":"sha512-L/gCPQ3KgpV6ZebnHsVMlyPlQay4DoU0QoW1GDct8EYCx+/Kse37VJmU6Uey1Fm1Z4UT85HrKSKi52Leq0uTDQ==","signatures":[{"sig":"MEUCIQC+8BFyf9P/WK+7fpukxBE1eJfUlQs2xLU8Rw47rWTnQgIgc6Gt7ej/qr+PIM5UqsNdvz/SQdX47hoO5QDqW9F2jxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118403},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"90f4c3072f2309527d7163ea89461f69604894e2","scripts":{"dev":"tsc --watch","build":"tsc && chmod 755 dist/index.js","start":"node dist/index.js","start:sse":"node dist/index.js --sse","prepublishOnly":"npm run build"},"_npmUser":{"name":"aivp","email":"wasuppeople3@gmail.com"},"_npmVersion":"11.11.0","description":"MCP server for generating API documentation — OpenAPI 3.1 specs, endpoint docs, TypeScript SDKs, validation, and test suites","directories":{},"_nodeVersion":"24.14.1","dependencies":{"zod":"^3.25.0","express":"^4.21.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^22.0.0","@types/express":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-api-doc-generator_1.1.3_1775025187944_0.4398455263766128","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"mcp-api-doc-generator","version":"1.1.4","description":"MCP server for generating API documentation — OpenAPI 3.1 specs, endpoint docs, TypeScript SDKs, validation, and test suites","mcpName":"io.github.vpatser1/mcp-api-doc-generator","repository":{"type":"git","url":"git+https://github.com/vpatser1/mcp-servers.git","directory":"api-doc-generator"},"homepage":"https://aivp-mcp.vercel.app","type":"module","main":"dist/index.js","bin":{"api-doc-generator":"dist/index.js"},"scripts":{"build":"tsc && chmod 755 dist/index.js","start":"node dist/index.js","start:sse":"node dist/index.js --sse","dev":"tsc --watch","prepublishOnly":"npm run build"},"keywords":["mcp","api","documentation","openapi","swagger","rest","endpoints","sdk","codegen"],"license":"MIT","dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","express":"^4.21.0","zod":"^3.25.0"},"devDependencies":{"@types/express":"^5.0.0","@types/node":"^22.0.0","typescript":"^5.7.0"},"engines":{"node":">=18.0.0"},"gitHead":"31655a90ad0cac3d56211a1e7a88dccaaef73640","types":"./dist/index.d.ts","_id":"mcp-api-doc-generator@1.1.4","bugs":{"url":"https://github.com/vpatser1/mcp-servers/issues"},"_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-W64jrlnplWhrhKOe5hrz30ppYhiB5sCX8gwmU64Uo36XqoRqV/c+gzsAP0Iqfud0CxeeTsBBL+jq/vW57bhZmw==","shasum":"f9b06546020017911db1dd01d8e7a46a555cf2f7","tarball":"https://registry.npmjs.org/mcp-api-doc-generator/-/mcp-api-doc-generator-1.1.4.tgz","fileCount":24,"unpackedSize":126067,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGPvExhg4pA3xV7eUxMaL/LqFZzp1jto2/XIIXuLYVyBAiEAkQn07g5sM5pBIYBNTJiec6MTrN/IMJ82b/q0dpRkPUY="}]},"_npmUser":{"name":"aivp","email":"wasuppeople3@gmail.com"},"directories":{},"maintainers":[{"name":"aivp","email":"wasuppeople3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-api-doc-generator_1.1.4_1785828907626_0.31273218225521715"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-31T11:25:12.394Z","modified":"2026-08-04T07:35:07.946Z","1.0.0":"2026-03-31T11:25:12.658Z","1.0.1":"2026-03-31T12:41:48.989Z","1.1.0":"2026-03-31T12:59:13.053Z","1.1.1":"2026-03-31T13:28:40.758Z","1.1.2":"2026-04-01T06:26:47.313Z","1.1.3":"2026-04-01T06:33:08.103Z","1.1.4":"2026-08-04T07:35:07.776Z"},"license":"MIT","keywords":["mcp","api","documentation","openapi","swagger","rest","endpoints","sdk","codegen"],"description":"MCP server for generating API documentation — OpenAPI 3.1 specs, endpoint docs, TypeScript SDKs, validation, and test suites","maintainers":[{"name":"aivp","email":"wasuppeople3@gmail.com"}],"readme":"# API Doc Generator MCP Server\n\nDev tools MCP server for generating API documentation. Produces OpenAPI 3.1 specs, endpoint docs with code examples, TypeScript SDKs, API validation reports, and test suites -- all from simple endpoint definitions.\n\n## Pricing\n\n| Plan | Price | Includes |\n|------|-------|----------|\n| **Basic** | $10/mo | generate_openapi, document_endpoint, validate_api — [Buy →](https://buy.stripe.com/8x228j2Q24E4bjdbZJgIo0k) |\n| **Pro** | $20/mo | All tools: generate_openapi, document_endpoint, generate_sdk, validate_api, generate_tests — [Buy →](https://buy.stripe.com/eVqdR1gGS6McgDx6FpgIo0l) |\n\nFree trial: 3 calls total (shared across all tools), no credit card. License keys are emailed instantly after checkout. More info: [aivp-mcp.vercel.app](https://aivp-mcp.vercel.app)\n\n## Tools\n\n### `generate_openapi`\n\nGenerate an OpenAPI 3.1 specification from endpoint definitions. Outputs YAML or JSON with:\n- Paths, parameters, and operations\n- `$ref` schemas in `components/schemas` for reusable models\n- Security schemes (Bearer JWT, API Key, Basic)\n- Server URLs, tags, and grouping\n\n### `document_endpoint`\n\nGenerate detailed Markdown documentation for a single endpoint:\n- Parameter tables with types and descriptions\n- Request/response examples with realistic data\n- Error response documentation (400, 401, 403, 404, 500)\n- cURL command example\n- JavaScript (fetch) code example\n- Python (requests) code example\n\n### `generate_sdk`\n\nGenerate a TypeScript SDK client from endpoint definitions:\n- Typed interfaces for all request/response models\n- Client class with a method per endpoint\n- `ApiError` class with status helpers (`isNotFound()`, `isUnauthorized()`, etc.)\n- `withRetry()` helper for exponential backoff on 5xx/429\n- Authentication wrappers: `BearerAuth`, `ApiKeyAuth`, `BasicAuth`\n- Timeout and abort signal support\n\n### `validate_api`\n\nValidate an OpenAPI spec (YAML or JSON):\n- Schema correctness (required fields, valid methods)\n- Missing descriptions and documentation\n- Inconsistent naming conventions (kebab-case vs snake_case vs camelCase)\n- Missing error responses\n- Security scheme completeness\n- Returns issues categorized as errors/warnings/suggestions with specific fix suggestions\n\n### `generate_tests`\n\nGenerate test suites from endpoint definitions:\n- Happy path tests\n- Validation tests (missing required fields)\n- Edge case tests (empty strings, null values, extra fields)\n- Authentication tests (401 without auth)\n- HTTP method tests (wrong method rejection)\n- Response structure checks\n- Mock data generator functions\n- Output as Jest or Vitest test files\n\n## Installation\n\n> **Note:** the npm package is **`mcp-api-doc-generator`** (not the bare name `api-doc-generator`).\n\nNo install step needed — run straight from npm:\n\n```bash\nnpx -y mcp-api-doc-generator\n```\n\nOr install globally:\n\n```bash\nnpm install -g mcp-api-doc-generator\n```\n\n**Free trial: 3 calls total (shared across all tools), no credit card.** Buy a license at the links in [Pricing](#pricing) — your key is emailed instantly. Activate it with the `LICENSE_KEY` environment variable.\n\n## Usage\n\n### Stdio (default)\n\n```bash\nnpx -y mcp-api-doc-generator\n```\n\n### SSE\n\n```bash\nnpx -y mcp-api-doc-generator --sse\n# Listens on http://127.0.0.1:3000 by default\n# Set PORT env var to change\n```\n\n### Claude Desktop Configuration\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"api-doc-generator\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-api-doc-generator\"],\n      \"env\": { \"LICENSE_KEY\": \"<your license key — omit for free trial>\" }\n    }\n  }\n}\n```\n\n## Examples\n\n### Generate OpenAPI spec\n\n```json\n{\n  \"tool\": \"generate_openapi\",\n  \"arguments\": {\n    \"endpoints\": [\n      {\n        \"method\": \"GET\",\n        \"path\": \"/users\",\n        \"description\": \"List all users\",\n        \"parameters\": [\n          { \"name\": \"page\", \"in\": \"query\", \"type\": \"integer\", \"description\": \"Page number\" },\n          { \"name\": \"limit\", \"in\": \"query\", \"type\": \"integer\", \"description\": \"Items per page\" }\n        ],\n        \"response\": {\n          \"status\": 200,\n          \"type\": \"object\",\n          \"properties\": {\n            \"users\": { \"type\": \"array\", \"description\": \"List of users\" },\n            \"total\": { \"type\": \"integer\", \"description\": \"Total count\" }\n          }\n        }\n      },\n      {\n        \"method\": \"POST\",\n        \"path\": \"/users\",\n        \"description\": \"Create a new user\",\n        \"request_body\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"name\": { \"type\": \"string\", \"description\": \"User name\" },\n            \"email\": { \"type\": \"string\", \"description\": \"User email\" }\n          },\n          \"required\": [\"name\", \"email\"]\n        },\n        \"response\": {\n          \"status\": 201,\n          \"type\": \"object\",\n          \"properties\": {\n            \"id\": { \"type\": \"string\", \"description\": \"User ID\" },\n            \"name\": { \"type\": \"string\", \"description\": \"User name\" },\n            \"email\": { \"type\": \"string\", \"description\": \"User email\" }\n          }\n        },\n        \"auth_type\": \"bearer\"\n      }\n    ],\n    \"info\": {\n      \"title\": \"User Service API\",\n      \"version\": \"1.0.0\",\n      \"description\": \"API for managing users\"\n    }\n  }\n}\n```\n\n### Generate TypeScript SDK\n\n```json\n{\n  \"tool\": \"generate_sdk\",\n  \"arguments\": {\n    \"endpoints\": [\n      {\n        \"method\": \"GET\",\n        \"path\": \"/users/{id}\",\n        \"name\": \"getUser\",\n        \"description\": \"Get a user by ID\",\n        \"parameters\": [\n          { \"name\": \"id\", \"in\": \"path\", \"type\": \"string\", \"required\": true, \"description\": \"User ID\" }\n        ],\n        \"response\": {\n          \"status\": 200,\n          \"type\": \"object\",\n          \"properties\": {\n            \"id\": { \"type\": \"string\" },\n            \"name\": { \"type\": \"string\" },\n            \"email\": { \"type\": \"string\" }\n          }\n        },\n        \"auth_type\": \"bearer\"\n      }\n    ],\n    \"base_url\": \"https://api.myapp.com\"\n  }\n}\n```\n\n### Validate an OpenAPI spec\n\n```json\n{\n  \"tool\": \"validate_api\",\n  \"arguments\": {\n    \"spec\": \"{ \\\"openapi\\\": \\\"3.1.0\\\", \\\"info\\\": { \\\"title\\\": \\\"My API\\\", \\\"version\\\": \\\"1.0.0\\\" }, \\\"paths\\\": { \\\"/users/{id}\\\": { \\\"get\\\": { \\\"summary\\\": \\\"Get user\\\", \\\"responses\\\": { \\\"200\\\": { \\\"description\\\": \\\"OK\\\" } } } } } }\"\n  }\n}\n```\n\n## Development\n\n```bash\nnpm run dev  # Watch mode\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","homepage":"https://aivp-mcp.vercel.app","repository":{"type":"git","url":"git+https://github.com/vpatser1/mcp-servers.git","directory":"api-doc-generator"},"bugs":{"url":"https://github.com/vpatser1/mcp-servers/issues"}}