pip with MCP 2.0.0: startup failure (two supporting runs)
- Public PyPI server package
mcp-server-git- Server version
2026.7.10- MCP SDK version
2.0.0- Python version
3.14.3- Installer / launcher
pip- Operating system
macos- Architecture
arm64
Observed protocol stages: initialize: failed; tools/list: not-checked; tools/call: not-checked.
Scope: git_status on new empty temporary Git repository; no commits, remotes or user files. No tool result: downstream operations were not checked.
Observed startup error: AttributeError: 'Server' object has no attribute 'list_tools' at mcp_server_git/server.py:321, before an initialize response
Limits: One maintainer-controlled experiment, not independent users or independently reproduced reports. Duplicate runs and the uv console-entrypoint check are supporting evidence, not additional configurations. Only the recorded server version, SDK versions, Python 3.14.3, macOS Darwin 25.5.0 arm64 and stdio transport were tested. Version ordering does not establish compatibility. A passed call covers only git_status on a new empty temporary repository with no commits, remotes or user files. Other Git tools, real repositories, GUI clients, Windows/Linux and OpenHands were not tested. The mcp<2 repair selected 1.30.0 on the recorded date; it does not establish that every 1.x release or a later resolver result works. No upgraded server or SDK v2 source migration was tested. Installed server.py matched the official PyPI wheel hash; this is not a file-by-file audit of all installed packages. Package versions come from distribution metadata, not initialize serverInfo.version. Raw protocol tools_list_ok/tool_call_ok=false reflect unexecuted stages after EOF before response 1. Public stages are correctly not-checked; the archived bytes are unchanged.
Public evidence
- README.md · SHA-256
20700153d10388338399247182d2a1b73994707ca33421615660d895e6998c04 - RESULTS.md · SHA-256
15f0e825966e98d1b01c541808701adf92258454b67ab3de0567c78ce6594089 - PLAN.md · SHA-256
6812989998ab99b8c66253117437070c39d9e43969f962e1fdcd1ab52e40355a - host.json · SHA-256
9e47aee8c76e657d634a582759e2cc288677c59e03fe0b27169562422ad4e0fc - provenance.json · SHA-256
1e05180af3ce43fdbd444d04234d0e1f7245f1ba1d8893853d450dd6042ca9f8 - commands.json · SHA-256
f3b63e1b9a9fb68275daa129fb80ae9a79c450934d6c7b1ab8eda0a0f2f39a3a - probe.py · SHA-256
4a4353c346068bfdcdb11d8f291cad16aaed9c6d35debd59e421561d044eb918 - reproduce.py · SHA-256
a8c41473853e156bd58ef1a309f2a28e73262c79448c72254e6f25f9ebe0b578 - test_output_guard.py · SHA-256
c6402d602443a38cb409a41b9341d6fbb71207c6f9b53d81a6b75b57e7566210 - broken-environment.json · SHA-256
89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0 - broken-requirements.txt · SHA-256
b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8 - broken-protocol.json · SHA-256
1c22a13f7bfd376de7c452d9fa0fa90f2e17cf7c9b4ba9f27627f12f51b1808b - broken-distributions.json · SHA-256
cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b - pip-before-environment.json · SHA-256
89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0 - pip-before-requirements.txt · SHA-256
b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8 - pip-before-protocol.json · SHA-256
0a520652eb7e4742bbd640cde75744da75322e6acc7175987ee1213605874601 - pip-before-distributions.json · SHA-256
cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b
Full commands, environment, provenance and repeated runs
{
"id": "git-2026-7-10-pip-mcp-2-0-0",
"experiment_id": "real-mcp-2026-10-13",
"title": "pip with MCP 2.0.0: startup failure (two supporting runs)",
"source_date": "2026-10-13T06:49:42.936857+00:00",
"verification": "maintainer-controlled; not independently reproduced",
"server_package": "mcp-server-git",
"server_version": "2026.7.10",
"mcp_version": "2.0.0",
"python_version": "3.14.3",
"installer": "pip",
"installer_version": "26.0",
"platform": "macos",
"platform_release": "Darwin 25.5.0",
"architecture": "arm64",
"transport": "stdio",
"outcome": "startup-failure",
"stages": {
"initialize": "failed",
"tools_list": "not-checked",
"tools_call": "not-checked"
},
"tool": {
"name": "git_status",
"target": "new empty temporary Git repository; no commits, remotes or user files",
"tools_list_count": null,
"result": null
},
"observed_error": "AttributeError: 'Server' object has no attribute 'list_tools' at mcp_server_git/server.py:321, before an initialize response",
"exit_code": 1,
"runs": [
{
"scenario": "broken",
"protocol_file": "broken-protocol.json",
"launch_command": [
"$RUN_ROOT/broken/bin/python",
"-m",
"mcp_server_git",
"--repository",
"$RUN_ROOT/empty-repo"
]
},
{
"scenario": "pip-before",
"protocol_file": "pip-before-protocol.json",
"launch_command": [
"$RUN_ROOT/pip-repaired/bin/python",
"-m",
"mcp_server_git",
"--repository",
"$RUN_ROOT/empty-repo"
]
}
],
"commands": [
{
"purpose": "Create isolated environment",
"argv": [
"/opt/homebrew/opt/python@3.14/bin/python3.14",
"-m",
"venv",
"$RUN_ROOT/broken"
],
"exit_code": 0
},
{
"purpose": "Install recorded configuration",
"argv": [
"$RUN_ROOT/broken/bin/python",
"-m",
"pip",
"--isolated",
"--cache-dir",
"$RUN_ROOT/pip-cache",
"install",
"--index-url",
"https://pypi.org/simple",
"--report",
"$RUN_ROOT/broken-pip-report.json",
"mcp-server-git==2026.7.10",
"mcp==2.0.0"
],
"exit_code": 0
},
{
"purpose": "Create isolated environment",
"argv": [
"/opt/homebrew/opt/python@3.14/bin/python3.14",
"-m",
"venv",
"$RUN_ROOT/pip-repaired"
],
"exit_code": 0
},
{
"purpose": "Install recorded configuration",
"argv": [
"$RUN_ROOT/pip-repaired/bin/python",
"-m",
"pip",
"--isolated",
"--cache-dir",
"$RUN_ROOT/pip-cache",
"install",
"--index-url",
"https://pypi.org/simple",
"--report",
"$RUN_ROOT/pip-before-pip-report.json",
"mcp-server-git==2026.7.10",
"mcp==2.0.0"
],
"exit_code": 0
}
],
"provenance": {
"server_wheel_sha256": "6eb8bb2cca00f39e7bf9752472268c2a037579d59d1373b2fb89cc606060fad5",
"server_py_sha256": "52325521ec8ec00297248fa03eaee6802b9cad3ec1e5bebee25971e1b897d56e",
"server_source_matches_pypi_wheel": true,
"metadata_url": "https://pypi.org/pypi/mcp-server-git/2026.7.10/json"
},
"evidence": [
{
"filename": "README.md",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/README.md",
"sha256": "20700153d10388338399247182d2a1b73994707ca33421615660d895e6998c04",
"source_file": "README.md",
"source_sha256": "20700153d10388338399247182d2a1b73994707ca33421615660d895e6998c04"
},
{
"filename": "RESULTS.md",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/RESULTS.md",
"sha256": "15f0e825966e98d1b01c541808701adf92258454b67ab3de0567c78ce6594089",
"source_file": "RESULTS.md",
"source_sha256": "15f0e825966e98d1b01c541808701adf92258454b67ab3de0567c78ce6594089"
},
{
"filename": "PLAN.md",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/PLAN.md",
"sha256": "6812989998ab99b8c66253117437070c39d9e43969f962e1fdcd1ab52e40355a",
"source_file": "PLAN.md",
"source_sha256": "6812989998ab99b8c66253117437070c39d9e43969f962e1fdcd1ab52e40355a"
},
{
"filename": "host.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/host.json",
"sha256": "9e47aee8c76e657d634a582759e2cc288677c59e03fe0b27169562422ad4e0fc",
"source_file": "results/host.json",
"source_sha256": "9e47aee8c76e657d634a582759e2cc288677c59e03fe0b27169562422ad4e0fc"
},
{
"filename": "provenance.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/provenance.json",
"sha256": "1e05180af3ce43fdbd444d04234d0e1f7245f1ba1d8893853d450dd6042ca9f8",
"source_file": "results/provenance.json",
"source_sha256": "1e05180af3ce43fdbd444d04234d0e1f7245f1ba1d8893853d450dd6042ca9f8"
},
{
"filename": "commands.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/commands.json",
"sha256": "f3b63e1b9a9fb68275daa129fb80ae9a79c450934d6c7b1ab8eda0a0f2f39a3a",
"source_file": "results/commands.json",
"source_sha256": "8c0ddc80b88e656b7815efd9384f0a463ed65d7006227680903945dfa236b50d"
},
{
"filename": "probe.py",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/probe.py",
"sha256": "4a4353c346068bfdcdb11d8f291cad16aaed9c6d35debd59e421561d044eb918",
"source_file": "probe.py",
"source_sha256": "4a4353c346068bfdcdb11d8f291cad16aaed9c6d35debd59e421561d044eb918"
},
{
"filename": "reproduce.py",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/reproduce.py",
"sha256": "a8c41473853e156bd58ef1a309f2a28e73262c79448c72254e6f25f9ebe0b578",
"source_file": "reproduce.py",
"source_sha256": "a8c41473853e156bd58ef1a309f2a28e73262c79448c72254e6f25f9ebe0b578"
},
{
"filename": "test_output_guard.py",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/test_output_guard.py",
"sha256": "c6402d602443a38cb409a41b9341d6fbb71207c6f9b53d81a6b75b57e7566210",
"source_file": "test_output_guard.py",
"source_sha256": "c6402d602443a38cb409a41b9341d6fbb71207c6f9b53d81a6b75b57e7566210"
},
{
"filename": "broken-environment.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/broken-environment.json",
"sha256": "89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0",
"source_file": "results/broken-environment.json",
"source_sha256": "89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0"
},
{
"filename": "broken-requirements.txt",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/broken-requirements.txt",
"sha256": "b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8",
"source_file": "results/broken-requirements.txt",
"source_sha256": "b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8"
},
{
"filename": "broken-protocol.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/broken-protocol.json",
"sha256": "1c22a13f7bfd376de7c452d9fa0fa90f2e17cf7c9b4ba9f27627f12f51b1808b",
"source_file": "results/broken-protocol.json",
"source_sha256": "1c22a13f7bfd376de7c452d9fa0fa90f2e17cf7c9b4ba9f27627f12f51b1808b"
},
{
"filename": "broken-distributions.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/broken-distributions.json",
"sha256": "cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b",
"source_file": "results/broken-distributions.json",
"source_sha256": "cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b"
},
{
"filename": "pip-before-environment.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/pip-before-environment.json",
"sha256": "89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0",
"source_file": "results/pip-before-environment.json",
"source_sha256": "89282faa45f080029d65691b74bd2a75dec5446e6a1eaae973d94ab108662da0"
},
{
"filename": "pip-before-requirements.txt",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/pip-before-requirements.txt",
"sha256": "b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8",
"source_file": "results/pip-before-requirements.txt",
"source_sha256": "b42767be4e960a175d8f91624698e726c7c09f5609c3dca75c27fc7b701748c8"
},
{
"filename": "pip-before-protocol.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/pip-before-protocol.json",
"sha256": "0a520652eb7e4742bbd640cde75744da75322e6acc7175987ee1213605874601",
"source_file": "results/pip-before-protocol.json",
"source_sha256": "0a520652eb7e4742bbd640cde75744da75322e6acc7175987ee1213605874601"
},
{
"filename": "pip-before-distributions.json",
"url": "https://agentshouldknow.app/diagnose/mcp-python-list-tools/cases/evidence/pip-before-distributions.json",
"sha256": "cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b",
"source_file": "results/pip-before-distributions.json",
"source_sha256": "cdef85d4acee3611550681b6948981c18177a954eeab69826368246628e43f9b"
}
],
"limitations": [
"One maintainer-controlled experiment, not independent users or independently reproduced reports. Duplicate runs and the uv console-entrypoint check are supporting evidence, not additional configurations.",
"Only the recorded server version, SDK versions, Python 3.14.3, macOS Darwin 25.5.0 arm64 and stdio transport were tested. Version ordering does not establish compatibility.",
"A passed call covers only git_status on a new empty temporary repository with no commits, remotes or user files. Other Git tools, real repositories, GUI clients, Windows/Linux and OpenHands were not tested.",
"The mcp<2 repair selected 1.30.0 on the recorded date; it does not establish that every 1.x release or a later resolver result works. No upgraded server or SDK v2 source migration was tested.",
"Installed server.py matched the official PyPI wheel hash; this is not a file-by-file audit of all installed packages. Package versions come from distribution metadata, not initialize serverInfo.version.",
"Raw protocol tools_list_ok/tool_call_ok=false reflect unexecuted stages after EOF before response 1. Public stages are correctly not-checked; the archived bytes are unchanged."
]
}