Documentation
¶
Overview ¶
Package mcp provides Model Context Protocol (MCP) server implementation for exposing agent teams to CLI assistants like Gemini CLI and Codex.
Index ¶
- Constants
- type CallToolParams
- type CallToolResult
- type Capabilities
- type ClientInfo
- type ContentBlock
- type ErrorResponse
- type GetPromptParams
- type GetPromptResult
- type InitializeParams
- type InitializeResult
- type InputSchema
- type ListPromptsResult
- type ListResourcesResult
- type ListToolsResult
- type Notification
- type ProgressParams
- type PromptArgument
- type PromptInfo
- type PromptMessage
- type PromptsCapability
- type Property
- type ReadResourceParams
- type ReadResourceResult
- type Request
- type ResourceContent
- type ResourceInfo
- type ResourcesCapability
- type Response
- type Server
- type ServerInfo
- type ToolInfo
- type ToolsCapability
Constants ¶
const ( ErrParseError = -32700 ErrInvalidRequest = -32600 ErrMethodNotFound = -32601 ErrInvalidParams = -32602 ErrInternalError = -32603 )
Standard JSON-RPC error codes
const (
// ProtocolVersion is the supported MCP protocol version.
ProtocolVersion = "2024-11-05"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CallToolParams ¶
type CallToolParams struct {
Name string `json:"name"`
Arguments map[string]interface{} `json:"arguments,omitempty"`
}
CallToolParams represents the tools/call request parameters.
type CallToolResult ¶
type CallToolResult struct {
Content []ContentBlock `json:"content"`
IsError bool `json:"isError,omitempty"`
}
CallToolResult represents the tools/call response.
type Capabilities ¶
type Capabilities struct {
Tools *ToolsCapability `json:"tools,omitempty"`
Resources *ResourcesCapability `json:"resources,omitempty"`
Prompts *PromptsCapability `json:"prompts,omitempty"`
}
Capabilities represents MCP server capabilities.
type ClientInfo ¶
ClientInfo represents MCP client information.
type ContentBlock ¶
type ContentBlock struct {
Type string `json:"type"` // "text" or "image"
Text string `json:"text,omitempty"`
// For images (not used in this implementation)
Data string `json:"data,omitempty"`
MimeType string `json:"mimeType,omitempty"`
}
ContentBlock represents a content block in a tool result.
func NewErrorContent ¶
func NewErrorContent(err error) ContentBlock
NewErrorContent creates an error text content block.
func NewTextContent ¶
func NewTextContent(text string) ContentBlock
NewTextContent creates a text content block.
type ErrorResponse ¶
type ErrorResponse struct {
Code int `json:"code"`
Message string `json:"message"`
Data interface{} `json:"data,omitempty"`
}
ErrorResponse represents a JSON-RPC 2.0 error.
type GetPromptParams ¶
type GetPromptParams struct {
Name string `json:"name"`
Arguments map[string]string `json:"arguments,omitempty"`
}
GetPromptParams represents the prompts/get request parameters.
type GetPromptResult ¶
type GetPromptResult struct {
Description string `json:"description,omitempty"`
Messages []PromptMessage `json:"messages"`
}
GetPromptResult represents the prompts/get response.
type InitializeParams ¶
type InitializeParams struct {
ProtocolVersion string `json:"protocolVersion"`
Capabilities Capabilities `json:"capabilities"`
ClientInfo ClientInfo `json:"clientInfo"`
}
InitializeParams represents the initialize request parameters.
type InitializeResult ¶
type InitializeResult struct {
ProtocolVersion string `json:"protocolVersion"`
Capabilities Capabilities `json:"capabilities"`
ServerInfo ServerInfo `json:"serverInfo"`
}
InitializeResult represents the initialize response.
type InputSchema ¶
type InputSchema struct {
Type string `json:"type"`
Properties map[string]Property `json:"properties,omitempty"`
Required []string `json:"required,omitempty"`
}
InputSchema represents the JSON Schema for tool input.
type ListPromptsResult ¶
type ListPromptsResult struct {
Prompts []PromptInfo `json:"prompts"`
}
ListPromptsResult represents the prompts/list response.
type ListResourcesResult ¶
type ListResourcesResult struct {
Resources []ResourceInfo `json:"resources"`
}
ListResourcesResult represents the resources/list response.
type ListToolsResult ¶
type ListToolsResult struct {
Tools []ToolInfo `json:"tools"`
}
ListToolsResult represents the tools/list response.
type Notification ¶
type Notification struct {
JSONRPC string `json:"jsonrpc"`
Method string `json:"method"`
Params json.RawMessage `json:"params,omitempty"`
}
Notification represents a JSON-RPC notification (no response expected).
type ProgressParams ¶
type ProgressParams struct {
ProgressToken interface{} `json:"progressToken"`
Progress float64 `json:"progress"`
Total float64 `json:"total,omitempty"`
}
ProgressParams represents progress notification parameters.
type PromptArgument ¶
type PromptArgument struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
Required bool `json:"required,omitempty"`
}
PromptArgument represents a prompt argument.
type PromptInfo ¶
type PromptInfo struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
Arguments []PromptArgument `json:"arguments,omitempty"`
}
PromptInfo represents a prompt definition.
type PromptMessage ¶
type PromptMessage struct {
Role string `json:"role"` // "user" or "assistant"
Content ContentBlock `json:"content"`
}
PromptMessage represents a message in a prompt.
type PromptsCapability ¶
type PromptsCapability struct {
ListChanged bool `json:"listChanged,omitempty"`
}
PromptsCapability indicates prompt support.
type Property ¶
type Property struct {
Type string `json:"type"`
Description string `json:"description,omitempty"`
Enum []string `json:"enum,omitempty"`
}
Property represents a JSON Schema property.
type ReadResourceParams ¶
type ReadResourceParams struct {
URI string `json:"uri"`
}
ReadResourceParams represents the resources/read request parameters.
type ReadResourceResult ¶
type ReadResourceResult struct {
Contents []ResourceContent `json:"contents"`
}
ReadResourceResult represents the resources/read response.
type Request ¶
type Request struct {
JSONRPC string `json:"jsonrpc"`
ID json.RawMessage `json:"id,omitempty"`
Method string `json:"method"`
Params json.RawMessage `json:"params,omitempty"`
}
Request represents a JSON-RPC 2.0 request.
type ResourceContent ¶
type ResourceContent struct {
URI string `json:"uri"`
MimeType string `json:"mimeType,omitempty"`
Text string `json:"text,omitempty"`
Blob string `json:"blob,omitempty"` // Base64 encoded
}
ResourceContent represents resource content.
type ResourceInfo ¶
type ResourceInfo struct {
URI string `json:"uri"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
MimeType string `json:"mimeType,omitempty"`
}
ResourceInfo represents a resource definition.
type ResourcesCapability ¶
type ResourcesCapability struct {
Subscribe bool `json:"subscribe,omitempty"`
ListChanged bool `json:"listChanged,omitempty"`
}
ResourcesCapability indicates resource support.
type Response ¶
type Response struct {
JSONRPC string `json:"jsonrpc"`
ID json.RawMessage `json:"id,omitempty"`
Result interface{} `json:"result,omitempty"`
Error *ErrorResponse `json:"error,omitempty"`
}
Response represents a JSON-RPC 2.0 response.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server is an MCP server that exposes agent teams to CLI assistants.
type ServerInfo ¶
ServerInfo represents MCP server information.
type ToolInfo ¶
type ToolInfo struct {
Name string `json:"name"`
Description string `json:"description,omitempty"`
InputSchema InputSchema `json:"inputSchema"`
}
ToolInfo represents a tool definition.
type ToolsCapability ¶
type ToolsCapability struct {
ListChanged bool `json:"listChanged,omitempty"`
}
ToolsCapability indicates tool support.