feat: 🔒️ Add token authentication
Tim Izzo tim@5ika.ch
Tue, 23 Dec 2025 14:28:47 +0100
A
auth.go
@@ -0,0 +1,22 @@
+package main + +import ( + "context" + "fmt" + "log" + + "github.com/modelcontextprotocol/go-sdk/mcp" +) + +func createAuthMiddleware(token string) mcp.Middleware { + log.Println("Use auth token") + return func(next mcp.MethodHandler) mcp.MethodHandler { + return func(ctx context.Context, method string, req mcp.Request) (mcp.Result, error) { + authHeader := req.GetExtra().Header.Get("Authorization") + if authHeader != "Bearer "+token { + return nil, fmt.Errorf("unauthorized") + } + return next(ctx, method, req) + } + } +}
M
main.go
→
main.go
@@ -13,6 +13,7 @@ var (
host = flag.String("host", "localhost", "host to connect to/listen on") port = flag.Int("port", 8080, "port number to connect to/listen on") todoFilePath = flag.String("file", "./todo.txt", "path to todo.txt") + authToken = flag.String("token", "", "Authentication token") ) func main() {@@ -25,6 +26,10 @@ Version: "1.0.0",
}, nil) server.AddReceivingMiddleware(createLoggingMiddleware()) + + if *authToken != "" { + server.AddReceivingMiddleware(createAuthMiddleware(*authToken)) + } mcp.AddTool(server, &mcp.Tool{ Name: "listTasks",