pi-mcp-py
An extension for pi-python. It connects the MCP servers that an ACP client (an editor such as Zed) passes to the agent, and gives their tools to the model.
The agent itself has no MCP client. Without this package, the servers that the editor passes are not connected, and the agent says so. With it, the agent connects them.
Install it into the environment of the agent:
pip install pi-mcp-py
The package is on PyPI from the 0.6.0 release of pi-python. In a checkout of the repository, use
pip install -e ./packages/pi-mcp.
Nothing else to set up. The servers come from the editor (Zed: context_servers in the settings).
It needs pi-agent-core-lc 0.7.0 or later: the extensions are released with the core, so the
floor of the package is the release it ships with. A core older than 0.6.0 does not hand over
the servers of the client, and then the package logs a warning and does nothing.
What it does
- Connects
stdio,http(Streamable HTTP) andsseservers. One connection for each server and session. A server that does not start does not stop the session, nor the other servers. - Gives each tool to the model as
mcp__<server>__<tool>. The prefix keeps an MCP tool from replacing a built-in tool of the same name. A name longer than 64 characters is cut and gets a hash at the end. - Tells the user when a server fails to start or is slow. It says nothing when all is well.
- Connects a server again when it has stopped: the next tool call does it, at most 3 times in a row (a call that gets an answer starts the count again). A call that was already sent when the server died is not sent again, because the server may have run it. It fails with the reason.
/mcpshows the servers, their state and the number of tools./mcp reconnect <name>connects one again, with no limit.- Ends every server process when the session ends (Windows and Linux).
- Limits: a server may take 60 s to start and a call 120 s (see Settings). The first turn waits at most 10 s for a server that still starts. A tool result of more than 50 KB of text is cut, and a note says so.
Things to know
- Permissions. A tool call is asked about in the
askmode of the CLI, unless the server marks the tool with a hint that says it is harmless (readOnlyHint). The hints are taken as the server gives them: you chose the server. - Environment of a stdio server. It gets the safe list of the MCP SDK, the proxy and certificate
variables of the agent (
HTTP_PROXY,SSL_CERT_FILE, ...), and theenvof the editor. It does not get the other variables of the agent, the LLM keys among them.${VAR}in a value is not expanded. - Secrets. The
env,headers,argsandurlof a server are not written to a log, a notice, the/mcpoutput or an error text. - Logs. The stderr of a stdio server goes to
<PI_HOME>/logs/mcp/<name>.log(PI_HOMEis~/.pi-pythonwhen it is not set). The file is appended to, and started over when it is larger than 512 KB. The text of the file is what the server wrote: it may hold what the server was given. - Servers on this machine. An
httporsseserver atlocalhost,127.0.0.1or::1is reached directly, not through the proxy of the system (httpxwould send it there). - Not supported: MCP resources, prompts, sampling, roots, elicitation, OAuth,
tools/list_changed, websocket servers.
Settings
Environment variables only:
| Variable | Default | Meaning |
|---|---|---|
PI_MCP_STARTUP_TIMEOUT |
60 | Seconds a server may take to start. Then it counts as failed. |
PI_MCP_CALL_TIMEOUT |
120 | Seconds a tool call may take. |
The design is in docs/specs/2026-10-23-mcp-extension-design.md of the repository.
Metadata
Release files for pi-mcp-py 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pi_mcp_py-0.2.0.tar.gz | 39.5 kB | Without provenance | Details for pi_mcp_py-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pi_mcp_py-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for pi_mcp_py-0.2.0-py3-none-any.whl |
Total release size: 62.5 kB
Release files / pi_mcp_py-0.2.0.tar.gz
| Download URL | pi_mcp_py-0.2.0.tar.gz |
|---|---|
| Size | 39.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f007a8ca525518b14cc74470f90861233efd1ac2c20baa2f3ef43a3e3df1d66
|
|
BLAKE2b-256 checksum How to use checksums |
7dca0a7530945411f304a83d9ed6cb2ec552b9b976d78c000fef4b92aeb8467c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / pi_mcp_py-0.2.0-py3-none-any.whl
| Download URL | pi_mcp_py-0.2.0-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9016233c1bb2b2c291b7d160efc20abb84f1b03d78716bc957ebfeecd48a18a2
|
|
BLAKE2b-256 checksum How to use checksums |
1c61bfa4d4c332358641cd7e369c5bf4cc9ce11c403b400e8bbbfdb6adf70e46
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for pi-mcp-py 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.