OpenCode does not provide one built-in MCP tool that generates video, PDFs, and images. It connects to external MCP servers, and the server or provider supplies the tools and media-generation capabilities. Which formats you can create—and how—depends on the particular server you configure. The official OpenCode documentation reviewed here does not identify a single server verified to create all three, so this guide explains the connection model and the important distinction between generating a file and attaching it for a model to inspect.
What OpenCode does—and what the MCP server does
OpenCode can connect an agent to external Model Context Protocol (MCP) servers. OpenCode handles the connection and makes a server’s exposed tools available to the session; the server or its underlying provider performs the operation. That means “generate an image,” “render a PDF,” and “make a video” are capabilities of a specific connected service, not a general promise of OpenCode itself. See the OpenCode MCP server documentation.
Before following a generation recipe, verify the chosen server’s current tool names, accepted inputs, output format, credential requirements, provider limits, and costs in that server’s own documentation. The OpenCode documentation establishes how to connect MCP servers, but does not establish a named server or verified recipe for generating all three media types.
Keep two workflows separate
- Generate or manipulate media: invoke a tool provided by an external MCP server, provider, or ordinary file-processing program.
- Let a model inspect an existing file: attach or otherwise provide that file through an OpenCode interface. The documented V2 prompt path supports certain image formats, not arbitrary media binaries.
A server may create a PDF or video successfully without OpenCode being able to pass that binary directly into a later model request. Those are separate capabilities.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →#1 Best Overall
Connect a local or remote MCP server
OpenCode’s V2 configuration places MCP servers under mcp.servers. A local server is launched as a command and communicates over MCP stdio. A remote server uses MCP Streamable HTTP and an absolute URL. The exact fields beyond these basics depend on the server and the current OpenCode configuration schema; use the versioned documentation when translating its examples into your configuration.
Local server: command over stdio
A local configuration specifies the server command and can include a working directory and environment variables. The following is a shape-only example, not a working media-generation server: replace the command and arguments with those documented by the server you select.
{
"mcp": {
"servers": {
"media-tool": {
"type": "local",
"command": ["REPLACE_WITH_SERVER_COMMAND", "REPLACE_WITH_ARGUMENT"],
"environment": {
"MEDIA_API_KEY": "${MEDIA_API_KEY}"
}
}
}
}
}
Set MEDIA_API_KEY in the environment OpenCode inherits before starting it. Do not replace the placeholder with a real secret in a checked-in project configuration. Confirm whether the chosen server expects an environment variable, command-line argument, or another credential method.
Remote server: Streamable HTTP
A remote configuration uses the server’s absolute endpoint URL. If it requires headers, keep secret values in environment variables and follow the current OpenCode schema for referencing them. The URL and header names are server-specific; do not guess them.
{
"mcp": {
"servers": {
"media-tool": {
"type": "remote",
"url": "https://REPLACE_WITH_DOCUMENTED_SERVER_ENDPOINT",
"headers": {
"Authorization": "Bearer ${MEDIA_API_KEY}"
}
}
}
}
}
This is also a schematic example, not a real endpoint. OpenCode’s remote OAuth support is enabled by default unless disabled. Its documented flow includes authorization-server discovery, PKCE, token refresh, and dynamic client registration when supported by the server. If the remote service instead authenticates with an API key or header credential, the docs show disabling OAuth and using a header; consult the current configuration reference for the exact setting name and syntax.
Inspect tools and permissions after connecting
Use a concise server name such as media-tool, then inspect which tools the connection actually exposes. OpenCode normalizes tool names and prefixes them with the server name. MCP prompts can appear as named commands. Depending on the setup, tools may be exposed directly or through Code Mode; permissions can hide or deny a tool without disconnecting its server. A connected server therefore does not prove that a particular generation tool is available to the current session.
Rank #2
OpenCode documents startup, catalog, and execution timeouts, along with per-server overrides and protocol selection. These settings are version-sensitive. If server discovery or a long-running generation call times out, consult the current MCP configuration page before increasing a timeout; changing the client limit cannot fix an unavailable server or a provider-side failure.
How do I generate images with an OpenCode MCP server?
First choose a server whose current documentation explicitly provides image generation and says how results are returned or saved. There is no verified universal OpenCode command or tool name for this operation. After connecting it, ask OpenCode to use the tool the server actually exposes, supply the required prompt and options, and request an output path or format only if that server supports it. Confirm the result exists and opens as the expected file type.
Free tools Windows power users keep installed
One-click scans. No signup required.
For example, a useful request pattern is: “Use the image-generation tool exposed by media-tool to create an image of [subject], using [documented options], and save or return the result as [documented output format].” Replace every bracketed part with options stated in the selected server’s documentation. This phrasing is not a claim that a tool named image-generation exists.
If your actual task is to capture a web page as an image rather than synthesize an illustration, that is a screenshot workflow, not image generation. ScreenshotNeo is a website screenshot API and MCP server: one GET request can return a PNG, JPEG, WebP, or PDF. It is not a general image-generation model.
Can OpenCode generate videos?
It can invoke video-generation tools only if a connected MCP server or provider exposes them and the current session has permission to use them. The OpenCode integration documentation does not establish a built-in video generator or a particular server’s supported duration, aspect ratios, resolution, audio, or export format. Check those details in the chosen provider’s documentation before asking OpenCode to generate a clip.
Video generation may involve a remote provider and its own credentials, limits, wait time, and usage charges. Do not assume that installing an MCP server includes access to a model or that a generated video will be a model-readable attachment in a later OpenCode prompt.
Rank #3
Can I create a PDF from OpenCode?
OpenCode can help orchestrate PDF creation if a connected MCP server exposes a PDF tool, or if you use a separate program that converts suitable source material into PDF. The reviewed OpenCode documentation does not identify a universal PDF-generation tool. Confirm whether the tool creates a PDF from text, HTML, images, or another input, and whether it returns a file, a path, or a link.
If what you need is a PDF record of a website, a page-capture service can be a better fit than a document authoring or media-generation model. ScreenshotNeo offers PDF capture through its screenshot API and MCP tools; its exact options are documented at ScreenshotNeo documentation.
Can OpenCode read an attached PDF or video?
Not as a PDF or video binary through the documented V2 prompt attachment path. OpenCode’s V2 documentation says model-visible inputs include UTF-8 text, directory listings, and PNG, JPEG, GIF, and WebP images. PDF and video binaries are not included in that documented request path. Renaming a file or changing its declared media type does not convert its contents into a supported input. See OpenCode V2 attachment documentation.
Work with PDF pages by exporting images
If the goal is to show page content to a model, export the relevant PDF page or pages to PNG, then attach those images. This gives the model the rendered page appearance, not necessarily the original PDF’s searchable text, links, metadata, or document structure. For text-heavy documents, extracting the text into UTF-8 is another route; check the extracted text for reading order, tables, and omissions before relying on it.
The Tool Desk
Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Work with video by extracting frames or text
The documented attachment path does not pass video binaries to the model. For visual inspection, extract representative frames and provide them as supported images, subject to image and provider limits. For spoken content, produce a transcript as text using a suitable transcription workflow. A set of frames or a transcript is a partial representation: neither automatically conveys the full motion, timing, or audio of the original clip.
Image sizes, normalization, and provider limits
OpenCode’s documented V2 image normalization defaults are automatic resizing enabled, maximum width 2,000 pixels, maximum height 2,000 pixels, and a maximum Base64-encoded size of 5,242,880 bytes. These are configurable positive-integer settings. The built-in read tool recognizes PNG, JPEG, GIF, and WebP by content and reads up to 20 MiB of source image data. When resizing is enabled, aspect ratio is preserved and a smaller output may be encoded as PNG or JPEG. If resizing is disabled and configured limits are exceeded, processing fails. See OpenCode image documentation.
Rank #4
These OpenCode-side values do not guarantee acceptance by a model provider. The provider and model can impose their own format, dimensions, image-count, and size limits. The desktop file picker documents a 20 MiB total-selection limit; other interfaces may apply lower client-side limits. Treat all of these as V2 documentation details, not universal limits for every client, model, or future release.
Or skip the browser setup
If the task is capturing a web page, use ScreenshotNeo’s one-call API instead of installing a browser automation stack. It can remove cookie/consent banners, newsletter popups, and chat widgets before capture; bot checks, blank pages, and failed loads are not billed. It also has an MCP server for AI agents, including Claude, Cursor, and other MCP clients.
Recommended Free Tools
cURL example, saving a page as WebP:
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
See the ScreenshotNeo API documentation for authentication and options. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Troubleshooting
The server connects, but there is no image, video, or PDF tool
Connection only makes available what the server exposes. Check the server’s current tool catalog, server logs, and OpenCode permissions. Confirm that the tool is not hidden or denied, and that you have connected the server documented for the required format.
Authentication fails
Check that the credential is present in the environment OpenCode inherited, that the variable name matches the server’s instructions, and that the key is valid for the selected provider. For OAuth, confirm that the server supports the documented authorization flow. Avoid pasting secrets into a project file or prompt.
A PDF or video attachment is ignored or rejected
The documented V2 prompt path does not include PDF or video binaries. Export PDF pages to PNG or convert usable content to UTF-8 text; for video, extract frames or provide a transcript. Changing the extension or MIME label alone does not solve unsupported input.
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchAn image is too large or the provider rejects it
Try a smaller supported image and keep the documented OpenCode normalization settings in mind. If resizing is disabled, exceeding configured limits causes processing failure. If OpenCode accepts the image but the model provider rejects it, reduce dimensions, file size, or the number of images in line with that provider’s limits.
Best Value
A generation call times out or returns no file
Check the server and provider logs, whether the provider reports a failed or still-running job, and whether the tool returns a path or link rather than embedding file bytes. OpenCode’s execution timeout may need a server-specific adjustment for long jobs, but a longer timeout will not fix a provider error, invalid credentials, or a missing output.
Choose a generation server carefully
Because capabilities belong to the external service, compare candidate servers on evidence from their own current documentation rather than assuming that “MCP” implies a common feature set. Check:
- Whether the server actually creates each required format: video, PDF, and/or image.
- Accepted inputs, returned output type, quality controls, and whether outputs are saved locally or hosted remotely.
- Whether processing is local or sent to a remote provider, and what credentials and permissions are required.
- Provider limits, documented usage costs, job duration, and recovery behavior for failed calls.
- Setup and maintenance requirements, including protocol compatibility and any configuration-specific timeouts.
OpenCode also has a separate headless HTTP server mode. Its serve command exposes an OpenAPI 3.1 specification and endpoints for configuration, provider listing, MCP status, and dynamically adding MCP servers. This is useful for automating OpenCode itself; it is not a media-generation server. See OpenCode server documentation.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Frequently Asked Questions
Does installing an MCP server give me access to its image or video model for free?
Not necessarily. Access, credentials, usage limits, and any provider charges depend on the server and underlying service; check their current terms and documentation.
Can I attach a generated PNG and ask OpenCode to inspect it?
The documented V2 path supports PNG images, but successful attachment does not guarantee acceptance by the selected model provider, which can impose separate limits.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




