Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
PDF4me connects to Cursor, VS Code, Claude Desktop, Windsurf and Continue through the same MCP process: uvx pdf4me-mcp. What changes between clients is the JSON wrapper around that command. Cursor, Claude Desktop and Windsurf use an object keyed by mcpServers; VS Code uses servers with type: "stdio"; Continue uses an array under mcpServers. Install UV, create a PDF4me account and API key, place the raw key in env.API_KEY, save the matching file in the client’s expected location, then reload the client and verify that the server and its tools appear before attempting a PDF operation.
What do you need before configuring PDF4me MCP?
You need two prerequisites: a PDF4me account with an API key and UV installed so the uvx launcher is available. UV runs the PDF4me MCP package on demand, so you do not need to install a separate global PDF4me MCP application.
As an Amazon Associate I earn from qualifying purchases.
- UV: install it for your operating system and confirm that
uvxis available in the shell used by your client. - PDF4me credentials: sign in to PDF4me, create or retrieve an API key, and keep the key available as plain text while editing the configuration.
- A client configuration file: use the path and schema for the specific client and operating system.
The documented server command is identical in every supported client:
Use the same server command in all clients:
uvx pdf4me-mcp.
In JSON, that command is represented by "command": "uvx" and "args": ["pdf4me-mcp"]. Do not put the entire command in one string or replace the package name with a different executable.
Why does one MCP server need three different JSON schemas?
MCP clients agree on the server process but not on the configuration format. The differences are structural rather than PDF4me-specific: the top-level property can be mcpServers or servers, server names can be object keys or fields, and VS Code requires an explicit stdio transport declaration in its documented format.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →| Clients | Top-level property | Container | Transport field |
|---|---|---|---|
| Cursor, Claude Desktop, Windsurf | mcpServers |
Object keyed by server name | Not added in the example |
| VS Code | servers |
Object keyed by server name | type: "stdio" |
| Continue | mcpServers |
Array; each entry has a name field |
Not added in the example |
Because these wrappers are not interchangeable, copying a working Cursor entry directly into VS Code or Continue can make the client ignore the server even though the command and key are correct.
How do I configure Cursor, Claude Desktop or Windsurf?
These three clients use the object-keyed mcpServers schema. Create or edit the client’s JSON file and add the following entry, replacing only the placeholder key:
{
"mcpServers": {
"pdf4me-mcp": {
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}
Cursor
Save the configuration as ~/.cursor/mcp.json. On Windows, the documented equivalent is %USERPROFILE%.cursormcp.json. Keep the existing JSON entries if you already use other MCP servers; add pdf4me-mcp as another property inside mcpServers, separated with a comma.
Claude Desktop
Use the platform-specific Claude Desktop configuration file:
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errors- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%Claudeclaude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
After saving, fully quit and reopen Claude Desktop so it reloads the MCP configuration.
Windsurf
Save the same object-keyed schema in ~/.codeium/windsurf/mcp_config.json. Refresh or restart Windsurf, then use its MCP or tool panel to confirm that pdf4me-mcp is listed.
How do I configure PDF4me in VS Code?
VS Code’s documented MCP format uses servers and requires type: "stdio" for this process:
{
"servers": {
"pdf4me-mcp-std": {
"type": "stdio",
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
}
}
The server name is arbitrary; pdf4me-mcp-std is simply the name used in the example. The important distinctions are the top-level servers property and the explicit stdio type.
Choose the VS Code file location
- macOS or Linux user configuration:
~/.config/Code/User/mcp.json - Windows user configuration:
%APPDATA%CodeUsermcp.json - Workspace configuration:
.vscode/mcp.jsoninside the project
VS Code also documents workspace and profile MCP files, plus a separate portable .mcp.json format that uses mcpServers. Do not assume that portable format can be pasted into the VS Code servers file. Follow the format associated with the file you selected and check the current VS Code documentation if the UI has changed.
Rank #2
- Keep track of everything from attendance to test scores
- Spiral bound
- Measures 8-1/2" x 11"
How do I configure PDF4me in Continue?
Continue places named MCP servers in an array. Each item therefore needs its own name field rather than using the name as an object key:
{
"mcpServers": [
{
"name": "pdf4me-mcp",
"command": "uvx",
"args": ["pdf4me-mcp"],
"env": {
"API_KEY": "your-api-key-here"
}
}
]
}
Save this configuration in ~/.continue/config.json. If the file already contains other Continue settings, merge the mcpServers array into the existing JSON rather than replacing unrelated settings. Every array item must be separated by a comma, and the file must remain valid JSON.
Where exactly does the PDF4me API key go?
Put the unmodified key in the environment object under the exact, case-sensitive name API_KEY:
"env": {
"API_KEY": "your-api-key-here"
}
The examples do not require Base64 encoding, quotes inside the key, or a Bearer prefix. Replace your-api-key-here with the raw value issued by PDF4me. Treat the file like a credential store: restrict access to your user account, avoid committing it to a repository, and replace the key if it is exposed.
Do not rename the variable to PDF4ME_API_KEY, APIKEY or another variation unless the client and server documentation explicitly changes. The PDF4me MCP configuration expects API_KEY.
How do I verify that the server is working?
Verify the MCP connection before debugging a PDF task. This separates package-launch problems from PDF input, permissions or operation-specific problems.
- Check UV independently. In a terminal, run
uvx pdf4me-mcp. This confirms that UV can resolve and launch the package in the environment available to you. Stop it with the normal interrupt for your shell if it remains attached to the terminal. - Validate the JSON. Check commas, braces, quotation marks and the correct top-level property. A single syntax error can prevent the client from loading every server in the file.
- Reload the client. Restart the desktop application or refresh the MCP view in the editor. Configuration changes are not always picked up by an already-running process.
- Inspect the MCP or tool panel. Look for the server name you configured:
pdf4me-mcpin the object and Continue examples, orpdf4me-mcp-stdin the VS Code example. - Run a first PDF action. Once the server is shown as connected and its tools are visible, try a small, non-critical PDF operation. If the server is connected but the action fails, troubleshoot the PDF request separately from MCP startup.
On Windows, a client launched as a desktop application may not inherit the same PATH as your terminal. If the client reports that uvx cannot be found, set command to the full path of the user-local UV executable shown by the official UV/PDF4me installation guidance, then reload the client.
What should I check when the client does not see PDF4me?
Work through the checks in this order; each one targets a different failure mode.
1. UV cannot launch the package
Run uvx pdf4me-mcp outside the client. If that command fails, repair UV installation, network access or the shell path before editing MCP JSON. A client cannot start a package that the underlying launcher cannot resolve.
2. The file is in the wrong place
Confirm the exact filename and operating-system path. A correctly formatted file in a neighboring directory has the same effect as no configuration. Pay special attention to hidden folders such as .cursor, .codeium and .continue.
3. The schema belongs to another client
Check the top-level property first. Cursor, Claude Desktop and Windsurf expect object-keyed mcpServers; VS Code’s documented format expects servers; Continue expects an array under mcpServers. In Continue, ensure name is inside each array item rather than used as an object key.
Outdated 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 matchWindows 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 reinstallRank #3
4. VS Code is missing the transport declaration
For the VS Code servers format, confirm that the entry contains "type": "stdio". Without it, the client may not treat the command as a standard-input/standard-output MCP process.
5. Authentication is malformed
Check that the environment property is spelled API_KEY and that its value is the raw PDF4me key. Remove accidental prefixes, line breaks or surrounding text copied from a credential page.
6. The client has stale state
Restart the application or refresh its MCP server view, then inspect the loaded-server list again. If the server appears only after a restart, the earlier problem was configuration reload timing rather than the JSON schema.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Which configuration should you choose for a team or multiple projects?
Choose the client’s native format first; portability comes from keeping the command and environment contract the same, not from forcing every client to share one file.
Free tools Windows power users keep installed
One-click scans. No signup required.
| Situation | Practical choice | Reason |
|---|---|---|
| One desktop client on one computer | Use its user-level file | The server is available across projects without duplicating configuration. |
| Different PDF4me settings by VS Code project | Use the documented workspace .vscode/mcp.json |
Workspace scope keeps project-specific configuration with that project. |
| Several developers share a repository | Share a key-free template and supply API_KEY locally |
API credentials should not be committed or copied into source control. |
| Several MCP servers in one file | Add another sibling entry or array item | Preserves existing servers while giving PDF4me its own name and settings. |
Client paths and schemas can change with software releases. If a current client UI offers to generate an MCP configuration, compare its generated structure with the format documented for that client rather than assuming older examples remain valid.
What is the complete setup sequence?
Use this checklist when setting up a new machine or moving the integration to another client.
- Install UV and make sure the
uvxexecutable is available to the client process. - Create or access your PDF4me account and obtain an API key.
- Choose the client-specific file path from the table below.
- Paste the schema that matches the client: object-keyed, VS Code
servers, or Continue’s array. - Set
commandtouvxandargsto["pdf4me-mcp"]. - Set
env.API_KEYto the raw key. - Save valid JSON without exposing the key in source control.
- Restart or refresh the client, inspect its MCP status, and perform a small PDF action.
| Client | Typical documented location |
|---|---|
| Cursor | ~/.cursor/mcp.json; Windows %USERPROFILE%.cursormcp.json |
| VS Code | ~/.config/Code/User/mcp.json on macOS/Linux; %APPDATA%CodeUsermcp.json on Windows; workspace .vscode/mcp.json is also documented |
| Claude Desktop | macOS ~/Library/Application Support/Claude/claude_desktop_config.json; Windows %APPDATA%Claudeclaude_desktop_config.json; Linux ~/.config/Claude/claude_desktop_config.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Continue | ~/.continue/config.json |
Frequently Asked Questions
Can I use one PDF4me API key in more than one MCP client?
The configuration format does not require a different key per client. You can place the same valid key in each local client’s env.API_KEY, but protect every copy and rotate the key if any machine or file is compromised.
Why does uvx pdf4me-mcp appear to hang in a terminal?
An MCP server normally waits for input from its client, so a quiet terminal is not by itself proof of failure. Use the command to confirm that UV resolves the package, then stop the process and let the desktop client launch it through stdio.
Recommended Free Tools
Should the MCP configuration be committed to a Git repository?
Do not commit a file containing the live API key. Keep a redacted example showing the correct schema and provide the key through each developer’s local configuration or another approved secret-management process.
What should I do after changing the API key?
Replace only the value under env.API_KEY, save the file, and restart or refresh the client. Check the server status again before assuming a PDF operation is failing for another reason.
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.

