Documentation
¶
Index ¶
- type CallToolParams
- type CallToolResult
- type Client
- func (c *Client) CallTool(ctx context.Context, name string, args map[string]any) (*CallToolResult, error)
- func (c *Client) Close() error
- func (c *Client) Connect(ctx context.Context) error
- func (c *Client) ListTools(ctx context.Context) ([]MCPTool, error)
- func (c *Client) ServerCapabilities() *ServerCapabilities
- func (c *Client) ServerInfo() *ServerInfo
- type ClientCapabilities
- type ClientConfig
- type ClientInfo
- type ConfigFile
- type ContentItem
- type InitializeParams
- type InitializeResult
- type ListToolsResult
- type LoggingCapability
- type MCPTool
- type Manager
- func (m *Manager) Close() error
- func (m *Manager) Connect(ctx context.Context, config ServerConfig) error
- func (m *Manager) ConnectAll(ctx context.Context, configs []ServerConfig) []error
- func (m *Manager) ConnectFromConfig(ctx context.Context, configPath string) error
- func (m *Manager) Disconnect(name string) error
- func (m *Manager) ListAllTools() map[string][]MCPTool
- func (m *Manager) ListServers() map[string]ServerConfig
- type PromptsCapability
- type RPCError
- type Request
- type ResourcesCapability
- type Response
- type RootsCapability
- type SSEConfig
- type SSETransport
- type SamplingCapability
- type ServerCapabilities
- type ServerConfig
- type ServerInfo
- type StdioConfig
- type StdioTransport
- type ToolsCapability
- type Transport
- type TransportConfig
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) ServerCapabilities ¶
func (c *Client) ServerCapabilities() *ServerCapabilities
ServerCapabilities 获取服务器能力
type ClientCapabilities ¶
type ClientCapabilities struct {
Roots *RootsCapability `json:"roots,omitempty"`
Sampling *SamplingCapability `json:"sampling,omitempty"`
}
ClientCapabilities 客户端能力
type ClientConfig ¶
ClientConfig 客户端配置
type ClientInfo ¶
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 (*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 ¶
ConnectFromConfig 从配置文件连接所有 MCP 服务器
func (*Manager) Disconnect ¶
Disconnect 断开服务器连接并注销工具
func (*Manager) ListAllTools ¶
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 错误
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 的传输层 协议流程:
- 客户端 GET 连接 SSE 端点
- 服务端发送 endpoint 事件,告知 POST 地址
- 客户端 POST JSON-RPC 消息到该地址
- 服务端通过 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 ¶
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) 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 传输层配置