Skip to content

Commit 7c2d831

Browse files
Revert "New: Global middleware"
1 parent b7fa182 commit 7c2d831

File tree

7 files changed

+1
-320
lines changed

7 files changed

+1
-320
lines changed

README.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,6 @@ func main() {
116116
if err != nil {
117117
log.Fatalf("Failed to create MCP server: %v", err)
118118
}
119-
120-
// Optional: Global middleware (variadic - multiple middleware supported)
121-
// mcpServer.Use(
122-
// LoggingMiddleware,
123-
// AuthMiddleware,
124-
// MetricsMiddleware,
125-
// )
126119

127120
// Register time query tool
128121
tool, err := protocol.NewTool("current_time", "Get current time for specified timezone", TimeRequest{})

README_CN.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,13 +118,6 @@ func main() {
118118
log.Fatalf("创建 MCP 服务器失败: %v", err)
119119
}
120120

121-
// 可选:全局中间件(支持多个中间件参数)
122-
// mcpServer.Use(
123-
// LoggingMiddleware,
124-
// AuthMiddleware,
125-
// MetricsMiddleware,
126-
// )
127-
128121
// 注册时间查询工具
129122
tool, err := protocol.NewTool("current_time", "获取指定时区的当前时间", TimeRequest{})
130123
if err != nil {

README_TW.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,13 +111,6 @@ func main() {
111111
log.Fatalf("建立 MCP 伺服器失敗: %v", err)
112112
}
113113

114-
// 可選:全域中介軟體(支援多個中介軟體參數)
115-
// mcpServer.Use(
116-
// LoggingMiddleware,
117-
// AuthMiddleware,
118-
// MetricsMiddleware,
119-
// )
120-
121114
// 註冊時間查詢工具
122115
tool, err := protocol.NewTool("current_time", "取得指定時區的目前時間", TimeRequest{})
123116
if err != nil {

README_VI.md

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,6 @@ func main() {
112112
log.Fatalf("Failed to create MCP server: %v", err)
113113
}
114114

115-
// Optional: Global middleware (variadic - multiple middleware supported)
116-
// mcpServer.Use(
117-
// LoggingMiddleware,
118-
// AuthMiddleware,
119-
// MetricsMiddleware,
120-
// )
121-
122115
// Register time query tool
123116
tool, err := protocol.NewTool("current_time", "Get current time for specified timezone", TimeRequest{})
124117
if err != nil {

examples/middleware_example/main.go

Lines changed: 0 additions & 191 deletions
This file was deleted.

server/server.go

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,6 @@ type Server struct {
9696
logger pkg.Logger
9797

9898
genSessionID func(ctx context.Context) string
99-
100-
globalMiddlewares []ToolMiddleware
10199
}
102100

103101
func NewServer(t transport.ServerTransport, opts ...Option) (*Server, error) {
@@ -153,10 +151,7 @@ func (server *Server) RegisterTool(tool *protocol.Tool, toolHandler ToolHandlerF
153151
for i := len(middlewares) - 1; i >= 0; i-- {
154152
toolHandler = middlewares[i](toolHandler)
155153
}
156-
157-
finalHandler := server.buildMiddlewareChain(toolHandler)
158-
159-
server.tools.Store(tool.Name, &toolEntry{tool: tool, handler: finalHandler})
154+
server.tools.Store(tool.Name, &toolEntry{tool: tool, handler: toolHandler})
160155
if !server.sessionManager.IsEmpty() {
161156
if err := server.sendNotification4ToolListChanges(context.Background()); err != nil {
162157
server.logger.Warnf("send notification toll list changes fail: %v", err)
@@ -258,25 +253,6 @@ func (server *Server) UnregisterResourceTemplate(uriTemplate string) {
258253
}
259254
}
260255

261-
func (server *Server) Use(middlewares ...ToolMiddleware) {
262-
server.globalMiddlewares = append(server.globalMiddlewares, middlewares...)
263-
}
264-
265-
func (server *Server) buildMiddlewareChain(finalHandler ToolHandlerFunc) ToolHandlerFunc {
266-
if len(server.globalMiddlewares) == 0 {
267-
return finalHandler
268-
}
269-
270-
handler := finalHandler
271-
for i := len(server.globalMiddlewares) - 1; i >= 0; i-- {
272-
middleware := server.globalMiddlewares[i]
273-
currentHandler := handler
274-
handler = middleware(currentHandler)
275-
}
276-
277-
return handler
278-
}
279-
280256
func (server *Server) Shutdown(userCtx context.Context) error {
281257
server.inShutdown.Store(true)
282258

server/server_test.go

Lines changed: 0 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package server
22

33
import (
44
"bufio"
5-
"bytes"
65
"context"
76
"encoding/json"
87
"fmt"
@@ -929,78 +928,3 @@ func testServerRateLimiter(t *testing.T, tt testLimiter) {
929928
// No error, continue
930929
}
931930
}
932-
933-
// Middleware tests
934-
func TestMiddleware(t *testing.T) {
935-
mockTransport := transport.NewMockServerTransport(io.NopCloser(bytes.NewReader(nil)), io.Discard)
936-
937-
s, err := NewServer(mockTransport)
938-
if err != nil {
939-
t.Fatalf("Failed to create server: %v", err)
940-
}
941-
942-
if s == nil {
943-
t.Fatal("Server is nil")
944-
}
945-
946-
testMiddleware := func(next ToolHandlerFunc) ToolHandlerFunc {
947-
return func(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {
948-
return next(ctx, req)
949-
}
950-
}
951-
952-
s.Use(testMiddleware)
953-
}
954-
955-
// TestMiddlewareEarlyReturn tests middleware that can return early
956-
func TestMiddlewareEarlyReturn(t *testing.T) {
957-
mockTransport := transport.NewMockServerTransport(io.NopCloser(bytes.NewReader(nil)), io.Discard)
958-
959-
s, err := NewServer(mockTransport)
960-
if err != nil {
961-
t.Fatalf("Failed to create server: %v", err)
962-
}
963-
964-
if s == nil {
965-
t.Fatal("Server is nil")
966-
}
967-
968-
authMiddleware := func(next ToolHandlerFunc) ToolHandlerFunc {
969-
return func(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {
970-
return nil, context.Canceled
971-
}
972-
}
973-
974-
s.Use(authMiddleware)
975-
}
976-
977-
// TestNoMiddleware tests that tools work without middleware
978-
func TestNoMiddleware(t *testing.T) {
979-
mockTransport := transport.NewMockServerTransport(io.NopCloser(bytes.NewReader(nil)), io.Discard)
980-
981-
s, err := NewServer(mockTransport)
982-
if err != nil {
983-
t.Fatalf("Failed to create server: %v", err)
984-
}
985-
986-
if s == nil {
987-
t.Fatal("Server is nil")
988-
}
989-
990-
testHandler := func(ctx context.Context, req *protocol.CallToolRequest) (*protocol.CallToolResult, error) {
991-
return protocol.NewCallToolResult([]protocol.Content{
992-
&protocol.TextContent{Type: "text", Text: "success"},
993-
}, false), nil
994-
}
995-
996-
testTool := &protocol.Tool{
997-
Name: "test",
998-
Description: "Test tool",
999-
InputSchema: protocol.InputSchema{
1000-
Type: "object",
1001-
Properties: map[string]*protocol.Property{},
1002-
},
1003-
}
1004-
s.RegisterTool(testTool, testHandler)
1005-
1006-
}

0 commit comments

Comments
 (0)