📝 Originally published (in Japanese) at forge.workstyle.tech.
TL;DR: Older mcp<1.10 servers load Pydantic's internal eval_type_backport function.
Pydantic 2.14 no longer has that function, so startup fails with an ImportError.
Add --with "pydantic<2.14" to the applicable uvx configuration, then check each server's initialize response after reconnecting.
Conclusion First
Old mcp<1.10 MCP servers started with uvx fail to launch due to ImportError: cannot import name 'eval_type_backport' with Pydantic 2.14. Add --with "pydantic<2.14" to pin Pydantic below 2.14, then reconnect and verify the per-server initialize response.
Why Pydantic 2.14 Causes an ImportError
The target server was pinned to mcp<1.10, which belongs to an older mcp release line. The constraint mcp<1.10 specifies using a version lower than 1.10. This version line imports an internal function called eval_type_backport from Pydantic. However, that function was removed in Pydantic 2.14.
As a result, the server fails with an ImportError when attempting to import the missing function. Both the SQLite and Hacker News configurations where this error occurred were being launched via uvx.
The workaround is to pin Pydantic to below 2.14 in addition to the older mcp version. Add the following flags to your configuration:
--with "mcp<1.10" --with "pydantic<2.14"
The new addition here is pydantic<2.14. The mcp<1.10 constraint was already in place to maintain compatibility with older servers.
Adding Pydantic <2.14 Specification to uvx Arguments
If you're separating commands and arguments in configuration screens, add --with and the package specification to the uvx arguments. For a SQLite server, for example, it would look like this:
command: uvx
args: ["--with", "mcp<1.10", "--with", "pydantic<2.14", "mcp-server-sqlite", "--db-path", "<SQLite DB path>"]
Replace <SQLite DB path> with the location of your existing database. In the startup arguments, pass this value after --db-path.
Apply the same fix to the Hacker News server. The package name to start is mcp-hn.
command: uvx
args: ["--with", "mcp<1.10", "--with", "pydantic<2.14", "mcp-hn"]
If --with "mcp<1.10" is already present, leave that specification as is and add --with "pydantic<2.14". Review the entire configuration to ensure there are no duplicate Pydantic version pins.
Verify MCP Server initialize Response After Reconnection
After saving your configuration, reconnect to the target MCP server. A simple "connected" status doesn't confirm that the initialization request (initialize) was successful. You'll need to verify the response on the client side.
Check SQLite and Hacker News separately. Even if one initializes successfully, it doesn't guarantee the other has as well. If errors disappear and both respond to initialization, you've avoided the startup ImportError.
If you want to verify using only locally available dependencies, you can use uvx --offline. Our records show that both SQLite and Hacker News respond to MCP initialization offline. However, this method may not work in environments without locally installed packages.
Which Existing Configurations to Add Pydantic Specifications To
Some older configurations only pinned mcp<1.10. In those cases, add the Pydantic specification. However, for configurations where users have already specified their own Pydantic version, do not alter that value.
The target for modification is configurations that start with uvx, include --with mcp<1.10, and do not yet have a Pydantic specification. Only add it to servers that meet these conditions. Do not mechanically apply the same change to configurations with different startup commands or those that already specify Pydantic.
This error was related to compatibility between dependency packages rather than the server's startup command itself. When eval_type_backport is not found, check if an older version of mcp is being used. If so, pin Pydantic to below 2.14 and verify the initialize response for each server.
Key takeaways
- Check that the affected server starts with
uvxand specifiesmcp<1.10. - Add
--with "pydantic<2.14"only when the configuration has no Pydantic version specified. - Reconnect and check the
initializeresponse for SQLite and Hacker News separately. - Use
uvx --offlineto check with local dependencies when available.
Top comments (0)