MCP Photo
This MCP server allows agents to list official ID photo presets for France and Canada, calculate printable sheet layouts, and generate standalone HTML code for printing ID photo sheets at actual size. It validates grid constraints against paper margins and supports various paper formats like A4 and Letter.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp-photo.custom-digital-services.com/mcpWhat you can do with it
- List official ID photo presets and paper formats
- Calculate grid dimensions for printable photo sheets
- Generate standalone HTML for printing ID photos
Source and maintenance
Protocol and capabilities
- Server
- mcp-photo 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Tools
3 advertised
list_photo_presets
List the supported ID-photo document presets (France and Canada, with exact millimetre sizes, head-height bands, background rules and official sources), the printable paper formats, the standard grid layouts and usage notes. Takes no parameters.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}plan_photo_sheet
Compute the layout of an ID-photo print sheet without rendering it: resolves the photo size from the preset (or custom millimetres), counts the photos, and checks whether the grid fits the printable area of the chosen paper. Returns a JSON plan with ok, photo/needed/usable dimensions and a message; ok is false (never an error) when the grid does not fit.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cols": {
"type": "integer",
"default": 4,
"maximum": 6,
"minimum": 1
},
"rows": {
"type": "integer",
"default": 3,
"maximum": 6,
"minimum": 1
},
"gapMm": {
"type": "number",
"default": 0,
"maximum": 8,
"minimum": 0
},
"paper": {
"enum": [
"A4",
"A5",
"10x15",
"Letter"
],
"type": "string",
"default": "A4"
},
"preset": {
"enum": [
"fr-std",
"ca-passport",
"ca-pr",
"ca-citizenship",
"ca-visa",
"custom"
],
"type": "string",
"default": "fr-std"
},
"marginMm": {
"type": "number",
"default": 5,
"maximum": 20,
"minimum": 0
},
"customWidthMm": {
"type": "number",
"maximum": 100,
"minimum": 20
},
"customHeightMm": {
"$ref": "#/properties/customWidthMm"
}
},
"additionalProperties": false
}render_photo_sheet_html
Render a self-contained, printable HTML sheet tiling one ID photo at real physical size across a cols x rows grid on the chosen paper, with optional cut guides and image framing (zoom/offset). Pass the photo as an inline base64 data URL (image/jpeg or image/png); without one, the sheet prints sized placeholders. If the grid does not fit the paper, the tool returns a structured error with the exact needed and usable dimensions and renders nothing. WARNING: a base64 image payload is large and is echoed back inside the returned HTML, so it consumes a lot of the calling LLM client's context window; resize/compress the image (small JPEG, 3 MB decoded max) before calling, and prefer plan_photo_sheet when you only need the geometry.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"cols": {
"type": "integer",
"default": 4,
"maximum": 6,
"minimum": 1
},
"rows": {
"type": "integer",
"default": 3,
"maximum": 6,
"minimum": 1
},
"zoom": {
"type": "number",
"default": 1,
"maximum": 4,
"minimum": 1
},
"gapMm": {
"type": "number",
"default": 0,
"maximum": 8,
"minimum": 0
},
"paper": {
"enum": [
"A4",
"A5",
"10x15",
"Letter"
],
"type": "string",
"default": "A4"
},
"preset": {
"enum": [
"fr-std",
"ca-passport",
"ca-pr",
"ca-citizenship",
"ca-visa",
"custom"
],
"type": "string",
"default": "fr-std"
},
"marginMm": {
"type": "number",
"default": 5,
"maximum": 20,
"minimum": 0
},
"cutGuides": {
"type": "boolean",
"default": true
},
"offsetXPct": {
"type": "number",
"default": 0,
"maximum": 80,
"minimum": -80
},
"offsetYPct": {
"type": "number",
"default": 0,
"maximum": 80,
"minimum": -80
},
"imageDataUrl": {
"type": "string"
},
"customWidthMm": {
"type": "number",
"maximum": 100,
"minimum": 20
},
"customHeightMm": {
"$ref": "#/properties/customWidthMm"
}
},
"additionalProperties": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1121 ms
- 95th percentile latency
- 1121 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1121 ms · metadata changed · 3 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http mcp-photo https://mcp-photo.custom-digital-services.com/mcpCodex
codex mcp add mcp-photo --url https://mcp-photo.custom-digital-services.com/mcpCursor
{
"mcpServers": {
"mcp-photo": {
"url": "https://mcp-photo.custom-digital-services.com/mcp"
}
}
}Cline
{
"mcpServers": {
"mcp-photo": {
"type": "streamableHttp",
"url": "https://mcp-photo.custom-digital-services.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"mcp-photo": {
"type": "http",
"url": "https://mcp-photo.custom-digital-services.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http mcp-photo https://mcp-photo.custom-digital-services.com/mcpClaude Desktop
{
"mcpServers": {
"mcp-photo": {
"url": "https://mcp-photo.custom-digital-services.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"mcp-photo": {
"serverUrl": "https://mcp-photo.custom-digital-services.com/mcp"
}
}
}Let your agent find its tools
Find servers like MCP Photo from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run MCP Photo?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.