pictostl
Image to STL converter for 3D printing. Upload, preview, download. 2 free credits after verification.
Documentation
pictostl-mcp
Local stdio MCP server for pictostl.com. Generation runs on pictostl.com — this package uploads photos, starts 3D jobs, and writes GLB or STL files on the machine that hosts the MCP server.
Results are AI-reconstructed meshes for visualization and 3D printing experiments. They are not engineering drawings.
This is a local stdio MCP server distributed from its GitHub repository. pictostl.com does not host a remote MCP HTTP endpoint.
Architecture and data flow
MCP client → local pictostl-mcp process → pictostl.com API
← generation status and GLB
MCP client ← local GLB/STL file ←
The MCP process runs locally and communicates with https://pictostl.com over HTTPS. Images, generation parameters, and the API key are sent to pictostl.com to upload inputs, create jobs, and retrieve results. GLB-to-STL conversion and final file writing happen locally on the machine running the MCP server.
There is no hosted PicToSTL MCP endpoint. MCP clients start this package locally over stdio; the local process then calls the hosted PicToSTL API.
Get an API key
By using the API or this MCP server you agree to the Terms of Service.
Website browser generation is separate from MCP. MCP always uses an API key.
Install from GitHub
Requires Node.js 20 or newer. The command below installs the repository through npm's Git support and runs its committed JavaScript build. It does not require a published npm package or a local TypeScript compiler.
Claude / Cursor config
{
"mcpServers": {
"pictostl": {
"command": "npx",
"args": [
"-y",
"--package=github:qduoduo-hwh/pictostl-mcp",
"pictostl-mcp"
],
"env": {
"PICTOSTL_API_KEY": "ps_live_..."
}
}
}
}
Set PICTOSTL_API_KEY to a live key from https://pictostl.com/settings/api-keys.
Optional: PICTOSTL_API_BASE (default https://pictostl.com) for a local website.
Keep the API key in your MCP client's secret or user-level configuration. Do not commit a live key to source control.
For a pinned installation, append a Git tag or commit after the repository name, for example github:qduoduo-hwh/pictostl-mcp#v0.1.0.
Local development
git clone https://github.com/qduoduo-hwh/pictostl-mcp.git
cd pictostl-mcp
corepack enable
pnpm install --frozen-lockfile
pnpm build
Then configure the MCP client to run node with the absolute path to dist/index.js as its first argument.
Tools
Seven MCP tools:
| Tool | Purpose |
|---|---|
list_generation_options | Quality, texture, multi-view rules, and credit costs |
upload_image | Upload a local file or HTTPS URL; returns assetId |
generate_model | Start an async 3D job (sends clientRequestId even if you omit it) |
get_task | Fetch a generation by task id; optional waitSeconds (max 60) |
list_my_generations | List recent generations for this API key |
get_account | Remaining credits and Pro / Ultra paid-credit status |
download_model | Write original GLB, or a local binary STL, to a path |
Typical flow: upload_image → generate_model → get_task (repeat with the same task id if it takes more than 60 seconds) → download_model with that task id.
Do not pass an upload assetId to get_task or download_model.
download_model default is format=stl, longest edge 100 mm, converted locally from the original GLB (not the website preview mesh). STL has geometry only — no color or textures. format=glb writes the original file unchanged.
Reuse clientRequestId from a previous generate_model result when retrying the same job.
Contributing
Improve tool descriptions so agents call the right tool with the right fields. Do not ask for internal fal prompts or provider payloads.
License
MIT