@@ -57,7 +57,7 @@ func main() {
57
57
}
58
58
}
59
59
60
- func helloHandler (ctx context .Context , requestContext server .RequestContext , request mcp .CallToolRequest ) (*mcp .CallToolResult , error ) {
60
+ func helloHandler (ctx context .Context , requestSession server .RequestSession , request mcp .CallToolRequest ) (*mcp .CallToolResult , error ) {
61
61
name , err := request.RequireString (" name" )
62
62
if err != nil {
63
63
return mcp.NewToolResultError (err.Error ()), nil
@@ -92,7 +92,7 @@ MCP Go handles all the complex protocol details and server management, so you ca
92
92
- [ Resources] ( #resources )
93
93
- [ Tools] ( #tools )
94
94
- [ Prompts] ( #prompts )
95
- - [ RequestContext ] ( #RequestContext )
95
+ - [ RequestSession ] ( #RequestSession )
96
96
- [ Examples] ( #examples )
97
97
- [ Extras] ( #extras )
98
98
- [ Transports] ( #transports )
@@ -154,7 +154,7 @@ func main() {
154
154
)
155
155
156
156
// Add the calculator handler
157
- s.AddTool (calculatorTool, func (ctx context.Context , requestContext server.RequestContext , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
157
+ s.AddTool (calculatorTool, func (ctx context.Context , requestSession server.RequestSession , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
158
158
// Using helper functions for type-safe argument access
159
159
op , err := request.RequireString (" operation" )
160
160
if err != nil {
@@ -252,7 +252,7 @@ resource := mcp.NewResource(
252
252
)
253
253
254
254
// Add resource with its handler
255
- s.AddResource (resource, func (ctx context.Context , requestContext server.RequestContext , request mcp.ReadResourceRequest ) ([]mcp.ResourceContents , error ) {
255
+ s.AddResource (resource, func (ctx context.Context , requestSession server.RequestSession , request mcp.ReadResourceRequest ) ([]mcp.ResourceContents , error ) {
256
256
content , err := os.ReadFile (" README.md" )
257
257
if err != nil {
258
258
return nil , err
@@ -280,7 +280,7 @@ template := mcp.NewResourceTemplate(
280
280
)
281
281
282
282
// Add template with its handler
283
- s.AddResourceTemplate (template, func (ctx context.Context , requestContext server.RequestContext , request mcp.ReadResourceRequest ) ([]mcp.ResourceContents , error ) {
283
+ s.AddResourceTemplate (template, func (ctx context.Context , requestSession server.RequestSession , request mcp.ReadResourceRequest ) ([]mcp.ResourceContents , error ) {
284
284
// Extract ID from the URI using regex matching
285
285
// The server automatically matches URIs to templates
286
286
userID := extractIDFromURI (request.Params .URI )
@@ -329,7 +329,7 @@ calculatorTool := mcp.NewTool("calculate",
329
329
),
330
330
)
331
331
332
- s.AddTool (calculatorTool, func (ctx context.Context , requestContext server.RequestContext , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
332
+ s.AddTool (calculatorTool, func (ctx context.Context , requestSession server.RequestSession , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
333
333
args := request.GetArguments ()
334
334
op := args[" operation" ].(string )
335
335
x := args[" x" ].(float64 )
@@ -373,7 +373,7 @@ httpTool := mcp.NewTool("http_request",
373
373
),
374
374
)
375
375
376
- s.AddTool (httpTool, func (ctx context.Context , requestContext server.RequestContext , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
376
+ s.AddTool (httpTool, func (ctx context.Context , requestSession server.RequestSession , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
377
377
args := request.GetArguments ()
378
378
method := args[" method" ].(string )
379
379
url := args[" url" ].(string )
@@ -441,7 +441,7 @@ s.AddPrompt(mcp.NewPrompt("greeting",
441
441
mcp.WithArgument (" name" ,
442
442
mcp.ArgumentDescription (" Name of the person to greet" ),
443
443
),
444
- ), func (ctx context.Context , requestContext server.RequestContext , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
444
+ ), func (ctx context.Context , requestSession server.RequestSession , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
445
445
name := request.Params .Arguments [" name" ]
446
446
if name == " " {
447
447
name = " friend"
@@ -465,7 +465,7 @@ s.AddPrompt(mcp.NewPrompt("code_review",
465
465
mcp.ArgumentDescription (" Pull request number to review" ),
466
466
mcp.RequiredArgument (),
467
467
),
468
- ), func (ctx context.Context , requestContext server.RequestContext , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
468
+ ), func (ctx context.Context , requestSession server.RequestSession , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
469
469
prNumber := request.Params .Arguments [" pr_number" ]
470
470
if prNumber == " " {
471
471
return nil , fmt.Errorf (" pr_number is required" )
@@ -496,7 +496,7 @@ s.AddPrompt(mcp.NewPrompt("query_builder",
496
496
mcp.ArgumentDescription (" Name of the table to query" ),
497
497
mcp.RequiredArgument (),
498
498
),
499
- ), func (ctx context.Context , requestContext server.RequestContext , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
499
+ ), func (ctx context.Context , requestSession server.RequestSession , request mcp.GetPromptRequest ) (*mcp.GetPromptResult , error ) {
500
500
tableName := request.Params .Arguments [" table" ]
501
501
if tableName == " " {
502
502
return nil , fmt.Errorf (" table name is required" )
@@ -531,28 +531,28 @@ Prompts can include:
531
531
532
532
</details >
533
533
534
- ### RequestContext
534
+ ### RequestSession
535
535
<details >
536
- <summary >Show RequestContext Examples</summary >
536
+ <summary >Show RequestSession Examples</summary >
537
537
538
- The RequestContext object provides capabilities to interact with the client, such as sending logging notification and progress notification.
538
+ The RequestSession object provides capabilities to interact with the client, such as sending logging notification and progress notification.
539
539
540
540
``` go
541
- // Example of using RequestContext to send logging notifications and progress notifications
541
+ // Example of using RequestSession to send logging notifications and progress notifications
542
542
mcpServer.AddTool (mcp.NewTool (
543
- " test-RequestContent " ,
544
- mcp.WithDescription (" test RequestContent " ),
545
- ), func (ctx context.Context , requestContext server.RequestContext , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
546
- // you could invoke `requestContext .IsLoggingNotificationSupported()` first the check if server supports logging notification
543
+ " test-RequestSession " ,
544
+ mcp.WithDescription (" test RequestSession " ),
545
+ ), func (ctx context.Context , requestSession server.RequestSession , request mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
546
+ // you could invoke `requestSession .IsLoggingNotificationSupported()` first the check if server supports logging notification
547
547
// ff server does not support logging notification, this method will do nothing.
548
- _ = requestContext .SendLoggingNotification (ctx, mcp.LoggingLevelInfo , map [string ]any{
548
+ _ = requestSession .SendLoggingNotification (ctx, mcp.LoggingLevelInfo , map [string ]any{
549
549
" testLog" : " test send log notification" ,
550
550
})
551
551
552
552
// server should send progress notification if request metadata includes a progressToken
553
553
total := float64 (100 )
554
554
progressMessage := " human readable progress information"
555
- _ = requestContext .SendProgressNotification (ctx, float64 (50 ), &total, &progressMessage)
555
+ _ = requestSession .SendProgressNotification (ctx, float64 (50 ), &total, &progressMessage)
556
556
557
557
return &mcp.CallToolResult {
558
558
Content: []mcp.Content {
@@ -759,7 +759,7 @@ s := server.NewMCPServer(
759
759
The session context is automatically passed to tool and resource handlers:
760
760
761
761
``` go
762
- s.AddTool (mcp.NewTool (" session_aware" ), func (ctx context.Context , requestContext server.RequestContext , req mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
762
+ s.AddTool (mcp.NewTool (" session_aware" ), func (ctx context.Context , requestSession server.RequestSession , req mcp.CallToolRequest ) (*mcp.CallToolResult , error ) {
763
763
// Get the current session from context
764
764
session := server.ClientSessionFromContext (ctx)
765
765
if session == nil {
0 commit comments