feat: Generic MCP connector for session import (Phase 2 Task 2.5.3) #13
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem Statement
Phase 2 Task 2.5.3 of the session-search spec is unchecked: there is no generic MCP connector.
terraphim_sessions::connector/shipsAiderConnector,ClineConnector, andNativeClaudeConnector, but any new MCP-based coding tool (e.g. Zed, Goose, Continue, MCP-compatible IDE plugins) requires a bespoke connector. A genericMcpConnectorthat speaks the MCP session-export contract would let users import any compliant tool's transcripts without waiting for per-tool code.Current State
crates/terraphim_sessions/src/connector/mod.rsdefinesSessionConnectortrait (async, returnsVec<Session>) andConnectorRegistryat line ~108.resources/read+prompts/listsurface consumable over stdio or SSE (terraphim_mcp_serveris the other side of the same protocol).grep McpConnector crates/terraphim_sessionsreturns zero hits.Acceptance Criteria
crates/terraphim_sessions/src/connector/mcp.rsdefinesMcpConnector { endpoint: McpEndpoint }whereMcpEndpoint = Stdio { command: String, args: Vec<String> } | Sse { url: Url }.McpConnectorimplementsSessionConnector::import(&self) -> Result<Vec<Session>>by callingresources/listthenresources/readfor each resource whose MIME type isapplication/x-terraphim-session+jsonortext/x-session-transcript.ConnectorRegistry::detect_sourcesrecognises anmcp:URL scheme and constructs the connector accordingly./sessions sourcesin the REPL lists any discovered MCP endpoints./sessions import --source mcp://<url>triggers the new connector.connect,list,read), not a genericanyhowchain.terraphim_mcp_server::tests) imports at least one session.cargo test -p terraphim_sessions --lib connector::mcppasses.cargo clippy -p terraphim_sessions -- -D warningspasses.Proposed Approach
mcpmodule alongsideaider.rs,cline.rs,native.rs. Register inconnector/mod.rs.rmcpormcp-rust-sdkcrate already in the workspace (feature-gated undermcp-rust-sdk) for client-side calls; gate the connector behindfeature = "mcp"to avoid pulling SDK into default builds.SessionResource { id, title, mime_type, updated_at }soimportcan decide which resources to fetch.Sessionmodel viaserdewith a light schema-version check.terraphim_mcp_serverin-process and imports a seeded session.Files affected:
crates/terraphim_sessions/src/connector/mcp.rs(new, ~250 LOC)crates/terraphim_sessions/src/connector/mod.rs(~15 LOC registry)crates/terraphim_sessions/Cargo.toml(addmcpfeature, optional dep)crates/terraphim_sessions/tests/mcp_connector_test.rs(new, ~100 LOC)Dependencies
None. Can ship in parallel with #3 (Cline connector wiring) and #5 (Tantivy index).
Unblocks: third-party tool imports without per-tool code, and extensions to the session-search spec that cite MCP-only IDEs.
Verification
Scope
Single PR, estimated 350-450 LOC including tests and Cargo wiring. Completes Phase 2 Task 2.5.3.
Upstream: Implements
docs/specifications/terraphim-agent-session-search-tasks.mdPhase 2 Task 2.5.3 for terraphim/terraphim-ai.