Skip to content

Commit cbb0960

Browse files
committed
fixes
1 parent bfbc228 commit cbb0960

File tree

9 files changed

+80
-20
lines changed

9 files changed

+80
-20
lines changed

www/docs/pages/clients/transports.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,22 +116,22 @@ func handleStdioErrors(c *client.StdioClient) {
116116

117117
if err != nil {
118118
switch {
119-
case errors.Is(err, client.ErrProcessExited):
119+
case errors.Is(err, ErrProcessExited):
120120
log.Println("Server process exited unexpectedly")
121121
// Attempt to restart
122122
if restartErr := c.Restart(); restartErr != nil {
123123
log.Printf("Failed to restart: %v", restartErr)
124124
}
125125

126-
case errors.Is(err, client.ErrProcessTimeout):
126+
case errors.Is(err, ErrProcessTimeout):
127127
log.Println("Server process timed out")
128128
// Kill and restart process
129129
c.Kill()
130130
if restartErr := c.Restart(); restartErr != nil {
131131
log.Printf("Failed to restart: %v", restartErr)
132132
}
133133

134-
case errors.Is(err, client.ErrBrokenPipe):
134+
case errors.Is(err, ErrBrokenPipe):
135135
log.Println("Communication pipe broken")
136136
// Process likely crashed, restart
137137
if restartErr := c.Restart(); restartErr != nil {

www/docs/pages/servers/basics.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ Configure transport-specific options:
181181
// HTTP with custom options
182182
httpServer := server.NewStreamableHTTPServer(s,
183183
server.WithEndpointPath("/mcp"),
184-
server.WithStateLess(true),
184+
server.WithStateless(true),
185185
)
186186

187187
if err := httpServer.Start(":8080"); err != nil {

www/docs/pages/servers/index.mdx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,10 @@ import (
3131
"github.com/mark3labs/mcp-go/server"
3232
)
3333

34+
var start time.Time
35+
3436
func main() {
37+
start = time.Now()
3538
// Create server with capabilities
3639
s := server.NewMCPServer(
3740
"Demo Server",
@@ -99,7 +102,7 @@ func handleConfig(ctx context.Context, req mcp.ReadResourceRequest) ([]mcp.Resou
99102
config := map[string]interface{}{
100103
"name": "Demo Server",
101104
"version": "1.0.0",
102-
"uptime": time.Since(time.Now()).String(),
105+
"uptime": time.Since(start).String(),
103106
}
104107

105108
configJSON, err := json.Marshal(config)
@@ -119,7 +122,7 @@ func handleConfig(ctx context.Context, req mcp.ReadResourceRequest) ([]mcp.Resou
119122
func handleAnalyzeLogs(ctx context.Context, req mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
120123
logLevel := "error" // default value
121124
if args := req.Params.Arguments; args != nil {
122-
if level, ok := args["log_level"]; ok {
125+
if level, ok := args["log_level"].(string); ok {
123126
logLevel = level
124127
}
125128
}

www/docs/pages/servers/resources.mdx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -400,11 +400,13 @@ func handleResourceWithErrors(ctx context.Context, req mcp.ReadResourceRequest)
400400
return nil, err
401401
}
402402

403-
return []mcp.ResourceContents{
404-
mcp.TextResourceContents{
405-
URI: req.Params.URI,
406-
MIMEType: "application/json",
407-
Text: string(jsonData),
403+
return &mcp.ReadResourceResult{
404+
Contents: []mcp.ResourceContents{
405+
mcp.TextResourceContents{
406+
URI: req.Params.URI,
407+
MIMEType: "application/json",
408+
Text: string(jsonData),
409+
},
408410
},
409411
}, nil
410412
}

www/docs/pages/transports/http.mdx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func main() {
267267
}
268268

269269
// Add middleware
270-
addHTTPMiddleware(s)
270+
setupHTTPMiddleware(s)
271271

272272
// Add comprehensive tools
273273
addCRUDTools(s)
@@ -281,7 +281,7 @@ func main() {
281281
}
282282

283283
// Helper functions for the advanced example
284-
func addHTTPMiddleware(s *server.MCPServer) {
284+
func setupHTTPMiddleware(s *server.MCPServer) {
285285
// Placeholder implementation - would add middleware
286286
}
287287

www/docs/pages/transports/index.mdx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,10 @@ func main() {
7474
}
7575

7676
func handleEcho(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
77-
message := req.Params.Arguments["message"].(string)
77+
message, err := req.RequireString("message")
78+
if err != nil {
79+
return nil, err
80+
}
7881
return mcp.NewToolResultText(fmt.Sprintf("Echo: %s", message)), nil
7982
}
8083
```

www/docs/pages/transports/inprocess.mdx

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,16 +400,46 @@ func handleZeroCopyOperation(ctx context.Context, req mcp.CallToolRequest) (*mcp
400400
return mcp.NewToolResultText(fmt.Sprintf("Processed %d bytes", len(processed))), nil
401401
}
402402

403+
// Context key for shared buffer
404+
type sharedBufferKey struct{}
405+
403406
// Helper functions for zero-copy operations
404407
func getSharedBuffer(ctx context.Context) *SharedBuffer {
405-
// Placeholder implementation - would extract buffer from context
408+
if buffer, ok := ctx.Value(sharedBufferKey{}).(*SharedBuffer); ok {
409+
return buffer
410+
}
406411
return nil
407412
}
408413

414+
// Helper function to add shared buffer to context
415+
func withSharedBuffer(ctx context.Context, buffer *SharedBuffer) context.Context {
416+
return context.WithValue(ctx, sharedBufferKey{}, buffer)
417+
}
418+
409419
func processInPlace(data []byte) []byte {
410420
// Placeholder implementation - would process data in-place
411421
return data
412422
}
423+
424+
// Example usage of shared buffer with context
425+
func exampleZeroCopyUsage() {
426+
// Create a shared buffer
427+
buffer := NewSharedBuffer(1024)
428+
buffer.Write([]byte("example data"))
429+
430+
// Create context with shared buffer
431+
ctx := withSharedBuffer(context.Background(), buffer)
432+
433+
// Call tool with shared buffer context
434+
req := mcp.CallToolRequest{Name: "zero-copy-op"}
435+
result, err := handleZeroCopyOperation(ctx, req)
436+
if err != nil {
437+
log.Printf("Error: %v", err)
438+
return
439+
}
440+
441+
log.Printf("Result: %s", result.Content[0].Text)
442+
}
413443
```
414444

415445
## Direct Server Integration

www/docs/pages/transports/sse.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ func broadcastUserCount() {
237237
log.Println("Broadcasting user count update")
238238
}
239239

240-
func addCollaborativeTools(s *server.MCPServer) {
240+
func addCollaborativeToolsPlaceholder(s *server.MCPServer) {
241241
// Placeholder implementation - would add collaborative tools
242242
}
243243

www/docs/pages/transports/stdio.mdx

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,13 +124,35 @@ func handleFileContent(ctx context.Context, req mcp.ReadResourceRequest) (*mcp.R
124124
}
125125

126126
func isValidPath(path string) bool {
127-
// Prevent directory traversal
128-
if filepath.IsAbs(path) {
127+
// Clean the path to resolve any . or .. components
128+
clean := filepath.Clean(path)
129+
130+
// Check for directory traversal patterns
131+
if strings.Contains(clean, "..") {
129132
return false
130133
}
131134

132-
clean := filepath.Clean(path)
133-
return !filepath.IsAbs(clean) && !strings.Contains(clean, "..")
135+
// For absolute paths, ensure they're within a safe base directory
136+
if filepath.IsAbs(clean) {
137+
// Define safe base directories (adjust as needed for your use case)
138+
safeBaseDirs := []string{
139+
"/tmp",
140+
"/var/tmp",
141+
"/home",
142+
"/Users", // macOS
143+
}
144+
145+
// Check if the path starts with any safe base directory
146+
for _, baseDir := range safeBaseDirs {
147+
if strings.HasPrefix(clean, baseDir) {
148+
return true
149+
}
150+
}
151+
return false
152+
}
153+
154+
// For relative paths, ensure they don't escape the current directory
155+
return !strings.HasPrefix(clean, "..")
134156
}
135157

136158
// Helper functions for the examples

0 commit comments

Comments
 (0)