mcp

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2026 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CallToolParams

type CallToolParams struct {
	Name      string         `json:"name"`
	Arguments map[string]any `json:"arguments,omitempty"`
}

CallToolParams tools/call 请求参数

type CallToolResult

type CallToolResult struct {
	Content []ContentItem `json:"content"`
	IsError bool          `json:"isError,omitempty"`
}

CallToolResult tools/call 响应

type Client

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

Client MCP 客户端 实现 JSON-RPC 2.0 over MCP 协议

func NewClient

func NewClient(transport Transport, config ClientConfig) *Client

NewClient 创建 MCP 客户端

func (*Client) CallTool

func (c *Client) CallTool(ctx context.Context, name string, args map[string]any) (*CallToolResult, error)

CallTool 调用工具

func (*Client) Close

func (c *Client) Close() error

Close 关闭客户端

func (*Client) Connect

func (c *Client) Connect(ctx context.Context) error

Connect 建立连接并初始化

func (*Client) ListTools

func (c *Client) ListTools(ctx context.Context) ([]MCPTool, error)

ListTools 获取服务器提供的工具列表

func (*Client) ServerCapabilities

func (c *Client) ServerCapabilities() *ServerCapabilities

ServerCapabilities 获取服务器能力

func (*Client) ServerInfo

func (c *Client) ServerInfo() *ServerInfo

ServerInfo 获取服务器信息

type ClientCapabilities

type ClientCapabilities struct {
	Roots    *RootsCapability    `json:"roots,omitempty"`
	Sampling *SamplingCapability `json:"sampling,omitempty"`
}

ClientCapabilities 客户端能力

type ClientConfig

type ClientConfig struct {
	Name    string // 客户端名称
	Version string // 客户端版本
}

ClientConfig 客户端配置

type ClientInfo

type ClientInfo struct {
	Name    string `json:"name"`
	Version string `json:"version"`
}

ClientInfo 客户端信息

type ConfigFile

type ConfigFile struct {
	MCPServers []ServerConfig `json:"mcpServers"`
}

ConfigFile MCP 配置文件格式

type ContentItem

type ContentItem struct {
	Type     string `json:"type"`               // "text", "image", "resource"
	Text     string `json:"text,omitempty"`     // type=text 时
	MimeType string `json:"mimeType,omitempty"` // type=image/resource 时
	Data     string `json:"data,omitempty"`     // base64 编码的数据
}

ContentItem 工具返回内容

type InitializeParams

type InitializeParams struct {
	ProtocolVersion string             `json:"protocolVersion"`
	Capabilities    ClientCapabilities `json:"capabilities"`
	ClientInfo      ClientInfo         `json:"clientInfo"`
}

InitializeParams 初始化请求参数

type InitializeResult

type InitializeResult struct {
	ProtocolVersion string             `json:"protocolVersion"`
	Capabilities    ServerCapabilities `json:"capabilities"`
	ServerInfo      ServerInfo         `json:"serverInfo"`
}

InitializeResult 初始化响应

type ListToolsResult

type ListToolsResult struct {
	Tools      []MCPTool `json:"tools"`
	NextCursor string    `json:"nextCursor,omitempty"`
}

ListToolsResult tools/list 响应

type LoggingCapability

type LoggingCapability struct{}

type MCPTool

type MCPTool struct {
	Name        string         `json:"name"`
	Description string         `json:"description"`
	InputSchema map[string]any `json:"inputSchema"`
}

MCPTool MCP 工具定义

type Manager

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

Manager 管理多个 MCP 服务器连接

func NewManager

func NewManager(registry *tools.ToolRegistry) *Manager

NewManager 创建 MCP 管理器

func (*Manager) Close

func (m *Manager) Close() error

Close 关闭所有连接

func (*Manager) Connect

func (m *Manager) Connect(ctx context.Context, config ServerConfig) error

Connect 连接到 MCP 服务器并注册其工具

func (*Manager) ConnectAll

func (m *Manager) ConnectAll(ctx context.Context, configs []ServerConfig) []error

ConnectAll 批量连接多个服务器

func (*Manager) ConnectFromConfig

func (m *Manager) ConnectFromConfig(ctx context.Context, configPath string) error

ConnectFromConfig 从配置文件连接所有 MCP 服务器

func (*Manager) Disconnect

func (m *Manager) Disconnect(name string) error

Disconnect 断开服务器连接并注销工具

func (*Manager) ListAllTools

func (m *Manager) ListAllTools() map[string][]MCPTool

ListAllTools 列出所有 MCP 工具(按服务器分组)

func (*Manager) ListServers

func (m *Manager) ListServers() map[string]ServerConfig

ListServers 列出所有已连接的服务器

type PromptsCapability

type PromptsCapability struct {
	ListChanged bool `json:"listChanged,omitempty"`
}

type RPCError

type RPCError struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    any    `json:"data,omitempty"`
}

RPCError JSON-RPC 2.0 错误

func (*RPCError) Error

func (e *RPCError) Error() string

type Request

