Help us shape the future of Go! Take the 2026 Go Developer Survey

mcp

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2026 License: EUPL-1.2 Imports: 31 Imported by: 0

Documentation

Overview

Package mcp connecte tenon à des serveurs MCP (stdio et HTTP streamable) et expose leurs outils comme des tools.Tool.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Describe

func Describe(toolName string) (server string, jurisdiction llm.Jurisdiction, ok bool)

Describe renvoie le serveur et la juridiction d'un outil MCP exposé.

func Start

func Start(ctx context.Context, servers []config.MCPServer, opts Options) (*Manager, []Down)

Start se connecte en parallèle à chaque serveur non désactivé. Un serveur en échec est signalé dans []Down et ignoré.

func ToolName

func ToolName(server, tool string, taken map[string]bool) string

ToolName construit le nom exposé au modèle : mcp__<serveur>__<outil>, les caractères hors [A-Za-z0-9_-] remplacés par « _ », 64 caractères au plus. En cas de collision avec un nom de taken, le nom est tronqué puis suffixé par « _<4 hex> » d'un hash. Le nom retenu est ajouté à taken (si non nil).

Types

type Down

type Down struct {
	Server, Error string
	// NonEUSkipped : serveur hors UE (ou de juridiction inconnue) ni lancé
	// ni contacté, faute de consentement d'avance (AllowNonEU).
	NonEUSkipped bool
	// Confined : serveur stdio lancé confiné, puis injoignable ; l'échec
	// peut venir du confinement (écriture refusée, réseau coupé).
	Confined bool
}

Down signale un serveur injoignable au démarrage, ou non lancé.

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager détient les sessions MCP ouvertes et les outils adaptés.

func (*Manager) Close

func (m *Manager) Close() error

Close ferme les sessions et termine les processus stdio (SIGTERM au groupe, SIGKILL après 2 s). Idempotent.

func (*Manager) Kill

func (m *Manager) Kill()

Kill tue sur-le-champ (SIGKILL) le groupe de processus de chaque serveur stdio, sans attendre : réservé à une sortie immédiate du processus (second Ctrl+C). Les sessions HTTP ne sont pas fermées.

func (*Manager) SandboxUse added in v0.7.0

func (m *Manager) SandboxUse(id string) *event.SandboxUse

SandboxUse renvoie l'isolation du serveur stdio id joignable au démarrage (nil pour un serveur http, de test ou absent).

func (*Manager) Secrets

func (m *Manager) Secrets() []string

Secrets renvoie les valeurs non vides des variables env_from et bearer_env.

func (*Manager) Tools

func (m *Manager) Tools() []tools.Tool

Tools renvoie les outils de tous les serveurs joignables au démarrage.

func (*Manager) Warnings

func (m *Manager) Warnings() []string

Warnings renvoie les avertissements du démarrage (outils ignorés).

type Options

type Options struct {
	Getenv         func(string) string // nil : os.Getenv
	CallTimeout    time.Duration       // shell_timeout (2 min par défaut)
	ConnectTimeout time.Duration       // 15 s par défaut
	OutputLimit    int
	Consent        func(serverID string) bool // juridiction ; nil = toujours vrai
	// Root est la racine du projet, transmise aux serveurs stdio par
	// TENON_PROJECT_ROOT ; leur répertoire de travail est HOME.
	Root string

	// AllowNonEU est le consentement d'avance (--allow-non-eu) : sans lui, les
	// outils d'un serveur hors UE exigent une validation humaine (ForceAsk).
	AllowNonEU bool

	// NoProxy (profils strict-local et secnumcloud) : les clients HTTP ignorent
	// HTTP_PROXY/HTTPS_PROXY ; une adresse privée ne sort pas par un proxy.
	NoProxy bool

	// Sandbox est la Spec de base des serveurs stdio (nil : non confinés).
	// Elle ne contient pas le projet : chaque serveur reçoit une copie, avec
	// Dir = HOME, le projet inscriptible pour risk write ou exec, le réseau
	// ouvert pour risk network.
	Sandbox *sandbox.Spec
	// NetworkOpen indique que l'isolation ne coupe pas le réseau (sonde :
	// isolation réseau "none") : le journal déclare alors le réseau ouvert.
	NetworkOpen bool
	// contains filtered or unexported fields
}

Options règle la connexion aux serveurs MCP.

type ServerInfo

type ServerInfo struct {
	ID           string
	Jurisdiction llm.Jurisdiction
	Country      string
}

ServerInfo décrit le serveur d'un outil MCP exposé (valeurs de la configuration).

func Lookup

func Lookup(toolName string) (ServerInfo, bool)

Lookup renvoie le serveur d'un outil MCP exposé.

Directories

Path Synopsis
Package mcptest fournit le serveur MCP stdio des tests : le binaire de test relancé avec EnvServer=1 joue un serveur selon EnvMode.
Package mcptest fournit le serveur MCP stdio des tests : le binaire de test relancé avec EnvServer=1 joue un serveur selon EnvMode.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL