MCPcopy Index your code
hub / github.com/docker/docker-agent / samplingMessagesToChat

Function samplingMessagesToChat

pkg/runtime/sampling.go:103–142  ·  view source on GitHub ↗

samplingMessagesToChat converts an MCP CreateMessageParams into the host's chat.Message slice. The optional system prompt is prepended; per-message Content is mapped from the supported MCP block types. Oversized payloads and nil/unsupported entries surface as errors so the request is rejected rather

(req *mcp.CreateMessageParams)

Source from the content-addressed store, hash-verified

101// Oversized payloads and nil/unsupported entries surface as errors so
102// the request is rejected rather than silently truncated.
103func samplingMessagesToChat(req *mcp.CreateMessageParams) ([]chat.Message, error) {
104 if len(req.Messages) == 0 {
105 return nil, errors.New("sampling request contains no messages")
106 }
107 if len(req.Messages) > maxSamplingMessages {
108 return nil, fmt.Errorf("sampling request contains %d messages (limit %d)",
109 len(req.Messages), maxSamplingMessages)
110 }
111
112 messages := make([]chat.Message, 0, len(req.Messages)+1)
113 if req.SystemPrompt != "" {
114 if len(req.SystemPrompt) > maxSamplingTextBytes {
115 return nil, fmt.Errorf("sampling system prompt is too large (%d bytes, limit %d)",
116 len(req.SystemPrompt), maxSamplingTextBytes)
117 }
118 messages = append(messages, chat.Message{
119 Role: chat.MessageRoleSystem,
120 Content: req.SystemPrompt,
121 })
122 }
123 for i, m := range req.Messages {
124 if m == nil {
125 return nil, fmt.Errorf("sampling message at index %d is nil", i)
126 }
127 role, err := samplingRoleToChat(m.Role)
128 if err != nil {
129 return nil, err
130 }
131 text, parts, err := samplingContentToChat(m.Content)
132 if err != nil {
133 return nil, fmt.Errorf("sampling message at index %d: %w", i, err)
134 }
135 messages = append(messages, chat.Message{
136 Role: role,
137 Content: text,
138 MultiContent: parts,
139 })
140 }
141 return messages, nil
142}
143
144func samplingRoleToChat(r mcp.Role) (chat.MessageRole, error) {
145 switch string(r) {

Callers 2

samplingHandlerMethod · 0.85

Calls 3

samplingRoleToChatFunction · 0.85
samplingContentToChatFunction · 0.85
NewMethod · 0.45

Tested by 1