{"_id":"@byixlam/apidog-mcp","_rev":"2-ef843035290fc388bae828d966e25984","name":"@byixlam/apidog-mcp","dist-tags":{"latest":"0.0.2"},"versions":{"0.0.1":{"name":"@byixlam/apidog-mcp","version":"0.0.1","_id":"@byixlam/apidog-mcp@0.0.1","maintainers":[{"name":"byixlam","email":"islamtazerout3@gmail.com"}],"bin":{"apidog-mcp":"dist/index.js"},"dist":{"shasum":"ef5465bc11b76443ba0c01f145e8ea68fdf21982","tarball":"https://registry.npmjs.org/@byixlam/apidog-mcp/-/apidog-mcp-0.0.1.tgz","fileCount":14,"integrity":"sha512-aXwHklaY7tha4BNj2MWB/iKfnvgIHJpwiKBbWSW0FcYEmffZW+N3Rjb7GqLdhymrA+Gn/PPf2kf29Py5BKi9FA==","signatures":[{"sig":"MEQCIDcoSYnoXfTC9hoVGFRsb55P6E8jDlS9IkkK8NVMzZ28AiBJv4zOMTA3/hVBh9xSz1S844yb1IfFblnmnx+KGyymLA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93625},"type":"module","engines":{"node":">=20"},"scripts":{"build":"tsc","start":"node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit","prepublishOnly":"npm run build && npm run typecheck"},"_npmUser":{"name":"byixlam","email":"islamtazerout3@gmail.com"},"_npmVersion":"11.13.0","description":"MCP server for navigating and editing Apidog projects through undocumented Apidog APIs. (in development)","directories":{},"_nodeVersion":"25.9.0","dependencies":{"zod":"^3.25.67","yaml":"^2.8.0","fast-json-patch":"^3.1.1","@modelcontextprotocol/sdk":"^1.13.1","@apidevtools/swagger-parser":"^10.1.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.8.3","@types/node":"^24.0.3"},"_npmOperationalInternal":{"tmp":"tmp/apidog-mcp_0.0.1_1781391067745_0.20674582225442295","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@byixlam/apidog-mcp","version":"0.0.2","description":"MCP server for navigating and editing Apidog projects through undocumented Apidog APIs. (in development)","type":"module","bin":{"apidog-mcp":"dist/index.js"},"scripts":{"build":"tsc","prepack":"npm run build","prepublishOnly":"npm run build && npm run typecheck","start":"node dist/index.js","typecheck":"tsc --noEmit"},"dependencies":{"@apidevtools/swagger-parser":"^10.1.1","@modelcontextprotocol/sdk":"^1.13.1","fast-json-patch":"^3.1.1","yaml":"^2.8.0","zod":"^3.25.67"},"devDependencies":{"@types/node":"^24.0.3","typescript":"^5.8.3"},"engines":{"node":">=20"},"gitHead":"9c0ab866428c65c04b8496f052da990991f535bc","_id":"@byixlam/apidog-mcp@0.0.2","_nodeVersion":"24.16.0","_npmVersion":"11.13.0","dist":{"integrity":"sha512-S6K/mIO5JwVILsHKsbLmT0TdYPC8zxc1OWYoZypoCUkg9CH9Tw0gOLhdMzkBbd//2HUws+GhoVBlWP9ThIz11w==","shasum":"18bf79f260fae30289d957083aaf4d540932b501","tarball":"https://registry.npmjs.org/@byixlam/apidog-mcp/-/apidog-mcp-0.0.2.tgz","fileCount":14,"unpackedSize":98265,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICw7lUX/i+ALGA8F7KFFBz1RFmiGyIw8OCsojGT++eriAiAKrZLFP4nIDt8e3jLTYdOuXRVHhpha07QWLSN1fHLjhw=="}]},"_npmUser":{"name":"byixlam","email":"islamtazerout3@gmail.com"},"directories":{},"maintainers":[{"name":"byixlam","email":"islamtazerout3@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/apidog-mcp_0.0.2_1785710302886_0.6574717982675351"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-13T22:51:07.549Z","modified":"2026-08-02T22:38:23.203Z","0.0.1":"2026-06-13T22:51:07.870Z","0.0.2":"2026-08-02T22:38:23.048Z"},"description":"MCP server for navigating and editing Apidog projects through undocumented Apidog APIs. (in development)","maintainers":[{"name":"byixlam","email":"islamtazerout3@gmail.com"}],"readme":"# apidog-mcp\n\n`apidog-mcp` is a stdio MCP server for Apidog. It lets an MCP client such as opencode list projects, inspect API trees, create modules and folders, and add or update requests without configuring every Apidog project by hand.\n\n## Quick start\n\nUse the published package with `npx` from your MCP client configuration.\n\n```json\n{\n  \"mcp\": {\n    \"apidog\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@byixlam/apidog-mcp\"],\n      \"environment\": {\n        \"APIDOG_ACCESS_TOKEN\": \"adgp_xxx\",\n        \"APIDOG_TEAM_ID\": \"679680\"\n      }\n    }\n  }\n}\n```\n\n`APIDOG_ACCESS_TOKEN` is required for Apidog API calls. The server still starts without it, but tools will return a clear setup error until the token is configured and the MCP client is restarted.\n\nOptional environment variables:\n\n- `APIDOG_TEAM_ID`: default team for `apidog_list_team_projects`.\n- `APIDOG_LOCALE`: defaults to `en-US`.\n- `APIDOG_CLIENT_VERSION`: defaults to `2.8.34`.\n\n### Configure a default project\n\nMost tools accept `projectId`. If you do not want to pass it every time, run `apidog_configure_project` once in the workspace:\n\n```json\n{\n  \"projectId\": 1312991,\n  \"branchId\": 0\n}\n```\n\nThis writes `apidog.json` and adds it to `.gitignore`.\n\n## Tools\n\n### Setup and discovery\n\n- `apidog_check_auth`\n- `apidog_configure_project`\n- `apidog_list_user_projects`\n- `apidog_list_user_teams`\n- `apidog_list_team_projects`\n\n### Project navigation\n\n- `apidog_list_modules`\n- `apidog_list_environments`\n- `apidog_list_api_tree`\n- `apidog_list_api_detail_folders`\n- `apidog_list_api_responses`\n- `apidog_list_test_case_categories`\n- `apidog_list_test_case_tags`\n- `apidog_list_runners`\n- `apidog_get_http_api`\n\n### Modules\n\n- `apidog_create_module`\n- `apidog_update_module`\n- `apidog_rename_module`\n- `apidog_delete_module`\n\nDelete tools require `confirmDelete: true`.\n\n### Folders\n\n- `apidog_create_api_detail_folder`\n- `apidog_rename_api_detail_folder`\n- `apidog_delete_api_detail_folder`\n\nDelete tools require `confirmDelete: true`.\n\n### Apidog-native requests\n\nThese tools work directly with Apidog HTTP API details.\n\n- `apidog_add_request`\n- `apidog_update_request`\n- `apidog_delete_request`\n- `apidog_create_api_detail`\n- `apidog_update_api_detail`\n- `apidog_delete_api_detail`\n\nUse `apidog_add_request` and `apidog_update_request` for normal request creation and editing. Use the raw `api_detail` tools when you need full control over Apidog-specific fields.\n\nWhen a URL contains path parameters such as `/users/{id}/posts/{postId}`, the request tools automatically create path parameters for `id` and `postId` unless they already exist.\n\n### OpenAPI import/export\n\n- `apidog_export_openapi`\n- `apidog_get_openapi`\n- `apidog_validate_openapi`\n- `apidog_import_openapi`\n- `apidog_add_endpoint`\n- `apidog_update_endpoint`\n- `apidog_upsert_endpoint`\n- `apidog_delete_endpoint`\n- `apidog_patch_openapi`\n\nThe endpoint tools use an export-modify-validate-import flow. Before importing anything, the server validates the OpenAPI document. `apidog_delete_endpoint` requires both `confirmDelete: true` and `deleteUnmatchedResources: true`.\n\n## Common examples\n\n### Create a folder\n\n```json\n{\n  \"moduleId\": 1312066,\n  \"name\": \"Billing\",\n  \"parentId\": 0,\n  \"type\": \"http\"\n}\n```\n\n### Add a request inside a folder\n\n```json\n{\n  \"moduleId\": 1312066,\n  \"folderId\": 9034034,\n  \"name\": \"Get invoice\",\n  \"method\": \"get\",\n  \"path\": \"/invoices/{invoiceId}\",\n  \"status\": \"developing\",\n  \"responses\": [\n    {\n      \"code\": 200,\n      \"name\": \"Success\",\n      \"contentType\": \"json\",\n      \"jsonSchema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"invoiceId\": { \"type\": \"string\" }\n        }\n      },\n      \"itemSchema\": {}\n    }\n  ]\n}\n```\n\n### Add a folder placeholder request\n\nApidog allows a request with an empty path inside a folder. This is useful for drafts.\n\n```json\n{\n  \"moduleId\": 1312066,\n  \"folderId\": 9034034,\n  \"name\": \"Draft request\",\n  \"method\": \"get\",\n  \"path\": \"\"\n}\n```\n\n### Update an endpoint through OpenAPI\n\n```json\n{\n  \"moduleId\": 1312066,\n  \"path\": \"/invoices/{invoiceId}\",\n  \"method\": \"get\",\n  \"patch\": {\n    \"summary\": \"Get invoice by ID\",\n    \"responses\": {\n      \"200\": {\n        \"description\": \"Invoice returned\"\n      }\n    }\n  }\n}\n```\n\n### Delete a request\n\n```json\n{\n  \"apiDetailId\": 37814603,\n  \"confirmDelete\": true\n}\n```\n\n## How it works\n\nThe server talks to `https://api.apidog.com` and sends the access token as a Bearer token. Project-scoped calls include the project ID and branch ID headers when available.\n\nThere are two editing paths:\n\n1. **Direct Apidog tools** for modules, folders, and Apidog-native request details.\n2. **OpenAPI tools** for contract-style endpoint changes using Apidog import/export.\n\nUse direct request tools when you care about Apidog-specific fields. Use OpenAPI tools when you want to make portable API contract changes.\n\n## Local development\n\nInstall dependencies and build:\n\n```sh\nnpm install\nnpm run build\n```\n\nRun checks:\n\n```sh\nnpm run typecheck\nnpm pack --dry-run\n```\n\nStart locally:\n\n```sh\nAPIDOG_ACCESS_TOKEN=adgp_xxx node dist/index.js\n```\n\nThe server uses stdio, so it does not print a startup banner.\n\n## Testing safely\n\nWhen testing write tools against a real Apidog project:\n\n1. Use a disposable project or copy.\n2. Create a temporary module with a unique name.\n3. Create folders and requests only inside that module.\n4. Delete the temporary module when finished.\n5. List modules and the API tree to confirm cleanup.\n\nAvoid testing delete tools against existing project resources.\n\n## Notes\n\nThis project uses both documented Apidog import/export APIs and endpoints used by the Apidog web app. Those web-app endpoints can change without notice.\n\nKeep destructive tools behind `confirmDelete: true`, and do not store session cookies or other browser session values in this repository.\n\n## Donations\n\nUSDT BEP20: `0x589aC54204D9BfBe7E455E09b5fcbD4231C0F55b`\n","readmeFilename":"README.md"}