Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Create or access your PDF4me account and copy the API key.
  • Install UV using the instructions for your operating system, then confirm that uvx can be called from a terminal.
  • Use the exact server command uvx pdf4me-mcp in the client configuration.
  • Keep the key in the configuration’s env object under the exact name API_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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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".

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "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.

  1. Open the intended user, profile, or workspace MCP file.
  2. Add the pdf4me-mcp-std entry under servers, retaining any existing entries.
  3. Confirm that type is exactly stdio, command is uvx, and args contains pdf4me-mcp.
  4. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
{
  "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" }.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

  1. 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.
  2. Save the client-specific JSON in the correct path and validate that the file remains well-formed JSON.
  3. Restart the application or use its MCP refresh command.
  4. Open the client’s MCP, server, or tool inspector and look for pdf4me-mcp (or pdf4me-mcp-std in the VS Code example).
  5. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What 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 mcpServers format for Cursor, Claude Desktop, or Windsurf.
  • Choose VS Code’s servers format and include type: "stdio" when editing its documented user, profile, or workspace MCP configuration.
  • Choose Continue’s array-valued mcpServers format and put the server name in a name property.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.