{"_id":"@curiouser-labs/http-api-mcp-server","_rev":"3-c2863e4e42dc0939833124962c96f9f5","name":"@curiouser-labs/http-api-mcp-server","dist-tags":{"latest":"1.0.101"},"versions":{"1.0.0":{"name":"@curiouser-labs/http-api-mcp-server","version":"1.0.0","keywords":["mcp","model-context-protocol","http","api","rest","testing","postman","ai-agent"],"author":{"name":"Prabhath Madhushan"},"license":"MIT","_id":"@curiouser-labs/http-api-mcp-server@1.0.0","maintainers":[{"name":"prabath1994","email":"prabathmadushan5@gmail.com"}],"homepage":"https://github.com/CuriouserLabs/http-api-mcp-server#readme","bugs":{"url":"https://github.com/CuriouserLabs/http-api-mcp-server/issues"},"bin":{"http-api-mcp-server":"dist/index.js"},"dist":{"shasum":"b085ede43212250f2833a3d1d4b6464529f3ed37","tarball":"https://registry.npmjs.org/@curiouser-labs/http-api-mcp-server/-/http-api-mcp-server-1.0.0.tgz","fileCount":107,"integrity":"sha512-wa52xMJIMB1lUqY+zRe9mOte0RcqgamxjPAXnDajU4gba4TlUatH0eribye3pPhtm7DEKE0AQk62rJAUydYgWg==","signatures":[{"sig":"MEUCIANZpD1LPnTfAT83j0WNnF1jXoxcpE9CcHYlwKHpIrCoAiEA2Bfvep5TyJEU/1oW9Jxj3G53mlDIQPe4audWnaFxOcM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168785},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"5cffe9bdeddf5834af4d50ee7d0b9060f1a43fb5","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc --build","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --ext .ts --fix","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","build:clean":"tsc --build --clean && tsc --build","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"prabath1994","email":"prabathmadushan5@gmail.com"},"repository":{"url":"git+https://github.com/CuriouserLabs/http-api-mcp-server.git","type":"git"},"_npmVersion":"10.9.3","description":"A generic HTTP API MCP Server — test and interact with any REST API from AI agents","directories":{"test":"tests","example":"examples"},"_nodeVersion":"22.19.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","form-data":"^4.0.1","ajv-formats":"^3.0.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^9.0.0","vitest":"^2.0.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^2.0.0","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/http-api-mcp-server_1.0.0_1786558368171_0.6777948705685513","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@curiouser-labs/http-api-mcp-server","version":"1.0.1","keywords":["mcp","model-context-protocol","http","api","rest","testing","postman","ai-agent"],"author":{"name":"Prabhath Madhushan"},"license":"MIT","_id":"@curiouser-labs/http-api-mcp-server@1.0.1","maintainers":[{"name":"prabath1994","email":"prabathmadushan5@gmail.com"}],"homepage":"https://github.com/CuriouserLabs/http-api-mcp-server#readme","bugs":{"url":"https://github.com/CuriouserLabs/http-api-mcp-server/issues"},"bin":{"http-api-mcp-server":"dist/index.js"},"dist":{"shasum":"009da19b5314cfbaa92fec0cc3717b0fd6414338","tarball":"https://registry.npmjs.org/@curiouser-labs/http-api-mcp-server/-/http-api-mcp-server-1.0.1.tgz","fileCount":107,"integrity":"sha512-gUpWjdHHMeB1VxRkE9Wlj5ihY97cxpnFI9ogM1W6MCgfp9JCnc3Ckwg4UhwNxshnrsJuo2N198PjtGONb0LCZA==","signatures":[{"sig":"MEQCIFM9wPk5koK8b9SRQvpeIYwbtef+HwSev5SLXod0w3PVAiAV1n2RSeS8nkT+KrfgMlDcGxWxoGdV+b6N524+5mjq/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168785},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.0.0"},"gitHead":"d827103f457634b87b77c7bbcbeb07c6decb8cf9","scripts":{"dev":"tsx watch src/index.ts","lint":"eslint src tests --ext .ts","test":"vitest run","build":"tsc --build","start":"node dist/index.js","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","lint:fix":"eslint src tests --ext .ts --fix","test:unit":"vitest run tests/unit","typecheck":"tsc --noEmit","test:watch":"vitest","build:clean":"tsc --build --clean && tsc --build","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test:coverage":"vitest run --coverage","test:integration":"vitest run tests/integration"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92cd28d2-0a1c-42cc-81d8-11726f2fe381"}},"repository":{"url":"git+https://github.com/CuriouserLabs/http-api-mcp-server.git","type":"git"},"_npmVersion":"11.5.1","description":"A generic HTTP API MCP Server — test and interact with any REST API from AI agents","directories":{"test":"tests","example":"examples"},"_nodeVersion":"22.14.0","dependencies":{"ajv":"^8.17.1","zod":"^3.23.8","form-data":"^4.0.1","ajv-formats":"^3.0.1","@modelcontextprotocol/sdk":"^1.30.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.16.0","eslint":"^9.0.0","vitest":"^2.0.0","prettier":"^3.3.0","typescript":"^5.5.0","@types/node":"^22.0.0","@vitest/coverage-v8":"^2.0.0","eslint-config-prettier":"^9.0.0","@typescript-eslint/parser":"^8.0.0","@typescript-eslint/eslint-plugin":"^8.0.0"},"_npmOperationalInternal":{"tmp":"tmp/http-api-mcp-server_1.0.1_1786558882458_0.21468404568406219","host":"s3://npm-registry-packages-npm-production"}},"1.0.101":{"name":"@curiouser-labs/http-api-mcp-server","version":"1.0.101","description":"A generic HTTP API MCP Server — test and interact with any REST API from AI agents","type":"module","main":"dist/index.js","bin":{"http-api-mcp-server":"dist/index.js"},"scripts":{"build":"tsc --build","build:clean":"tsc --build --clean && tsc --build","start":"node dist/index.js","dev":"tsx watch src/index.ts","lint":"eslint src tests --ext .ts","lint:fix":"eslint src tests --ext .ts --fix","format":"prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"","format:check":"prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"","test":"vitest run","test:watch":"vitest","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit"},"dependencies":{"@modelcontextprotocol/sdk":"^1.30.0","ajv":"^8.17.1","ajv-formats":"^3.0.1","form-data":"^4.0.1","zod":"^3.23.8"},"devDependencies":{"@types/node":"^22.0.0","@typescript-eslint/eslint-plugin":"^8.0.0","@typescript-eslint/parser":"^8.0.0","@vitest/coverage-v8":"^2.0.0","eslint":"^9.0.0","eslint-config-prettier":"^9.0.0","prettier":"^3.3.0","tsx":"^4.16.0","typescript":"^5.5.0","vitest":"^2.0.0"},"engines":{"node":">=22.0.0"},"keywords":["mcp","model-context-protocol","http","api","rest","testing","postman","ai-agent"],"repository":{"type":"git","url":"git+https://github.com/CuriouserLabs/http-api-mcp-server.git"},"bugs":{"url":"https://github.com/CuriouserLabs/http-api-mcp-server/issues"},"homepage":"https://github.com/CuriouserLabs/http-api-mcp-server#readme","publishConfig":{"access":"public"},"license":"MIT","directories":{"example":"examples","test":"tests"},"author":{"name":"Prabhath Madhushan"},"types":"./dist/index.d.ts","_id":"@curiouser-labs/http-api-mcp-server@1.0.101","gitHead":"99f9a0db0e7e9dcd29224507581cefa776138c8d","_nodeVersion":"22.14.0","_npmVersion":"11.5.1","dist":{"integrity":"sha512-6n/s3RwvTUxtJh9zzqgfBLtYuq2PFspCpttepF5euc73sOyQaL0HxaCa5KaVS7bIdRIAYsasG3WCgdPAxOoLEQ==","shasum":"6bf84df81ebfbb061922d2382f2e2927d72cb68f","tarball":"https://registry.npmjs.org/@curiouser-labs/http-api-mcp-server/-/http-api-mcp-server-1.0.101.tgz","fileCount":107,"unpackedSize":167617,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDzBpjTsc1V448LFqk+Ul2v+tg7UDxHksDTddBODgfiSAIhANj/Ba9EGUGoosXjpv2GtWIa3c6HdbYrsRajqS91Q4DS"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:92cd28d2-0a1c-42cc-81d8-11726f2fe381"}},"maintainers":[{"name":"geeth94","email":"geeth.gsm@gmail.com"},{"name":"prabath1994","email":"prabathmadushan5@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/http-api-mcp-server_1.0.101_1786561077181_0.8694275817069006"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-12T18:12:47.930Z","modified":"2026-08-12T18:57:57.471Z","1.0.0":"2026-08-12T18:12:48.331Z","1.0.1":"2026-08-12T18:21:22.643Z","1.0.101":"2026-08-12T18:57:57.303Z"},"bugs":{"url":"https://github.com/CuriouserLabs/http-api-mcp-server/issues"},"author":{"name":"Prabhath Madhushan"},"license":"MIT","homepage":"https://github.com/CuriouserLabs/http-api-mcp-server#readme","keywords":["mcp","model-context-protocol","http","api","rest","testing","postman","ai-agent"],"repository":{"type":"git","url":"git+https://github.com/CuriouserLabs/http-api-mcp-server.git"},"description":"A generic HTTP API MCP Server — test and interact with any REST API from AI agents","maintainers":[{"name":"geeth94","email":"geeth.gsm@gmail.com"},{"name":"prabath1994","email":"prabathmadushan5@gmail.com"}],"readme":"# HTTP API MCP Server\n\n[![npm version](https://img.shields.io/npm/v/@curiouser-labs/http-api-mcp-server.svg)](https://www.npmjs.com/package/@curiouser-labs/http-api-mcp-server)\n[![Node.js](https://img.shields.io/node/v/@curiouser-labs/http-api-mcp-server.svg)](https://nodejs.org)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nA production-ready **Model Context Protocol (MCP)** server that lets AI agents test and interact with any HTTP/REST API — Postman-style workflows, driven by your assistant.\n\nInstall from npm, add it to Claude Desktop or Cursor, and start calling APIs from chat.\n\n---\n\n## Requirements\n\n- **Node.js** ≥ 22\n- An MCP-compatible client (Claude Desktop, Cursor, Windsurf, etc.)\n\n---\n\n## Quick start\n\n### 1. Install (optional)\n\nGlobal install if you prefer a local binary:\n\n```bash\nnpm install -g @curiouser-labs/http-api-mcp-server\n```\n\nMost users can skip this and use `npx` in the MCP config below.\n\n### 2. Add to your MCP client\n\n#### Claude Desktop\n\nEdit your Claude Desktop config file:\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    \"http-api\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@curiouser-labs/http-api-mcp-server\"],\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop after saving.\n\n#### Cursor\n\nOpen **Cursor Settings → MCP → Add new MCP server**, or edit your MCP config JSON:\n\n```json\n{\n  \"mcpServers\": {\n    \"http-api\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@curiouser-labs/http-api-mcp-server\"],\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\n#### After a global install\n\n```json\n{\n  \"mcpServers\": {\n    \"http-api\": {\n      \"command\": \"http-api-mcp-server\",\n      \"env\": {\n        \"LOG_LEVEL\": \"INFO\"\n      }\n    }\n  }\n}\n```\n\n### 3. Try it\n\nAsk your agent something like:\n\n> Use the `request` tool to GET `https://httpbin.org/get` and summarize the response.\n\n---\n\n## What you can do\n\n| Tool | Description |\n| --- | --- |\n| `request` | Execute GET / POST / PUT / PATCH / DELETE / HEAD / OPTIONS |\n| `healthCheck` | Check whether an endpoint is reachable |\n| `download` | Download a file to the local filesystem |\n| `uploadFile` | Upload files via `multipart/form-data` |\n| `authHelper` | Build Bearer, Basic, API Key, or custom auth headers |\n| `saveEnvironment` | Save reusable environments (local / staging / prod) |\n| `listEnvironments` | List saved environments |\n| `importOpenAPI` | Import OpenAPI 3.x or Swagger 2.x specs |\n| `validateResponse` | Assert status, schema, fields, and timing |\n| `runCollection` | Run request sequences with variable chaining |\n| `generateCurl` | Generate an equivalent cURL command (no execution) |\n| `exportRequest` | Export as cURL, Postman Collection, or Bruno |\n\n**Also included:** retries with exponential backoff, timeouts, in-memory cookie jar, gzip/Brotli, `{{variable}}` substitution, response extractors for chaining, and stderr-only structured logging (stdout is reserved for MCP).\n\n---\n\n## Example prompts\n\n**Simple GET**\n\n```text\nUse the request tool to GET https://api.github.com/users/octocat and show me the response.\n```\n\n**Save an environment, then call it**\n\n```text\nSave an environment named \"staging\" with baseUrl https://api.example.com\nand a Bearer token. Then GET {{baseUrl}}/health using that environment.\n```\n\n**Run a small collection**\n\n```text\nRun a collection: POST login to extract a token, then GET /me with Authorization: Bearer {{token}}.\n```\n\nMore examples live in [`examples/prompts.md`](examples/prompts.md).\n\n---\n\n## Environment variables\n\n| Variable | Default | Description |\n| --- | --- | --- |\n| `LOG_LEVEL` | `INFO` | `DEBUG`, `INFO`, `WARN`, or `ERROR` |\n\nSaved API environments are stored at `~/.http-api-mcp/environments.json`.\n\n---\n\n## Tool reference\n\n### `request`\n\n```json\n{\n  \"method\": \"POST\",\n  \"url\": \"https://api.example.com/users\",\n  \"headers\": { \"Authorization\": \"Bearer TOKEN\" },\n  \"body\": { \"name\": \"Alice\" },\n  \"timeout\": 10000,\n  \"retries\": 2,\n  \"environmentName\": \"production\"\n}\n```\n\n### `healthCheck`\n\n```json\n{ \"url\": \"https://api.example.com/health\", \"timeout\": 5000 }\n```\n\n### `saveEnvironment`\n\n```json\n{\n  \"name\": \"staging\",\n  \"baseUrl\": \"https://api.myapp.staging.com\",\n  \"defaultHeaders\": { \"X-Api-Version\": \"2024-01\" },\n  \"auth\": { \"type\": \"bearer\", \"token\": \"my-token\" },\n  \"variables\": { \"tenantId\": \"abc123\" }\n}\n```\n\n### `runCollection`\n\n```json\n{\n  \"requests\": [\n    {\n      \"name\": \"Login\",\n      \"method\": \"POST\",\n      \"url\": \"{{baseUrl}}/auth/login\",\n      \"body\": { \"email\": \"user@example.com\", \"password\": \"secret\" },\n      \"extractors\": [{ \"variable\": \"token\", \"jsonPath\": \"data.accessToken\" }]\n    },\n    {\n      \"name\": \"Get Profile\",\n      \"method\": \"GET\",\n      \"url\": \"{{baseUrl}}/me\",\n      \"headers\": { \"Authorization\": \"Bearer {{token}}\" }\n    }\n  ],\n  \"environmentName\": \"staging\",\n  \"stopOnFailure\": true\n}\n```\n\n### `importOpenAPI`\n\n```json\n{ \"source\": \"https://petstore.swagger.io/v2/swagger.json\" }\n```\n\n```json\n{ \"source\": \"/path/to/openapi.json\" }\n```\n\n### `authHelper`\n\n```json\n{ \"authType\": \"bearer\", \"token\": \"my-jwt-token\" }\n```\n\n```json\n{ \"authType\": \"basic\", \"username\": \"admin\", \"password\": \"secret\" }\n```\n\n```json\n{\n  \"authType\": \"apiKey\",\n  \"apiKeyName\": \"X-API-Key\",\n  \"apiKeyValue\": \"key123\",\n  \"apiKeyLocation\": \"header\"\n}\n```\n\n### `validateResponse`\n\n```json\n{\n  \"response\": { \"statusCode\": 200, \"isJson\": true, \"body\": \"{\\\"id\\\":1}\" },\n  \"expectedStatusCode\": 200,\n  \"requiredFields\": [\"id\", \"email\"],\n  \"maxResponseTimeMs\": 500,\n  \"jsonSchema\": { \"type\": \"object\", \"required\": [\"id\"] }\n}\n```\n\n---\n\n## Run from the command line\n\n```bash\n# Via npx (no install)\nnpx -y @curiouser-labs/http-api-mcp-server\n\n# After global install\nhttp-api-mcp-server\n```\n\nThe server uses **stdio** transport: MCP JSON-RPC on stdin/stdout. All logs go to **stderr**.\n\n---\n\n## Development\n\nClone the repo if you want to contribute or run from source:\n\n```bash\ngit clone https://github.com/CuriouserLabs/http-api-mcp-server.git\ncd http-api-mcp-server\nnpm install\nnpm run build\nnpm start\n```\n\n| Script | Purpose |\n| --- | --- |\n| `npm run dev` | Hot-reload with `tsx watch` |\n| `npm test` | Run all tests |\n| `npm run test:unit` | Unit tests only (no network) |\n| `npm run test:integration` | Integration tests (needs network) |\n| `npm run lint` / `format` / `typecheck` | Code quality |\n\nPoint your MCP client at the local build while developing:\n\n```json\n{\n  \"mcpServers\": {\n    \"http-api\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/http-api-mcp-server/dist/index.js\"]\n    }\n  }\n}\n```\n\n---\n\n## Links\n\n- **npm:** [https://www.npmjs.com/package/@curiouser-labs/http-api-mcp-server](https://www.npmjs.com/package/@curiouser-labs/http-api-mcp-server)\n- **Source:** [https://github.com/CuriouserLabs/http-api-mcp-server](https://github.com/CuriouserLabs/http-api-mcp-server)\n- **Issues:** [https://github.com/CuriouserLabs/http-api-mcp-server/issues](https://github.com/CuriouserLabs/http-api-mcp-server/issues)\n\n---\n\n## License\n\nMIT © [CuriouserLabs](https://github.com/CuriouserLabs)\n","readmeFilename":"README.md"}