MCPサーバー

Frenchie

io.github.Lab94/frenchie-skill

このMCPでできること

Processes uploaded documents, PDFs, images, audio, and video into Markdown through extraction, OCR, and transcription, and generates images from text prompts.

extract_to_markdown
Extract to Markdown
Extract structured documents (.docx, .xlsx, .csv, .tsv, .pptx) into Markdown through Frenchie. stdio mode auto-saves the result to .frenchie/<name>/result.md; HTTP mode returns inline Markdown.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'file_path': {'type': 'string', 'minLength': 1, 'description': 'Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead.'}, 'uploaded_file_reference': {'type': 'string', 'minLength': 1, 'description': 'Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'jobId': {'type': 'string', 'minLength': 1}, 'result': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'markdown'}, 'pages': {'type': 'integer', 'minimum': 0, 'description': 'Number of pages processed — OCR only'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path from output root to the saved result.md'}, 'markdown': {'type': 'string', 'description': 'HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)'}, 'wordCount': {'type': 'integer', 'minimum': 0, 'description': 'Approximate word count of the markdown'}, 'imageCount': {'type': 'integer', 'minimum': 0, 'description': 'Number of embedded images saved alongside result.md'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'format', 'mimeType'], 'properties': {'kind': {'type': 'string', 'const': 'image'}, 'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string'}, 'style': {'type': 'string'}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path to the persisted image file'}, 'imageUrl': {'type': 'string', 'format': 'uri', 'description': 'HTTP mode: presigned HTTPS link (~30 min expiry)'}, 'mimeType': {'type': 'string'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string'}}, 'additionalProperties': False}]}, 'status': {'enum': ['done', 'processing'], 'type': 'string'}, 'creditsUsed': {'type': 'number', 'minimum': 0}, 'resultExpiresAt': {'type': 'string', 'format': 'date-time'}, 'estimatedCompletion': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
fetch_result_file
Fetch Result File (HTTP)
Get a temporary download URL for a result file from OCR/transcription output. Use this to download images referenced as frenchie-result: in the result markdown.
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['object_key'], 'properties': {'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'object_key': {'type': 'string', 'minLength': 1, 'description': 'The object key parsed from a frenchie-result:<objectKey> reference in the result markdown.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['download_url', 'filename', 'expires_in'], 'properties': {'filename': {'type': 'string', 'description': 'Suggested filename derived from the original object key.'}, 'expires_in': {'type': 'integer', 'description': 'URL expiry in seconds (typically 900).', 'exclusiveMinimum': 0}, 'download_url': {'type': 'string', 'description': 'Temporary HTTPS download URL for the result file.'}}, 'additionalProperties': False}
generate_image
Generate Image
Generate a single image from a text prompt through Frenchie. Required: prompt. Optional: style (free-text style direction), size, quality, format, background. stdio mode auto-saves the image to .frenchie/<slug>/generated.<ext>; HTTP mode returns a presigned imageUrl that the agent should download for the user.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['prompt'], 'properties': {'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string', 'description': 'Optional output size. Defaults to automatic selection.'}, 'style': {'type': 'string', 'maxLength': 500, 'description': "Optional style direction (e.g. 'flat vector, neon palette'). Merged into the generation prompt by Frenchie."}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string', 'description': 'Optional output format. Defaults to png.'}, 'prompt': {'type': 'string', 'maxLength': 3500, 'minLength': 1, 'description': "Required. Plain-language description of the image to generate (e.g. 'poster of a ramen shop at night')."}, 'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'quality': {'enum': ['low', 'medium', 'high', 'auto'], 'type': 'string', 'description': 'Optional output quality.'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string', 'description': 'Optional background. transparent is rejected when format is jpeg.'}, 'output_dir': {'type': 'string', 'minLength': 1, 'description': "Stdio mode only: absolute directory under which .frenchie/<slug>/generated.<ext> is saved. Defaults to the MCP server's process cwd. Recommended: pass your workspace root so the image lands next to your work instead of $HOME."}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'jobId': {'type': 'string', 'minLength': 1}, 'result': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'markdown'}, 'pages': {'type': 'integer', 'minimum': 0, 'description': 'Number of pages processed — OCR only'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path from output root to the saved result.md'}, 'markdown': {'type': 'string', 'description': 'HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)'}, 'wordCount': {'type': 'integer', 'minimum': 0, 'description': 'Approximate word count of the markdown'}, 'imageCount': {'type': 'integer', 'minimum': 0, 'description': 'Number of embedded images saved alongside result.md'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'format', 'mimeType'], 'properties': {'kind': {'type': 'string', 'const': 'image'}, 'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string'}, 'style': {'type': 'string'}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path to the persisted image file'}, 'imageUrl': {'type': 'string', 'format': 'uri', 'description': 'HTTP mode: presigned HTTPS link (~30 min expiry)'}, 'mimeType': {'type': 'string'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string'}}, 'additionalProperties': False}]}, 'status': {'enum': ['done', 'processing'], 'type': 'string'}, 'creditsUsed': {'type': 'number', 'minimum': 0}, 'resultExpiresAt': {'type': 'string', 'format': 'date-time'}, 'estimatedCompletion': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
get_job_result
Get Job Result
Fetch the latest async Frenchie job result
読み取り専用 外部アクセスあり 冪等
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['job_id'], 'properties': {'job_id': {'type': 'string', 'minLength': 1, 'description': "Job ID returned by ocr_to_markdown, transcribe_to_markdown, or generate_image when status was 'processing'."}, 'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'jobId': {'type': 'string', 'minLength': 1}, 'result': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'markdown'}, 'pages': {'type': 'integer', 'minimum': 0, 'description': 'Number of pages processed — OCR only'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path from output root to the saved result.md'}, 'markdown': {'type': 'string', 'description': 'HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)'}, 'wordCount': {'type': 'integer', 'minimum': 0, 'description': 'Approximate word count of the markdown'}, 'imageCount': {'type': 'integer', 'minimum': 0, 'description': 'Number of embedded images saved alongside result.md'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'format', 'mimeType'], 'properties': {'kind': {'type': 'string', 'const': 'image'}, 'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string'}, 'style': {'type': 'string'}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path to the persisted image file'}, 'imageUrl': {'type': 'string', 'format': 'uri', 'description': 'HTTP mode: presigned HTTPS link (~30 min expiry)'}, 'mimeType': {'type': 'string'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string'}}, 'additionalProperties': False}]}, 'status': {'enum': ['done', 'processing'], 'type': 'string'}, 'creditsUsed': {'type': 'number', 'minimum': 0}, 'resultExpiresAt': {'type': 'string', 'format': 'date-time'}, 'estimatedCompletion': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
ocr_to_markdown
OCR to Markdown
Convert PDF/image files into Markdown through Frenchie
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'file_path': {'type': 'string', 'minLength': 1, 'description': 'Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead.'}, 'uploaded_file_reference': {'type': 'string', 'minLength': 1, 'description': 'Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'jobId': {'type': 'string', 'minLength': 1}, 'result': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'markdown'}, 'pages': {'type': 'integer', 'minimum': 0, 'description': 'Number of pages processed — OCR only'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path from output root to the saved result.md'}, 'markdown': {'type': 'string', 'description': 'HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)'}, 'wordCount': {'type': 'integer', 'minimum': 0, 'description': 'Approximate word count of the markdown'}, 'imageCount': {'type': 'integer', 'minimum': 0, 'description': 'Number of embedded images saved alongside result.md'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'format', 'mimeType'], 'properties': {'kind': {'type': 'string', 'const': 'image'}, 'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string'}, 'style': {'type': 'string'}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path to the persisted image file'}, 'imageUrl': {'type': 'string', 'format': 'uri', 'description': 'HTTP mode: presigned HTTPS link (~30 min expiry)'}, 'mimeType': {'type': 'string'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string'}}, 'additionalProperties': False}]}, 'status': {'enum': ['done', 'processing'], 'type': 'string'}, 'creditsUsed': {'type': 'number', 'minimum': 0}, 'resultExpiresAt': {'type': 'string', 'format': 'date-time'}, 'estimatedCompletion': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
transcribe_to_markdown
Transcribe to Markdown
Convert audio/video files into Markdown transcripts through Frenchie. Set language (ISO 639-1 code, e.g. 'th', 'en', 'ja') for better accuracy; omit for auto-detection.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'language': {'type': 'string', 'maxLength': 10, 'minLength': 2, 'description': "Optional ISO 639-1 language code (e.g. 'th', 'en', 'ja') for better accuracy; omit for auto-detection."}, 'file_path': {'type': 'string', 'minLength': 1, 'description': 'Absolute local file path. Stdio transport only — over HTTP, upload via upload_file first and pass uploaded_file_reference instead.'}, 'uploaded_file_reference': {'type': 'string', 'minLength': 1, 'description': 'Object key returned by upload_file. Required for HTTP transport; ignored when file_path is provided in stdio.'}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'jobId': {'type': 'string', 'minLength': 1}, 'result': {'anyOf': [{'type': 'object', 'required': ['kind'], 'properties': {'kind': {'type': 'string', 'const': 'markdown'}, 'pages': {'type': 'integer', 'minimum': 0, 'description': 'Number of pages processed — OCR only'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path from output root to the saved result.md'}, 'markdown': {'type': 'string', 'description': 'HTTP mode: inline markdown. Stdio mode: omitted (read savedTo instead)'}, 'wordCount': {'type': 'integer', 'minimum': 0, 'description': 'Approximate word count of the markdown'}, 'imageCount': {'type': 'integer', 'minimum': 0, 'description': 'Number of embedded images saved alongside result.md'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['kind', 'format', 'mimeType'], 'properties': {'kind': {'type': 'string', 'const': 'image'}, 'size': {'enum': ['1024x1024', '1536x1024', '1024x1536', 'auto'], 'type': 'string'}, 'style': {'type': 'string'}, 'format': {'enum': ['png', 'jpeg', 'webp'], 'type': 'string'}, 'savedTo': {'type': 'string', 'description': 'Stdio mode: relative path to the persisted image file'}, 'imageUrl': {'type': 'string', 'format': 'uri', 'description': 'HTTP mode: presigned HTTPS link (~30 min expiry)'}, 'mimeType': {'type': 'string'}, 'background': {'enum': ['transparent', 'opaque', 'auto'], 'type': 'string'}}, 'additionalProperties': False}]}, 'status': {'enum': ['done', 'processing'], 'type': 'string'}, 'creditsUsed': {'type': 'number', 'minimum': 0}, 'resultExpiresAt': {'type': 'string', 'format': 'date-time'}, 'estimatedCompletion': {'type': 'string', 'format': 'date-time'}}, 'additionalProperties': False}
upload_file
Upload File (HTTP)
Get a presigned upload URL for use with ocr_to_markdown, transcribe_to_markdown, or extract_to_markdown in HTTP mode. After calling this tool, PUT the file to upload_url (with the correct Content-Type header), then pass object_key as uploaded_file_reference to the processing tool.
外部アクセスあり
入力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['filename', 'file_size', 'mime_type'], 'properties': {'api_key': {'type': 'string', 'minLength': 1, 'description': 'Optional Frenchie API key (fr_...). Falls back to the FRENCHIE_API_KEY env var when omitted.'}, 'filename': {'type': 'string', 'maxLength': 255, 'minLength': 1, 'description': "Original filename with extension (e.g. 'report.pdf')."}, 'file_size': {'type': 'integer', 'maximum': 2147483648, 'description': 'File size in bytes.', 'exclusiveMinimum': 0}, 'mime_type': {'type': 'string', 'minLength': 1, 'description': "MIME type (e.g. 'application/pdf', 'audio/mpeg')."}}, 'additionalProperties': False}
出力スキーマ
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['upload_url', 'object_key', 'expires_in'], 'properties': {'expires_in': {'type': 'integer', 'description': 'URL expiry in seconds', 'exclusiveMinimum': 0}, 'object_key': {'type': 'string', 'minLength': 1, 'description': 'Pass this as uploaded_file_reference to ocr_to_markdown, transcribe_to_markdown, or extract_to_markdown'}, 'upload_url': {'type': 'string', 'format': 'uri', 'description': 'Presigned URL — PUT the file here with the correct Content-Type header'}}, 'additionalProperties': False}
追加
fetch_result_file
2026年9月17日12:42
追加
upload_file
2026年9月17日12:42
追加
get_job_result
2026年9月17日12:42
追加
extract_to_markdown
2026年9月17日12:42
追加
generate_image
2026年9月17日12:42
追加
transcribe_to_markdown
2026年9月17日12:42
追加
ocr_to_markdown
2026年9月17日12:42