media-gen-mcp (strato-space/media-gen-mcp) is an MCP server listed on the M8ven Trust Index. It scores 29 out of 100, grade F. It declares 14 tools. No publisher has claimed this listing.

F
Caution
29/100

media-gen-mcp

MCP server for generating and editing images using OpenAI, and creating videos using OpenAI Sora and Google Veo. Enables fetching media from URLs or disk with smart output placement.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

strato-space

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Tool annotations don’t match behaviour
10 read-only tools perform write/delete/exec — openai-images-generate (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); openai-images-edit (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); openai-videos-create (line 257: fs.promises.mkdir(dir, { recursive: true }))
⚠️
Tool descriptions don’t match what handlers do
3 tools describe read intent but their handlers mutate — fetch-images (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); fetch-videos (line 257: fs.promises.mkdir(dir, { recursive: true })); fetch-document (line 257: fs.promises.mkdir(dir, { recursive: true }))
🚨
Known vulnerabilities in dependencies: 1 critical, 2 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
🔐
You'll be asked for 5 credentials: ANTHROPIC_API_KEY, AZURE_OPENAI_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes15 tools · 1 behind config

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

openai-images-generate

Generate images from text prompts using OpenAI gpt-image-1.5 (default) or gpt-image-1. Returns MCP CallToolResult with content[] (ResourceLink or ImageContent based on tool_result param) and structuredContent (OpenAI ImagesResponse format with data[].url, data[].path, or data[].b64_json based on res

openai-images-edit

Edit images (inpainting, outpainting, compositing) from 1 to 16 inputs using OpenAI gpt-image-1.5 (default) or gpt-image-1. Returns MCP CallToolResult with content[] (ResourceLink or ImageContent based on tool_result param) and structuredContent (OpenAI ImagesResponse format with data[].url, data[].

openai-videos-create

Create a video generation job using the OpenAI Videos API. Returns structuredContent with the OpenAI Video job object, and (optionally) downloaded assets as MCP content blocks (tool_result=resource_link|resource).

openai-videos-remix

Create a remix video job from an existing video_id. Returns structuredContent with the OpenAI Video job object, and (optionally) downloaded assets as MCP content blocks (tool_result=resource_link|resource).

openai-videos-list

List video jobs using the OpenAI Videos API. Returns structuredContent with the OpenAI list response shape { data, has_more, last_id }.

openai-videos-retrieve

Retrieve a video job by id using the OpenAI Videos API.

openai-videos-delete

Delete a video job by id using the OpenAI Videos API.

openai-videos-retrieve-content

Retrieve a video asset (video/thumbnail/spritesheet) for a completed job, write it under MEDIA_GEN_DIRS, and return content blocks (tool_result=resource_link|resource).

google-videos-generate

Generate videos using Google GenAI (Veo). Can optionally wait for completion and download generated videos to MEDIA_GEN_DIRS.

google-videos-retrieve-operation

Retrieve the status/result of a Google video generation operation (response_format=url|b64_json controls uri vs videoBytes in structuredContent).

google-videos-retrieve-content

Download generated video content for a completed Google video operation, write it under MEDIA_GEN_DIRS, and return content blocks (tool_result=resource_link|resource).

fetch-images

Fetch and process images from URLs or local file paths. Returns MCP CallToolResult with content[] (ResourceLink or ImageContent based on tool_result param) and structuredContent (OpenAI ImagesResponse format with data[].url, data[].path, or data[].b64_json based on response_format param).

fetch-videos

Fetch videos from URLs or local file paths. Returns MCP CallToolResult with content blocks (tool_result=resource_link|resource) and structuredContent listing resolved files/URLs.

fetch-document

Fetch documents from URLs or local file paths. Downloads remote URLs into MEDIA_GEN_DIRS and returns MCP content blocks as resource_link (default) or embedded resource.

test-imagesbehind config
// known CVEs in dependencies1 critical2 high

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

criticalvitest@3.2.4GHSA-5xrq-8626-4rwp

When Vitest UI server is listening, arbitrary file can be read and executed

high@modelcontextprotocol/sdk@1.24.3GHSA-345p-7cg4-v4c7

@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse

high@modelcontextprotocol/sdk@1.24.3GHSA-8r9q-7v3j-jr4g

Anthropic's MCP TypeScript SDK has a ReDoS vulnerability

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
🔐 secretANTHROPIC_API_KEY
🔐 secretAZURE_OPENAI_API_KEYSet OPENAI_API_KEY (and optionally , AZURE_OPENAI_ENDPOINT, OPENAI_API_VERSION) in the environment of the process that runs node dist/index.js (shell, systemd unit, Docker env, etc.).
configAZURE_OPENAI_DEPLOYMENT
configAZURE_OPENAI_ENDPOINTSet OPENAI_API_KEY (and optionally AZURE_OPENAI_API_KEY, , OPENAI_API_VERSION) in the environment of the process that runs node dist/index.js (shell, systemd unit, Docker env, etc.).
🔐 secretGEMINI_API_KEYGemini Developer API: set (or GOOGLE_API_KEY), or google.api_key in secrets.yaml.
🔐 secretGOOGLE_API_KEYGemini Developer API: set GEMINI_API_KEY (or ), or google.api_key in secrets.yaml.
configGOOGLE_CLOUD_LOCATIONVertex AI: set GOOGLE_GENAI_USE_VERTEXAI=true, GOOGLE_CLOUD_PROJECT, and (or google.vertex_ai. in secrets.yaml).
configGOOGLE_CLOUD_PROJECTVertex AI: set GOOGLE_GENAI_USE_VERTEXAI=true, , and GOOGLE_CLOUD_LOCATION (or google.vertex_ai. in secrets.yaml).
configGOOGLE_GENAI_USE_VERTEXAIVertex AI: set =true, GOOGLE_CLOUD_PROJECT, and GOOGLE_CLOUD_LOCATION (or google.vertex_ai. in secrets.yaml).
configMCP_MAX_CONTENT_BYTESthreshold (default ~50MB via ), the server
configMEDIA_GEN_DIRSAllowed directories: All tools are restricted to paths matching . If unset, defaults to /tmp/media-gen-mcp (or %TEMP%/media-gen-mcp on Windows).
configMEDIA_GEN_MCP_LOG_FORMAT
configMEDIA_GEN_MCP_LOG_LEVEL
configMEDIA_GEN_MCP_LOG_SANITIZE_IMAGES(default: true)
configMEDIA_GEN_MCP_LOG_SANITIZE_KEYS(comma-separated list of field names).
configMEDIA_GEN_MCP_TEST_SAMPLE_DIRTest samples: adds a directory to the allowlist and enables the test-images tool.
configMEDIA_GEN_MCP_URL_PREFIXESFor ChatGPT, use response_format: "url" and configure the first entry as a public HTTPS prefix (for example MEDIA_GEN_MCP_URL_PREFIXES=https://media-gen.example.com/media).
configMEDIA_GEN_URLSRemote reads: HTTP(S) fetches are filtered by patterns. Empty = allow all.
🔐 secretOPENAI_API_KEYPut and other settings into media-gen.env (see .env.sample in this repo).
configOPENAI_API_VERSIONSet OPENAI_API_KEY (and optionally AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, ) in the environment of the process that runs node dist/index.js (shell, systemd unit, Docker env, etc.).
// quality suggestions

Tool annotations match behaviour

10 read-only tools perform write/delete/exec — openai-images-generate (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); openai-images-edit (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); openai-videos-create (line 257: fs.promises.mkdir(dir, { recursive: true }))

Either remove the readOnlyHint:true annotation, or remove the write/delete call from the tool handler.

Descriptions match behaviour

3 tools describe read intent but their handlers mutate — fetch-images (line 1150: fs.promises.writeFile(filePath, Buffer.from(img.b64, "base64"))); fetch-videos (line 257: fs.promises.mkdir(dir, { recursive: true })); fetch-document (line 257: fs.promises.mkdir(dir, { recursive: true }))

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Production dependencies are patched

0 critical, 2 high severity in production deps — @modelcontextprotocol/sdk@1.24.3 (high), @modelcontextprotocol/sdk@1.24.3 (high)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Dev dependencies

1 critical/high in dev-only deps (does not ship to users)

Upgrade dev dependencies when convenient.

Tool description accuracy

3 tools have description/behavior mismatches: fetch-images: description implies read-only but handler writes/deletes/executes; fetch-videos: description implies read-only but handler writes/deletes/executes; fetch-document: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 5 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/strato-space/media-gen-mcp?variant=verified)](https://m8ven.ai/mcp/strato-space/media-gen-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 893feb7b043984924c9d23c5f3face21966c55f7
code hash: 58b1e9c7110eae94fcf341eaceadccde541975d1bc0de362bfa5940e90b4cef4
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client