Repository navigation
Add Pi coding agent as a supported MCP client - #6819
Merged
Merged
Conversation
Pi has had built-in MCP support since 0.99.0 and reads servers from a standard mcpServers JSON file at ~/.pi/agent/mcp.json, so it fits the existing client model without new config logic. Pi rejects the legacy "sse" type, so SSE is left out of the transport map and SSE workloads are written without a type field. Skills use Pi's native ~/.pi/agent/skills and .pi/skills directories rather than the shared .agents/skills location. Closes #6735 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
danbarr
requested review from
ChrisJBurns,
JAORMX,
amirejaz,
aponcedeleonch,
jhrozek,
rdimitrov and
reyortiz3
as code owners
October 14, 2026 03:35
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
SSE workloads are still written into Pi’s configuration despite being unsupported, producing unusable registrations.
1 open finding
What changed in this PR
Adds Pi as an MCP client with native configuration and skill paths.
Changes:
- Registers Pi and its transport configuration.
- Adds Pi skill-path and client tests.
- Regenerates CLI, OpenAPI, and Go SDK artifacts.
| File | Description |
|---|---|
pkg/client/config.go |
Defines the Pi client integration. |
pkg/client/config_test.go |
Adds Pi to client configuration tests. |
pkg/client/skills_test.go |
Tests Pi skill paths and support. |
docs/cli/thv_client_register.md |
Lists Pi as registerable. |
docs/cli/thv_client_remove.md |
Lists Pi as removable. |
docs/server/docs.go |
Adds Pi to generated API docs. |
docs/server/swagger.json |
Adds Pi to the JSON schema. |
docs/server/swagger.yaml |
Adds Pi to the YAML schema. |
sdk/go/openapi.json |
Updates the SDK JSON specification. |
sdk/go/openapi.yaml |
Updates the SDK YAML specification. |
sdk/go/client/oas_json_gen.go |
Adds Pi JSON decoding. |
sdk/go/client/oas_schemas_gen.go |
Adds the generated Pi enum. |
sdk/go/client/oas_validators_gen.go |
Accepts Pi during validation. |
Files not reviewed (4)
- docs/server/docs.go: Generated file
- sdk/go/client/oas_json_gen.go: Generated file
- sdk/go/client/oas_schemas_gen.go: Generated file
- sdk/go/client/oas_validators_gen.go: Generated file
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #6819 +/- ##
==========================================
+ Coverage 79.58% 79.63% +0.05%
==========================================
Files 814 814
Lines 82537 82537
==========================================
+ Hits 65684 65727 +43
+ Misses 16848 16805 -43
Partials 5 5 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
aponcedeleonch
approved these changes
Oct 14, 2026
4 of 10 tasks
1 task
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Pi has had built-in MCP support since 0.99.0. It reads servers from a standard
mcpServersJSON file, so it fits ToolHive's existing client model without any new config logic. Users have been asking for it in #6735.piclient that writes to~/.pi/agent/mcp.json.thv client statusdetects Pi through the existing~/.pi/agentdirectory check."type": "http"for streamable HTTP and stdio workloads. SSE is left out of the transport map on purpose, because Pi rejects"type": "sse".~/.pi/agent/skills(user) and.pi/skills(project) directories, rather than the shared.agents/skillslocation that several other clients already use.Closes #6735
Type of change
Test plan
task test)task test-e2e)task lint-fix)Built
thvand, with an isolated HOME containing~/.pi/agent, confirmed thatthv client statusshows Pi as installed and thatthv client register piregisters it. Separately, upserted streamable HTTP, stdio and SSE entries into a freshly created Pi config through the client manager. The resultingmcp.jsonmatched the shape in Pi's docs:{"url": ..., "type": "http"}for the first two and{"url": ...}for SSE.Does this introduce a user-facing change?
Yes.
thv client register piandthv client setupnow support the Pi coding agent, including skill installation into Pi's skills directories.Special notes for reviewers
SSE workloads are written without a
typefield. Pi then treats them as streamable HTTP and fails to connect. Writing"type": "sse"would make Pi skip the entry outright, so neither option works. The SSE transport is deprecated anyway, so I've left it at that rather than adding per-client SSE filtering. Happy to revisit if we'd rather skip SSE workloads for Pi.🤖 Generated with Claude Code