iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more
PDF4me uses one MCP server command in every supported client: uvx pdf4me-mcp. The part that changes is the configuration schema. Cursor, Claude Desktop, and Windsurf expect an object keyed by mcpServers; VS Code expects servers with type set to stdio; Continue expects an array under mcpServers. Put your unmodified API key in env.API_KEY, save the matching file in the client’s operating-system-specific location, then reload the client and verify that the server and its tools appear.
This guide shows the three JSON shapes, the documented paths for each application, the differences that commonly cause connection failures, and a verification sequence that checks the MCP server before you try a PDF operation.
What do I need before connecting PDF4me?
You need a PDF4me account with an API key and the UV tool installed so that the uvx command is available. UV runs the PDF4me MCP package on demand, so the documented setup does not require a separate global installation of the PDF4me MCP server.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →- Create or access your PDF4me account and copy the API key.
- Install UV using the instructions for your operating system, then confirm that
uvxcan be called from a terminal. - Use the exact server command
uvx pdf4me-mcpin the client configuration. - Keep the key in the configuration’s
envobject under the exact nameAPI_KEY.
PDF4me’s documentation states: “Use the same server command in all clients: uvx pdf4me-mcp.” The command is identical across the five clients in this guide; only the surrounding JSON and file location vary.
#1 Best Overall
Why does one MCP server need three configuration schemas?
MCP clients do not all parse the same configuration contract. The server process and its arguments stay the same, but the top-level property, the container used for named servers, and the transport declaration differ.
| Schema | Clients | Top-level property | Server container | Transport field |
|---|---|---|---|---|
| Object-keyed | Cursor, Claude Desktop, Windsurf | mcpServers |
Object whose key is the server name | Not separately declared in the documented example |
| VS Code | VS Code | servers |
Object whose key is the server name | "type": "stdio" is required in the documented entry |
| Continue array | Continue | mcpServers |
Array of objects, each with a name field |
Not separately declared in the documented example |
A syntactically valid JSON file can still fail if it uses the wrong schema for the client reading it. For example, changing VS Code’s servers property to mcpServers does not automatically make the file a portable configuration, and placing an object where Continue expects an array prevents the entry from being loaded.
What is the correct object-keyed configuration for Cursor, Claude Desktop, and Windsurf?
These three clients use the same object-keyed format. The name pdf4me-mcp is the object key, while command, args, and env describe how the client starts the server.
Free tools Windows power users keep installed
One-click scans. No signup required.
{
"mcpServers": {
"pdf4me-mcp": {
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}
Replace your-api-key-here with the raw key. Do not add a second encoding step or change the variable name. If you already have other MCP servers, add the pdf4me-mcp object as another property inside the existing mcpServers object rather than replacing unrelated entries.
How do I configure Cursor?
Save the object-keyed configuration as ~/.cursor/mcp.json. On Windows, the documented location is %USERPROFILE%\.cursor\mcp.json. After saving, reopen or refresh Cursor and inspect its MCP or tool panel for an entry named pdf4me-mcp.
Cursor should start the command with uvx and pass pdf4me-mcp as its argument. If the server is absent after a reload, check that the filename is exactly mcp.json, that the file is under the expected .cursor directory, and that the JSON has no trailing commas or missing braces.
How do I configure Claude Desktop?
Use the same object-keyed block in Claude Desktop’s configuration file. The documented paths are macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json, and Linux ~/.config/Claude/claude_desktop_config.json.
Recommended Free Tools
Close and relaunch Claude Desktop after editing the file, then check the application’s MCP or connected-tools area. A successful load means the client recognizes pdf4me-mcp; it does not yet prove that an individual PDF request will succeed, so perform a small first action only after the server appears.
How do I configure Windsurf?
Windsurf also uses the object-keyed block. Save it to ~/.codeium/windsurf/mcp_config.json, insert the raw key under env.API_KEY, and restart or refresh Windsurf.
When checking the result, look for the named server pdf4me-mcp in Windsurf’s MCP status or tool inspector. If other server entries are already present, preserve them as sibling properties inside mcpServers; do not convert the object into an array.
How do I configure PDF4me in VS Code?
VS Code’s documented MCP format is different: it uses a top-level servers object, and the PDF4me entry must declare the stdio transport with "type": "stdio".
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →{
"servers": {
"pdf4me-mcp-std": {
"type": "stdio",
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}
The documented user-level path is ~/.config/Code/User/mcp.json on macOS and Linux, and %APPDATA%\Code\User\mcp.json on Windows. VS Code also documents workspace and profile MCP files, including a workspace file at .vscode/mcp.json.
VS Code additionally documents a portable .mcp.json format that uses mcpServers. That portable format is not interchangeable with the VS Code user or workspace servers format shown above. Before copying a snippet, identify which VS Code file type you are editing and follow the schema documented for that file.
- Open the intended user, profile, or workspace MCP file.
- Add the
pdf4me-mcp-stdentry underservers, retaining any existing entries. - Confirm that
typeis exactlystdio,commandisuvx, andargscontainspdf4me-mcp. - Save the file, reload the VS Code window or refresh MCP support, and inspect the available tools.
If the entry is ignored, the most likely schema error is using mcpServers in a file that expects servers, or omitting the required type property.
How do I configure PDF4me in Continue?
Continue uses an array-valued mcpServers property. Each server is a complete object with its own name; the name is not an object key.
{
"mcpServers": [
{
"name": "pdf4me-mcp",
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
]
}
Save the entry in ~/.continue/config.json. If that file already contains other MCP servers, add another object to the mcpServers array and separate objects with commas. Do not wrap the array in another object keyed by pdf4me-mcp; that is the object-keyed schema used by the other three clients.
Reload Continue and use its MCP or tool view to confirm that the server name is visible. A missing entry usually means the file is in the wrong directory, the array syntax is invalid, or the configuration was written using the VS Code servers shape.
Where exactly does the PDF4me API key go?
Put the unmodified key in the env object under the exact variable name API_KEY. In all three schemas, the relevant structure is "env": { "API_KEY": "your-api-key-here" }.
Rank #3
The documented examples do not ask you to Base64-encode the key, prepend a token type, or place it in args. Keep the key value on one line and make sure you replace the example text rather than leaving your-api-key-here in the file. Because each client reads its own configuration, you must add the key to every client in which you want to use PDF4me.
When sharing a configuration for troubleshooting, remove or replace the key first. The JSON structure can be checked without publishing the credential itself.
How do I verify that the MCP server is working?
Verify the server before asking it to perform a PDF task. This separates a launch or configuration problem from an error in a particular PDF operation.
- Open a terminal outside the client and run
uvx pdf4me-mcp. This confirms whether UV can resolve and launch the package independently of the client. - Save the client-specific JSON in the correct path and validate that the file remains well-formed JSON.
- Restart the application or use its MCP refresh command.
- Open the client’s MCP, server, or tool inspector and look for
pdf4me-mcp(orpdf4me-mcp-stdin the VS Code example). - Once the server is listed, trigger a first PDF action and observe whether the client exposes the expected PDF4me tools.
PDF4me’s setup guidance explicitly recommends confirming that the server is running before using it. A server that appears in the inspector has passed the configuration-loading stage; an API or document error after that point belongs to the PDF operation rather than the JSON wiring.
What should I check when the connection fails?
Work from the outside in. The sequence below checks the launcher, file discovery, schema, authentication variable, and client reload in the order that eliminates the most common causes.
1. Test UV and package resolution
Run uvx pdf4me-mcp directly in a terminal. If the command cannot be found, install UV or correct the terminal’s PATH before changing the client JSON. On Windows, if uvx is not on PATH, use the full UV executable path in the configuration’s command field, following the path shown in the official setup guidance.
2. Confirm the file path and filename
Check the operating system and client against the documented path table. A correct JSON file in a similarly named directory is invisible to the client. For VS Code, also determine whether you intended a user, profile, workspace, or portable .mcp.json file; each context can use a different documented format.
3. Match the top-level property
Use mcpServers for Cursor, Claude Desktop, Windsurf, and Continue, but remember that Continue’s value is an array while the other three use an object. Use servers for the VS Code format shown in this guide.
4. Match the container shape
In an object-keyed file, the server name appears as a key: "pdf4me-mcp": { ... }. In Continue, the name appears inside an array item: { "name": "pdf4me-mcp", ... }. Mixing these forms produces valid-looking but unusable configuration.
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 reinstallCrashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRank #4
5. Check VS Code’s transport declaration
For the VS Code servers format, confirm that the PDF4me entry includes "type": "stdio". Do not assume that a configuration copied from Cursor, Claude Desktop, or Windsurf will work unchanged in this file.
6. Check the authentication field
Verify the spelling and capitalization of API_KEY, ensure the value is the raw key, and confirm that the key is inside env. A key placed at the top level, in args, or under another variable name is not the documented configuration.
7. Reload and inspect again
Restart or refresh the client after every configuration change. Then inspect its loaded MCP servers rather than testing repeatedly through a PDF prompt. If the server still does not appear, return to the path and schema checks before investigating the PDF request itself.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.How do the five clients differ at a glance?
| Client | Documented file location | Top-level key | Server naming | Special point |
|---|---|---|---|---|
| Cursor | ~/.cursor/mcp.json; Windows %USERPROFILE%\.cursor\mcp.json |
mcpServers |
Object key | Use the object-keyed schema |
| VS Code | ~/.config/Code/User/mcp.json on macOS/Linux; %APPDATA%\Code\User\mcp.json on Windows; workspace .vscode/mcp.json is also documented |
servers |
Object key | Entry requires type: "stdio" |
| Claude Desktop | macOS ~/Library/Application Support/Claude/claude_desktop_config.json; Windows %APPDATA%\Claude\claude_desktop_config.json; Linux ~/.config/Claude/claude_desktop_config.json |
mcpServers |
Object key | Use the object-keyed schema |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
mcpServers |
Object key | Use the object-keyed schema |
| Continue | ~/.continue/config.json |
mcpServers |
Array item with a name field |
Do not use an object keyed by the server name |
These locations and schemas are version-sensitive. If a client’s current documentation changes its path or configuration format, follow that current client documentation for the file you are editing while retaining the PDF4me command and environment-variable conventions described here.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteWhat is the practical rule for choosing a schema?
Choose the schema based on the file format your client expects, not on the MCP server itself. The command, argument, and API-key variable remain constant; the parser-facing wrapper is what changes.
- Choose the object-keyed
mcpServersformat for Cursor, Claude Desktop, or Windsurf. - Choose VS Code’s
serversformat and includetype: "stdio"when editing its documented user, profile, or workspace MCP configuration. - Choose Continue’s array-valued
mcpServersformat and put the server name in anameproperty.
Once the server is visible in the client inspector, test a small PDF action. That workflow confirms both halves of the setup without confusing a schema problem with an API or document-processing problem.
Frequently Asked Questions
Can I use the same PDF4me API key in more than one client?
Each client has its own configuration file, so the key must be entered separately wherever you want to use PDF4me. The documented format permits the same raw key value in each client’s env.API_KEY field, but editing one client’s file does not update the others.
Does uvx pdf4me-mcp install a permanent PDF4me server?
No separate global PDF4me MCP installation is required in the documented setup. UV uses uvx to launch the package from the client configuration, so the client starts the command when it needs the server.
Why does my JSON look valid but the client still shows no tools?
JSON validity only proves that the file can be parsed. The client may still be reading a different path, expecting another top-level property, requiring VS Code’s stdio declaration, or expecting Continue’s array rather than an object; check the client and file context before changing the PDF request.
Should I edit VS Code’s portable .mcp.json or its user MCP file?
That depends on where you want the server available and which VS Code configuration context you are using. VS Code documents both a portable .mcp.json format using mcpServers and user, profile, or workspace files using the servers format, so identify the target context first instead of copying one schema blindly.
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.

