@@ -11,13 +11,10 @@ import (
12type Prompt = mcp.Prompt
12type Prompt = mcp.Prompt
15− allPrompts = csync.NewMap[string, *Prompt]()
16− clientPrompts = csync.NewMap[string, []*Prompt]()
14+var allPrompts = csync.NewMap[string, []*Prompt]()
19// Prompts returns all available MCP prompts.
16// Prompts returns all available MCP prompts.
20−func Prompts() iter.Seq2[string, *Prompt] {
17+func Prompts() iter.Seq2[string, []*Prompt] {
21 return allPrompts.Seq2()
18 return allPrompts.Seq2()
@@ -65,10 +62,8 @@ func RefreshPrompts(ctx context.Context, name string) {
65 updatePrompts(name, prompts)
62 updatePrompts(name, prompts)
67 prev, _ := states.Get(name)
64 prev, _ := states.Get(name)
65+ prev.Counts.Prompts = len(prompts)
68− updateState(name, StateConnected, nil, session, Counts{
66+ updateState(name, StateConnected, nil, session, prev.Counts)
69− Prompts: len(prompts),
70− Tools: prev.Counts.Tools,
74func getPrompts(ctx context.Context, c *mcp.ClientSession) ([]*Prompt, error) {
69func getPrompts(ctx context.Context, c *mcp.ClientSession) ([]*Prompt, error) {
@@ -85,14 +80,8 @@ func getPrompts(ctx context.Context, c *mcp.ClientSession) ([]*Prompt, error) {
85// updatePrompts updates the global mcpPrompts and mcpClient2Prompts maps
80// updatePrompts updates the global mcpPrompts and mcpClient2Prompts maps
86func updatePrompts(mcpName string, prompts []*Prompt) {
81func updatePrompts(mcpName string, prompts []*Prompt) {
87 if len(prompts) == 0 {
82 if len(prompts) == 0 {
88− clientPrompts.Del(mcpName)
90− clientPrompts.Set(mcpName, prompts)
92− for mcpName, prompts := range clientPrompts.Seq2() {
93− for _, p := range prompts {
94− key := mcpName + ":" + p.Name
95− allPrompts.Set(key, p)
83+ allPrompts.Del(mcpName)
86+ allPrompts.Set(mcpName, prompts)