mcp-snapotter is an MCP server for SnapOtter, a self-hosted file-processing platform. It exposes SnapOtter’s 243 tools to any MCP-compatible client (Claude Code, Claude Desktop, etc.) through a clean, discoverable interface.

Instead of flooding the model’s context with 243 near-identical tools, it exposes eight generic ones and indexes the OpenAPI spec for discovery:

ToolPurpose
snapotter_list_toolsBrowse/search the catalog by section or keyword
snapotter_describe_toolShow a tool’s documented settings fields
snapotter_run_toolRun one tool on a file; awaits async jobs
snapotter_run_pipelineChain steps server-side in one pass
snapotter_batchOne tool over many files
snapotter_upload_fileAdd a local file to the library
snapotter_list_filesList the SnapOtter library
snapotter_get_fileOne file’s metadata and version history
snapotter_downloadFetch a downloadUrl to disk
snapotter_healthConnectivity check

Settings are discovered at call time from SnapOtter’s validation errors, so the server doesn’t need to model 243 settings schemas. Async tools (54 of them) are handled transparently with SSE-based progress polling.

Written in Python with strict mypy and ruff, MIT licensed.

Written with Claude / oh-my-pi running open models.