Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 26 additions & 8 deletions cmd/mcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,18 +145,36 @@ func loadMCPConfig() (*MCPConfig, error) {

func createMCPClients(
config *MCPConfig,
) (map[string]*mcpclient.StdioMCPClient, error) {
clients := make(map[string]*mcpclient.StdioMCPClient)
) (map[string]mcpclient.MCPClient, error) {
clients := make(map[string]mcpclient.MCPClient)

for name, server := range config.MCPServers {
var env []string
for k, v := range server.Env {
env = append(env, fmt.Sprintf("%s=%s", k, v))
}
client, err := mcpclient.NewStdioMCPClient(
server.Command,
env,
server.Args...)
var client mcpclient.MCPClient
var err error

if server.Command == "sse_server" {
if len(server.Args) == 0 {
return nil, fmt.Errorf(
"no arguments provided for sse command",
)
}

client, err = mcpclient.NewSSEMCPClient(
server.Args[0],
)
if err == nil {
err = client.(*mcpclient.SSEMCPClient).Start(context.Background())
}
} else {
client, err = mcpclient.NewStdioMCPClient(
server.Command,
env,
server.Args...)
}
if err != nil {
for _, c := range clients {
c.Close()
Expand Down Expand Up @@ -202,7 +220,7 @@ func createMCPClients(
func handleSlashCommand(
prompt string,
mcpConfig *MCPConfig,
mcpClients map[string]*mcpclient.StdioMCPClient,
mcpClients map[string]mcpclient.MCPClient,
messages interface{},
) (bool, error) {
if !strings.HasPrefix(prompt, "/") {
Expand Down Expand Up @@ -329,7 +347,7 @@ func handleServersCommand(config *MCPConfig) {
fmt.Print("\n" + containerStyle.Render(rendered) + "\n")
}

func handleToolsCommand(mcpClients map[string]*mcpclient.StdioMCPClient) {
func handleToolsCommand(mcpClients map[string]mcpclient.MCPClient) {
// Get terminal width for proper wrapping
width := getTerminalWidth()

Expand Down
2 changes: 1 addition & 1 deletion cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ func updateRenderer() error {
// Method implementations for simpleMessage
func runPrompt(
provider llm.Provider,
mcpClients map[string]*mcpclient.StdioMCPClient,
mcpClients map[string]mcpclient.MCPClient,
tools []llm.Tool,
prompt string,
messages *[]history.HistoryMessage,
Expand Down