{"_id":"@humanform/mcp","_rev":"5-a6a3e4bf3c219f81118c7d10833e41e9","name":"@humanform/mcp","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.0":{"name":"@humanform/mcp","version":"0.1.0","license":"MIT","_id":"@humanform/mcp@0.1.0","maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"homepage":"https://github.com/dougkilby/humanform-api#readme","bugs":{"url":"https://github.com/dougkilby/humanform-api/issues"},"bin":{"humanform-mcp":"dist/index.js"},"dist":{"shasum":"d8e45cb86cb95e6fa23a55e614596b11d4359d7b","tarball":"https://registry.npmjs.org/@humanform/mcp/-/mcp-0.1.0.tgz","fileCount":22,"integrity":"sha512-G0aJEYLf74mtHby154pPLSSNqwYXnPzLXRYKn3Lvx6LUHyepB6FuTTGLiLCgwwPrv/WL0DWORGPDeDX5ZCDPzw==","signatures":[{"sig":"MEQCIFfH2oM6yYr4Jy1dr1hcq8zDcpg1pvryvPUYJIA2xXA9AiA7nc7BB6H44JXBnZQ1BjglzDA7nVYppAXlkmxKnZI3ag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28986},"type":"module","engines":{"node":">=20"},"gitHead":"8247e51ddda5e0fb32d3cb37fec238efe9c33c05","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:smoke":"tsx scripts/smoke-test.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"fieldwork-design","email":"hello@fieldwork.design"},"repository":{"url":"git+https://github.com/dougkilby/humanform-api.git","type":"git","directory":"apps/mcp"},"_npmVersion":"11.4.2","description":"Model Context Protocol server for the Humanform anthropometric prediction API","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.0_1783271492837_0.6163976185620414","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@humanform/mcp","version":"0.1.1","license":"MIT","_id":"@humanform/mcp@0.1.1","maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"homepage":"https://github.com/dougkilby/humanform-api#readme","bugs":{"url":"https://github.com/dougkilby/humanform-api/issues"},"bin":{"humanform-mcp":"dist/index.js"},"dist":{"shasum":"e86139f9a4c0ba3c13e8c6d7c479cc59ca444a09","tarball":"https://registry.npmjs.org/@humanform/mcp/-/mcp-0.1.1.tgz","fileCount":22,"integrity":"sha512-L1l6pqIQ+853y0YpxPAHLRguNUCVS8pqYCm/gQEU4EkJ6xzOmuR/CrnPOpyiE3Y42QV4EwnA/+YMW8y+EH6sUA==","signatures":[{"sig":"MEQCIDd8WpYBABb/wS9pP5XF8hmm+wPW9B96Ndw0tPf5X0nxAiALqIl1mUB+0mWoozF8dQpfMs4Nsok3gL7D8u65nROKZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29404},"type":"module","engines":{"node":">=20"},"gitHead":"1458ddeb909e85bc37a0249a0619cdfc319c927b","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:smoke":"tsx scripts/smoke-test.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"fieldwork-design","email":"hello@fieldwork.design"},"repository":{"url":"git+https://github.com/dougkilby/humanform-api.git","type":"git","directory":"apps/mcp"},"_npmVersion":"11.4.2","description":"Model Context Protocol server for the Humanform anthropometric prediction API","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.1_1783271702357_0.4320143074211227","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@humanform/mcp","version":"0.1.2","license":"MIT","_id":"@humanform/mcp@0.1.2","maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"homepage":"https://humanform.app","bin":{"humanform-mcp":"dist/index.js"},"dist":{"shasum":"56fea562e0543bee850673d42e41a3ee82dbdfe2","tarball":"https://registry.npmjs.org/@humanform/mcp/-/mcp-0.1.2.tgz","fileCount":22,"integrity":"sha512-BlCHY4nDUaLOoWrBhj6cOy7Mhg7q6F2jVpdaUaWRSkXtzsGjbkFYI2KLl7VNkgqCThzuKOkiwR12bGVOe046sA==","signatures":[{"sig":"MEQCIBR18B3E0gNE/gJ3EvJ5sO36GK2Yr7SuHVfYzHdc+mIAAiB9e9GCIqQRnr7Tm4phTxS/FUh8g6mwHRBj7wUV2/MWRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29306},"type":"module","engines":{"node":">=20"},"gitHead":"1458ddeb909e85bc37a0249a0619cdfc319c927b","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:smoke":"tsx scripts/smoke-test.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"fieldwork-design","email":"hello@fieldwork.design"},"_npmVersion":"11.4.2","description":"Model Context Protocol server for the Humanform anthropometric prediction API","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.2_1783271896670_0.7815730454957275","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@humanform/mcp","version":"0.1.3","license":"MIT","_id":"@humanform/mcp@0.1.3","maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"homepage":"https://humanform.app","bin":{"humanform-mcp":"dist/index.js"},"dist":{"shasum":"59e458f74c89e59f109f2cf24bed6b2b304bfacc","tarball":"https://registry.npmjs.org/@humanform/mcp/-/mcp-0.1.3.tgz","fileCount":22,"integrity":"sha512-dBqrVP17WI6OAl2jkBpkHKknv7sw4QZ2WHXaXD/Ad7hLmhtXRZBdvD5QC4CsfpBjVPtK+XCj3r0v1pataisQzQ==","signatures":[{"sig":"MEUCIDoLc0eTDZ/tSKVCbkzYPtsqGswVSLDuh0mOwDfqRisPAiEAnKX3WeJYDxaiwdKaEN+V68h1h1ziYLLILIDoswyumkU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29340},"type":"module","engines":{"node":">=20"},"gitHead":"9b3d7e4724d18d5d8d1f8a1712410fd26b58e970","mcpName":"app.humanform/mcp","scripts":{"dev":"tsx src/index.ts","build":"tsc","start":"node dist/index.js","typecheck":"tsc --noEmit","test:smoke":"tsx scripts/smoke-test.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"fieldwork-design","email":"hello@fieldwork.design"},"_npmVersion":"11.4.2","description":"Model Context Protocol server for the Humanform anthropometric prediction API","directories":{},"_nodeVersion":"24.3.0","dependencies":{"zod":"^3.25.76","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","typescript":"^5.8.3","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/mcp_0.1.3_1783272752890_0.2360889692533119","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@humanform/mcp","version":"0.1.4","mcpName":"app.humanform/mcp","description":"Model Context Protocol server for the Humanform anthropometric prediction API","type":"module","license":"MIT","homepage":"https://humanform.app","bin":{"humanform-mcp":"dist/index.js"},"scripts":{"build":"tsc","prepublishOnly":"npm run build","typecheck":"tsc --noEmit","start":"node dist/index.js","dev":"tsx src/index.ts","test:smoke":"tsx scripts/smoke-test.ts"},"engines":{"node":">=20"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","zod":"^3.25.76"},"devDependencies":{"@types/node":"^22.15.21","tsx":"^4.19.4","typescript":"^5.8.3"},"_id":"@humanform/mcp@0.1.4","gitHead":"e5384e03ad562f58e89ccc7f4cc1f8b64cacfca4","_nodeVersion":"24.3.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-qSrET+xB8235KyYzFkNJtQnrTGmBy0E4uGGE00anOEn6jawM5PBfv4nAVRjsawy7nKdlENuXrioQTWcrsKsijQ==","shasum":"eb7f2afba950a58da33ef9f3e7cea95d90e0af6f","tarball":"https://registry.npmjs.org/@humanform/mcp/-/mcp-0.1.4.tgz","fileCount":22,"unpackedSize":54919,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHPXNXN3SFdpNIGZMuKc+9T05LgFSC/SE0+tuBm8ipDjAiEAkWIVfn5ndsws9vd9jCeuuQe+5UfUccQjVTDZTm0xzpw="}]},"_npmUser":{"name":"fieldwork-design","email":"hello@fieldwork.design"},"directories":{},"maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp_0.1.4_1783450722103_0.8604482232720454"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-05T17:11:32.626Z","modified":"2026-07-07T18:58:42.370Z","0.1.0":"2026-07-05T17:11:32.976Z","0.1.1":"2026-07-05T17:15:02.500Z","0.1.2":"2026-07-05T17:18:16.811Z","0.1.3":"2026-07-05T17:32:33.025Z","0.1.4":"2026-07-07T18:58:42.265Z"},"license":"MIT","homepage":"https://humanform.app","description":"Model Context Protocol server for the Humanform anthropometric prediction API","maintainers":[{"name":"fieldwork-design","email":"hello@fieldwork.design"}],"readme":"# Humanform MCP server\n\nStdio MCP server that exposes Humanform API tools to Claude Desktop, Cursor, and other MCP clients.\n\n## Setup\n\n1. Install (optional if you use `npx` in your MCP config):\n\n```bash\nnpm install @humanform/mcp\n```\n\n2. Set your API key from the [Humanform dashboard](https://dashboard.humanform.app):\n\n```bash\nexport HUMANFORM_API_KEY=\"hf_live_...\"\n```\n\nOptional: override the API base URL (defaults to `https://api.humanform.app`):\n\n```bash\nexport HUMANFORM_API_URL=\"https://api.humanform.app\"\n```\n\n3. Add to your MCP client config (Cursor example):\n\n```json\n{\n  \"mcpServers\": {\n    \"humanform\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@humanform/mcp\"],\n      \"env\": {\n        \"HUMANFORM_API_KEY\": \"hf_live_...\"\n      }\n    }\n  }\n}\n```\n\nIf you installed globally or locally, you can use `\"command\": \"humanform-mcp\"` instead of `npx`.\n\n## Tools\n\n| Tool | API | Description |\n|------|-----|-------------|\n| `predict_measurement` | `POST /v1/predict` | Forward lookup: percentile → measurement value |\n| `percentile_lookup` | `POST /v1/percentile-lookup` | Reverse lookup: measured value → percentile |\n| `list_measurements` | `GET /v1/public/measurements` | All supported measurement names and body groups |\n| `list_countries` | `GET /v1/countries` | Supported country codes and labels |\n\nAPI errors (401, 402, 404, 422, 429, etc.) are returned as MCP tool errors with the original `error` and `message` fields from the API.\n\n## Manual testing with MCP Inspector\n\n```bash\nHUMANFORM_API_KEY=\"hf_live_...\" npx @modelcontextprotocol/inspector npx -y @humanform/mcp\n```\n\nSuggested checks:\n\n- `list_measurements` and `list_countries` (no credit cost)\n- `predict_measurement` with valid inputs (e.g. Stature, Male, 30, 50, US, cm)\n- `percentile_lookup` with a measured value (e.g. PoplitealHeight, Female, 34, US, cm, 43.1)\n- Invalid API key (expect 401)\n- Unknown measurement name (expect MCP input validation or API validation_error)\n- Free tier exhausted (expect 402 free_tier_exhausted if applicable)\n\n## Local development\n\nFor contributors working in the [humanform-api](https://github.com/dougkilby/humanform-api) monorepo:\n\n```bash\npnpm --filter @humanform/mcp build\npnpm --filter @humanform/mcp test:smoke\n```\n\nSmoke test and MCP Inspector against a local build:\n\n```bash\npnpm --filter @humanform/mcp build\nHUMANFORM_API_KEY=\"hf_live_...\" pnpm --filter @humanform/mcp test:smoke\nHUMANFORM_API_KEY=\"hf_live_...\" npx @modelcontextprotocol/inspector node apps/mcp/dist/index.js\n```\n","readmeFilename":"README.md"}