MCPcopy Create free account
hub / github.com/modelcontextprotocol/go-sdk / CreateMessage

Method CreateMessage

mcp/server.go:1186–1217  ·  view source on GitHub ↗

CreateMessage sends a sampling request to the client. If the client returns multiple content blocks (e.g. parallel tool calls), CreateMessage returns an error. Use [ServerSession.CreateMessageWithTools] for tool-enabled sampling.

(ctx context.Context, params *CreateMessageParams)

Source from the content-addressed store, hash-verified

1184// CreateMessage returns an error. Use [ServerSession.CreateMessageWithTools]
1185// for tool-enabled sampling.
1186func (ss *ServerSession) CreateMessage(ctx context.Context, params *CreateMessageParams) (*CreateMessageResult, error) {
1187 if err := ss.checkInitialized(methodCreateMessage); err != nil {
1188 return nil, err
1189 }
1190 if params == nil {
1191 params = &CreateMessageParams{Messages: []*SamplingMessage{}}
1192 }
1193 if params.Messages == nil {
1194 p2 := *params
1195 p2.Messages = []*SamplingMessage{} // avoid JSON "null"
1196 params = &p2
1197 }
1198 res, err := handleSend[*CreateMessageWithToolsResult](ctx, methodCreateMessage, newServerRequest(ss, orZero[Params](params)))
1199 if err != nil {
1200 return nil, err
1201 }
1202 // Downconvert to singular content.
1203 if len(res.Content) > 1 {
1204 return nil, fmt.Errorf("CreateMessage result has %d content blocks; use CreateMessageWithTools for multiple content", len(res.Content))
1205 }
1206 var content Content
1207 if len(res.Content) > 0 {
1208 content = res.Content[0]
1209 }
1210 return &CreateMessageResult{
1211 Meta: res.Meta,
1212 Content: content,
1213 Model: res.Model,
1214 Role: res.Role,
1215 StopReason: res.StopReason,
1216 }, nil
1217}
1218
1219// CreateMessageWithTools sends a sampling request with tools to the client,
1220// returning a [CreateMessageWithToolsResult] that supports array content

Callers 10

TestEndToEndFunction · 0.80
TestStreamableTransportsFunction · 0.80
Example_samplingFunction · 0.80
samplingToolFunction · 0.80
testSamplingHandlerFunction · 0.80

Calls 2

checkInitializedMethod · 0.95
newServerRequestFunction · 0.85