mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
71bdc768be
Replace catwalk dependency with direct models.dev integration (97 providers, 3039 models vs catwalk's 22/679). Auto-route @ai-sdk/openai-compatible providers through fantasy's openaicompat using the api URL from models.dev, eliminating the need for --provider-url. Add --all flag to 'mcphost models' to show all providers vs just fantasy-compatible ones. Fix all 74 golangci-lint issues: errcheck (53), staticcheck SA4006 (24), SA9003 (2), ST1005 (5), ineffassign (3). Restructure styles.go color handling into a colorScheme struct to eliminate SA4006 false positives from new(x) syntax.
MCPHost SDK
The MCPHost SDK allows you to use MCPHost programmatically from Go applications without spawning OS processes.
Installation
go get github.com/mark3labs/mcphost
Basic Usage
package main
import (
"context"
"fmt"
"log"
"github.com/mark3labs/mcphost/sdk"
)
func main() {
ctx := context.Background()
// Create MCPHost instance with default configuration
host, err := sdk.New(ctx, nil)
if err != nil {
log.Fatal(err)
}
defer host.Close()
// Send a prompt
response, err := host.Prompt(ctx, "What is 2+2?")
if err != nil {
log.Fatal(err)
}
fmt.Println(response)
}
Configuration
The SDK behaves identically to the CLI:
- Loads configuration from
~/.mcphost.ymlby default - Creates default configuration if none exists
- Respects all environment variables (
MCPHOST_*) - Uses the same defaults as the CLI
Options
You can override specific settings:
host, err := sdk.New(ctx, &sdk.Options{
Model: "ollama/llama3", // Override model
SystemPrompt: "You are a helpful bot", // Override system prompt
ConfigFile: "/path/to/config.yml", // Use specific config file
MaxSteps: 10, // Override max steps
Streaming: true, // Enable streaming
Quiet: true, // Suppress debug output
})
Advanced Usage
With Tool Callbacks
Monitor tool execution in real-time:
response, err := host.PromptWithCallbacks(
ctx,
"List files in the current directory",
func(name, args string) {
fmt.Printf("Calling tool: %s\n", name)
},
func(name, args, result string, isError bool) {
if isError {
fmt.Printf("Tool %s failed: %s\n", name, result)
} else {
fmt.Printf("Tool %s succeeded\n", name)
}
},
func(chunk string) {
fmt.Print(chunk) // Stream output
},
)
Session Management
Maintain conversation context:
// First message
host.Prompt(ctx, "My name is Alice")
// Second message (remembers context)
response, _ := host.Prompt(ctx, "What's my name?")
// Response: "Your name is Alice"
// Save session
host.SaveSession("./session.json")
// Load session later
host.LoadSession("./session.json")
// Clear session
host.ClearSession()
API Reference
Types
MCPHost- Main SDK typeOptions- Configuration optionsMessage- Conversation messageToolCall- Tool invocation details
Methods
New(ctx, opts)- Create new MCPHost instancePrompt(ctx, message)- Send message and get responsePromptWithCallbacks(ctx, message, ...)- Send message with progress callbacksLoadSession(path)- Load session from fileSaveSession(path)- Save session to fileClearSession()- Clear conversation historyGetSessionManager()- Get session manager for advanced usageGetModelString()- Get current model stringClose()- Clean up resources
Environment Variables
All CLI environment variables work with the SDK:
MCPHOST_MODEL- Override modelANTHROPIC_API_KEY- Anthropic API keyOPENAI_API_KEY- OpenAI API keyGEMINI_API_KEY- Google API key- etc.
License
Same as MCPHost CLI