From 68d6d284f471bb28319ffdeec2a8dab5b9399ab6 Mon Sep 17 00:00:00 2001 From: Levi Neely Date: Sat, 11 Apr 2026 11:31:46 +0200 Subject: [PATCH] p9: add mcp endpoint to session directory Exposes ollie/s/{sid}/mcp as a read-only file that returns all registered tool servers and their tools, grouped by server name. Backed by the new Core.ListServers() method. Co-Authored-By: Claude Sonnet 4.6 --- internal/p9/server.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/internal/p9/server.go b/internal/p9/server.go index bf4eaa2..3825976 100644 --- a/internal/p9/server.go +++ b/internal/p9/server.go @@ -235,7 +235,7 @@ func (s *Server) pathType(path string) string { return "" } switch parts[2] { - case "ctl", "prompt", "enqueue", "dequeue", "chat", "reply", "backend", "agent", "model", "models", "state", "workdir", "usage": + case "ctl", "prompt", "enqueue", "dequeue", "chat", "reply", "backend", "agent", "model", "models", "mcp", "state", "workdir", "usage": return "file" } } @@ -557,6 +557,8 @@ func (s *Server) readFile(path string) string { return sess.core.Usage() + "\n" case "models": return sess.core.ListModels() + "\n" + case "mcp": + return sess.core.ListServers() + "\n" } return "" } @@ -1004,6 +1006,7 @@ func (s *Server) readDir(path string, offset uint64, count uint32) []byte { {"workdir", 0666}, {"usage", 0444}, {"models", 0444}, + {"mcp", 0444}, } for _, e := range files { dirs = append(dirs, makeDir(e.name, sessPath+"/"+e.name, false, e.mode)) @@ -1062,7 +1065,7 @@ func (s *Server) makeStat(path string) plan9.Dir { switch base { case "ctl", "prompt", "enqueue": mode = 0200 - case "chat", "reply", "state", "usage", "models", "dequeue": + case "chat", "reply", "state", "usage", "models", "mcp", "dequeue": mode = 0444 case "backend", "agent", "model", "workdir": mode = 0666