Skip to content

Commit fd08508

Browse files
committed
update readme
1 parent 8ab7d00 commit fd08508

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

README.md

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ func main() {
5757
}
5858
}
5959

60-
func helloHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
60+
func helloHandler(ctx context.Context, requestContext server.RequestContext, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
6161
name, err := request.RequireString("name")
6262
if err != nil {
6363
return mcp.NewToolResultError(err.Error()), nil
@@ -92,6 +92,7 @@ MCP Go handles all the complex protocol details and server management, so you ca
9292
- [Resources](#resources)
9393
- [Tools](#tools)
9494
- [Prompts](#prompts)
95+
- [RequestContext](#RequestContext)
9596
- [Examples](#examples)
9697
- [Extras](#extras)
9798
- [Transports](#transports)
@@ -153,7 +154,7 @@ func main() {
153154
)
154155

155156
// Add the calculator handler
156-
s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
157+
s.AddTool(calculatorTool, func(ctx context.Context, requestContext server.RequestContext, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
157158
// Using helper functions for type-safe argument access
158159
op, err := request.RequireString("operation")
159160
if err != nil {
@@ -251,7 +252,7 @@ resource := mcp.NewResource(
251252
)
252253

253254
// Add resource with its handler
254-
s.AddResource(resource, func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) {
255+
s.AddResource(resource, func(ctx context.Context, requestContext server.RequestContext, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) {
255256
content, err := os.ReadFile("README.md")
256257
if err != nil {
257258
return nil, err
@@ -279,7 +280,7 @@ template := mcp.NewResourceTemplate(
279280
)
280281

281282
// Add template with its handler
282-
s.AddResourceTemplate(template, func(ctx context.Context, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) {
283+
s.AddResourceTemplate(template, func(ctx context.Context, requestContext server.RequestContext, request mcp.ReadResourceRequest) ([]mcp.ResourceContents, error) {
283284
// Extract ID from the URI using regex matching
284285
// The server automatically matches URIs to templates
285286
userID := extractIDFromURI(request.Params.URI)
@@ -328,7 +329,7 @@ calculatorTool := mcp.NewTool("calculate",
328329
),
329330
)
330331

331-
s.AddTool(calculatorTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
332+
s.AddTool(calculatorTool, func(ctx context.Context, requestContext server.RequestContext, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
332333
args := request.GetArguments()
333334
op := args["operation"].(string)
334335
x := args["x"].(float64)
@@ -372,7 +373,7 @@ httpTool := mcp.NewTool("http_request",
372373
),
373374
)
374375

375-
s.AddTool(httpTool, func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
376+
s.AddTool(httpTool, func(ctx context.Context, requestContext server.RequestContext, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
376377
args := request.GetArguments()
377378
method := args["method"].(string)
378379
url := args["url"].(string)
@@ -440,7 +441,7 @@ s.AddPrompt(mcp.NewPrompt("greeting",
440441
mcp.WithArgument("name",
441442
mcp.ArgumentDescription("Name of the person to greet"),
442443
),
443-
), func(ctx context.Context, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
444+
), func(ctx context.Context, requestContext server.RequestContext, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
444445
name := request.Params.Arguments["name"]
445446
if name == "" {
446447
name = "friend"
@@ -464,7 +465,7 @@ s.AddPrompt(mcp.NewPrompt("code_review",
464465
mcp.ArgumentDescription("Pull request number to review"),
465466
mcp.RequiredArgument(),
466467
),
467-
), func(ctx context.Context, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
468+
), func(ctx context.Context, requestContext server.RequestContext, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
468469
prNumber := request.Params.Arguments["pr_number"]
469470
if prNumber == "" {
470471
return nil, fmt.Errorf("pr_number is required")
@@ -495,7 +496,7 @@ s.AddPrompt(mcp.NewPrompt("query_builder",
495496
mcp.ArgumentDescription("Name of the table to query"),
496497
mcp.RequiredArgument(),
497498
),
498-
), func(ctx context.Context, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
499+
), func(ctx context.Context, requestContext server.RequestContext, request mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
499500
tableName := request.Params.Arguments["table"]
500501
if tableName == "" {
501502
return nil, fmt.Errorf("table name is required")
@@ -530,6 +531,9 @@ Prompts can include:
530531

531532
</details>
532533

534+
### RequestContext
535+
536+
533537
## Examples
534538

535539
For examples, see the [`examples/`](examples/) directory.
@@ -723,7 +727,7 @@ s := server.NewMCPServer(
723727
The session context is automatically passed to tool and resource handlers:
724728

725729
```go
726-
s.AddTool(mcp.NewTool("session_aware"), func(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
730+
s.AddTool(mcp.NewTool("session_aware"), func(ctx context.Context, requestContext server.RequestContext, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
727731
// Get the current session from context
728732
session := server.ClientSessionFromContext(ctx)
729733
if session == nil {

0 commit comments

Comments
 (0)