mirror of
https://github.com/mark3labs/kit.git
synced 2026-06-14 03:30:26 +00:00
80d5300feb
Strip the three-layer permission system (hook-based blocking, user approval dialogs, PostToolUse output suppression) so every tool call executes unconditionally. This removes ~1100 lines across 14 files including the --approve-tool-run and --no-hooks CLI flags, ToolApprovalHandler/Func types, PreToolUse/UserPromptSubmit/PostToolUse/Stop hook firing, HookBlockedEvent, ToolApprovalNeededEvent, the ApprovalComponent UI, and all associated tests.
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