type Request struct {
	JSONRPC string `json:"jsonrpc"`
	ID      int    `json:"id"`
	Method  string `json:"method"`
	Params  any    `json:"params,omitempty"`
}

Request JSON-RPC 2.0 请求

type ResourcesCapability

type ResourcesCapability struct {
	ListChanged bool `json:"listChanged,omitempty"`
}

type Response

type Response struct {
	JSONRPC string          `json:"jsonrpc"`
	ID      int             `json:"id"`
	Result  json.RawMessage `json:"result,omitempty"`
	Error   *RPCError       `json:"error,omitempty"`
}

Response JSON-RPC 2.0 响应

type RootsCapability

type RootsCapability struct {
	ListChanged bool `json:"listChanged,omitempty"`
}

type SSEConfig added in v1.1.0

type SSEConfig struct {
	// URL SSE 端点地址,如 http://localhost:8080/sse
	URL string
	// Headers 自定义 HTTP 请求头(如认证头)
	Headers map[string]string
	// HTTPClient 自定义 HTTP 客户端(可选)
	HTTPClient *http.Client
}

SSEConfig SSE 传输配置

type SSETransport added in v1.1.0

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

SSETransport 基于 HTTP + Server-Sent Events 的传输层 协议流程:

  1. 客户端 GET 连接 SSE 端点
  2. 服务端发送 endpoint 事件,告知 POST 地址
  3. 客户端 POST JSON-RPC 消息到该地址
  4. 服务端通过 SSE message 事件返回响应

func NewSSETransport added in v1.1.0

func NewSSETransport(config SSEConfig) *SSETransport

func (*SSETransport) Close added in v1.1.0

func (t *SSETransport) Close() error

func (*SSETransport) Connect added in v1.1.0

func (t *SSETransport) Connect(ctx context.Context) error

func (*SSETransport) Recv added in v1.1.0

func (t *SSETransport) Recv() ([]byte, error)

func (*SSETransport) Send added in v1.1.0

func (t *SSETransport) Send(data []byte) error

type SamplingCapability

type SamplingCapability struct{}

type ServerCapabilities

type ServerCapabilities struct {
	Tools     *ToolsCapability     `json:"tools,omitempty"`
	Resources *ResourcesCapability `json:"resources,omitempty"`
	Prompts   *PromptsCapability   `json:"prompts,omitempty"`
	Logging   *LoggingCapability   `json:"logging,omitempty"`
}

ServerCapabilities 服务器能力

type ServerConfig

type ServerConfig struct {
	Name      string          `json:"name"`      // 服务器名称(用于日志和工具名前缀)
	Transport TransportConfig `json:"transport"` // 传输配置
	Enabled   bool            `json:"enabled"`   // 是否启用(默认 true)
	Prefix    string          `json:"prefix"`    // 工具名前缀(默认用 Name)
	Tags      []string        `json:"tags"`      // 额外标签
}

ServerConfig MCP 服务器配置

func LoadConfig

func LoadConfig(path string) ([]ServerConfig, error)

LoadConfig 从 JSON 文件加载 MCP 配置

type ServerInfo

type ServerInfo struct {
	Name    string `json:"name"`
	Version string `json:"version"`
}

ServerInfo 服务器信息

type StdioConfig

type StdioConfig struct {
	Command string   // 可执行文件路径
	Args    []string // 命令参数
	Env     []string // 额外环境变量(格式 KEY=VALUE)
	WorkDir string   // 工作目录
}

StdioConfig Stdio 传输配置

type StdioTransport

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

StdioTransport 基于子进程 stdio 的传输层 协议:每行一个 JSON 对象,以换行符分隔

func NewStdioTransport

func NewStdioTransport(config StdioConfig) *StdioTransport

func (*StdioTransport) Close

func (t *StdioTransport) Close() error

func (*StdioTransport) Connect

func (t *StdioTransport) Connect(ctx context.Context) error

func (*StdioTransport) Recv

func (t *StdioTransport) Recv() ([]byte, error)

func (*StdioTransport) Send

func (t *StdioTransport) Send(data []byte) error

type ToolsCapability

type ToolsCapability struct {
	ListChanged bool `json:"listChanged,omitempty"`
}

type Transport

type Transport interface {
	// Connect 建立连接
	Connect(ctx context.Context) error
	// Send 发送数据(一帧)
	Send(data []byte) error
	// Recv 接收数据(一帧)
	Recv() ([]byte, error)
	// Close 关闭连接
	Close() error
}

Transport MCP 传输层接口

type TransportConfig

type TransportConfig struct {
	Type    string   `json:"type"`    // "stdio" 或 "sse"
	Command string   `json:"command"` // stdio: 命令路径
	Args    []string `json:"args"`    // stdio: 命令参数
	Env     []string `json:"env"`     // stdio: 环境变量
	WorkDir string   `json:"work_dir"`

	// SSE 传输配置
	URL     string            `json:"url"`     // sse: SSE 端点地址
	Headers map[string]string `json:"headers"` // sse: 自定义请求头(如认证)
}

TransportConfig 传输层配置

Jump to

Keyboard shortcuts

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