Crash on install: unpinned mcp>=1.0.0 resolves to mcp 2.0.0 which removed @server.list_tools()
Fresh install of pal-mcp-server v9.8.2 crashes at import:
File ".../site-packages/server.py", line 630, in <module>
@server.list_tools()
AttributeError: 'Server' object has no attribute 'list_tools'Root cause
pyproject.toml declares mcp>=1.0.0 with no upper bound. mcp SDK v2.0.0 (released 2026-07-28) removed the @server.list_tools() decorator on mcp.server.lowlevel.Server in favor of constructor callbacks. Fresh installs now resolve mcp to 2.0.0 and break.
The v2.0.0 release notes:
If your project is not ready to migrate, keep a
<2upper bound on your requirement (for examplemcp>=1.28,<2).
https://github.com/modelcontextprotocol/python-sdk/releases/tag/v2.0.0
Reproduction
uvx --from git+https://github.com/BeehiveInnovations/pal-mcp-server.git pal-mcp-serverFix
Migrate server.py:630 (and any other decorator-based handlers) from @server.list_tools() to the constructor on_list_tools=... callback pattern. See the "Lowlevel Server: decorator-based handlers replaced with constructor on_* params" section of the migration guide:
https://py.sdk.modelcontextprotocol.io/migration-guide/
Ecosystem context
Several other MCP servers with unpinned mcp>=1.0.0 hit the same crash after mcp 2.0.0 shipped. Examples with identical traceback and root cause:
- MarkusPfundstein/mcp-obsidian#156
- tumf/mcp-shell-server#47
- smn2gnt/MCP-Salesforce#25
Source: BeehiveInnovations/pal-mcp-server