Skip to content

Commit 1d7e656

Browse files
committed
Pass context to handler, but use request context for per-request data
1 parent 283b9ba commit 1d7e656

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

internal/ghmcp/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ func NewStdioMCPServer(cfg github.MCPServerConfig) (*mcp.Server, error) {
144144
return nil, fmt.Errorf("failed to build inventory: %w", err)
145145
}
146146

147-
ghServer, err := github.NewMCPServer(&cfg, deps, inventory)
147+
ghServer, err := github.NewMCPServer(context.Background(), &cfg, deps, inventory)
148148
if err != nil {
149149
return nil, fmt.Errorf("failed to create GitHub MCP server: %w", err)
150150
}

pkg/http/handler.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import (
1616
)
1717

1818
type InventoryFactoryFunc func(r *http.Request) (*inventory.Inventory, error)
19-
type GitHubMCPServerFactoryFunc func(ctx context.Context, r *http.Request, deps github.ToolDependencies, inventory *inventory.Inventory, cfg *github.MCPServerConfig) (*mcp.Server, error)
19+
type GitHubMCPServerFactoryFunc func(r *http.Request, deps github.ToolDependencies, inventory *inventory.Inventory, cfg *github.MCPServerConfig) (*mcp.Server, error)
2020

2121
type HTTPMcpHandler struct {
22+
ctx context.Context
2223
config *HTTPServerConfig
2324
deps github.ToolDependencies
2425
logger *slog.Logger
@@ -46,7 +47,9 @@ func WithInventoryFactory(f InventoryFactoryFunc) HTTPMcpHandlerOption {
4647
}
4748
}
4849

49-
func NewHTTPMcpHandler(cfg *HTTPServerConfig,
50+
func NewHTTPMcpHandler(
51+
ctx context.Context,
52+
cfg *HTTPServerConfig,
5053
deps github.ToolDependencies,
5154
t translations.TranslationHelperFunc,
5255
logger *slog.Logger,
@@ -67,6 +70,7 @@ func NewHTTPMcpHandler(cfg *HTTPServerConfig,
6770
}
6871

6972
return &HTTPMcpHandler{
73+
ctx: ctx,
7074
config: cfg,
7175
deps: deps,
7276
logger: logger,
@@ -112,7 +116,7 @@ func (h *HTTPMcpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
112116
return
113117
}
114118

115-
ghServer, err := h.githubMcpServerFactory(r.Context(), r, h.deps, inventory, &github.MCPServerConfig{
119+
ghServer, err := h.githubMcpServerFactory(r, h.deps, inventory, &github.MCPServerConfig{
116120
Version: h.config.Version,
117121
Translator: h.t,
118122
ContentWindowSize: h.config.ContentWindowSize,
@@ -133,8 +137,8 @@ func (h *HTTPMcpHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
133137
middleware.ExtractUserToken()(mcpHandler).ServeHTTP(w, r)
134138
}
135139

136-
func DefaultGitHubMCPServerFactory(ctx context.Context, _ *http.Request, deps github.ToolDependencies, inventory *inventory.Inventory, cfg *github.MCPServerConfig) (*mcp.Server, error) {
137-
return github.NewMCPServer(&github.MCPServerConfig{
140+
func DefaultGitHubMCPServerFactory(r *http.Request, deps github.ToolDependencies, inventory *inventory.Inventory, cfg *github.MCPServerConfig) (*mcp.Server, error) {
141+
return github.NewMCPServer(r.Context(), &github.MCPServerConfig{
138142
Version: cfg.Version,
139143
Translator: cfg.Translator,
140144
ContentWindowSize: cfg.ContentWindowSize,

pkg/http/server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func RunHTTPServer(cfg HTTPServerConfig) error {
9898

9999
r := chi.NewRouter()
100100

101-
handler := NewHTTPMcpHandler(&cfg, deps, t, logger)
101+
handler := NewHTTPMcpHandler(ctx, &cfg, deps, t, logger)
102102
handler.RegisterRoutes(r)
103103

104104
addr := fmt.Sprintf(":%d", cfg.Port)

0 commit comments

Comments
 (0)