MCP tokens
Session.SetMCPTokens on the one SDK, pkg/abox.
Pushes a Bearer token into the guest and reconnects MCP. Configure servers with abox mcp add first. Host credentials.env is still how Open injects tokens at boot; this example is the live update path.
export ABOX_MCP_TOKEN_ENV=ABOX_MCP_GH_TOKEN
export ABOX_MCP_TOKEN=… # not a real key in docs
package main
import (
"context"
"fmt"
"os"
"github.com/AdminTurnedDevOps/ABox/pkg/abox"
)
func main() {
ctx := context.Background()
sess, err := abox.Open(ctx, abox.Options{})
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
defer sess.Close()
env := os.Getenv("ABOX_MCP_TOKEN_ENV")
tok := os.Getenv("ABOX_MCP_TOKEN")
if env == "" || tok == "" {
fmt.Fprintln(os.Stderr, "set ABOX_MCP_TOKEN_ENV (guest env name) and ABOX_MCP_TOKEN")
os.Exit(2)
}
if err := sess.SetMCPTokens(ctx, map[string]string{env: tok}); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
fmt.Println("mcp token set for", env)
_, err = sess.Turn(ctx, "List your MCP tools by name.", func(ev abox.Event) {
if ev.Kind == "text" {
fmt.Print(ev.Text)
}
})
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
fmt.Println()
}