Skip to content

Commit 04c22c1

Browse files
committed
fix: network monitor requestId parsing, largeResultToFile output, bump 0.3.4
- Parse requestId from top level of Network.requestWillBeSent event (not inside request object) — fixes requests overwriting each other - Return nil typed output when saving to file via largeResultToFile, preventing the MCP SDK from also serializing the full data - Bump version to 0.3.4
1 parent a37ecdd commit 04c22c1

5 files changed

Lines changed: 18 additions & 15 deletions

File tree

.claude-plugin/marketplace.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "iwdp-mcp",
3-
"version": "0.3.3",
3+
"version": "0.3.4",
44
"description": "iOS Safari debugging via ios-webkit-debug-proxy — MCP server with full WebKit Inspector Protocol support",
55
"owner": {
66
"name": "nnemirovsky"

.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "iwdp-mcp",
3-
"version": "0.3.3",
3+
"version": "0.3.4",
44
"description": "iOS Safari debugging via ios-webkit-debug-proxy — MCP server with full WebKit Inspector Protocol support",
55
"mcpServers": {
66
"iwdp-mcp": {

cmd/iwdp-mcp/main.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ func lookupInterceptStage(requestID string) string {
5858
func main() {
5959
server := mcp.NewServer(&mcp.Implementation{
6060
Name: "iwdp-mcp",
61-
Version: "0.3.3",
61+
Version: "0.3.4",
6262
}, nil)
6363

6464
registerTools(server)
@@ -668,7 +668,7 @@ func registerTools(server *mcp.Server) {
668668
}
669669
out := EvaluateScriptOutput{Result: result.Result, Type: result.Result.Type}
670670
if fileResult, err := largeResultToFile(out, "eval"); err == nil && fileResult != nil {
671-
return fileResult, out, nil
671+
return fileResult, nil, nil
672672
}
673673
return nil, out, nil
674674
})
@@ -686,7 +686,7 @@ func registerTools(server *mcp.Server) {
686686
}
687687
out := RawOutput{Result: result.Result}
688688
if fileResult, err := largeResultToFile(out, "call-fn"); err == nil && fileResult != nil {
689-
return fileResult, out, nil
689+
return fileResult, nil, nil
690690
}
691691
return nil, out, nil
692692
})
@@ -704,7 +704,7 @@ func registerTools(server *mcp.Server) {
704704
}
705705
out := RawOutput{Result: props}
706706
if fileResult, err := largeResultToFile(out, "props"); err == nil && fileResult != nil {
707-
return fileResult, out, nil
707+
return fileResult, nil, nil
708708
}
709709
return nil, out, nil
710710
})
@@ -723,7 +723,7 @@ func registerTools(server *mcp.Server) {
723723
}
724724
out := RawOutput{Result: doc}
725725
if fileResult, err := largeResultToFile(out, "dom"); err == nil && fileResult != nil {
726-
return fileResult, out, nil
726+
return fileResult, nil, nil
727727
}
728728
return nil, out, nil
729729
})
@@ -769,7 +769,7 @@ func registerTools(server *mcp.Server) {
769769
}
770770
out := GetOuterHTMLOutput{OuterHTML: html}
771771
if fileResult, err := largeResultToFile(out, "html"); err == nil && fileResult != nil {
772-
return fileResult, out, nil
772+
return fileResult, nil, nil
773773
}
774774
return nil, out, nil
775775
})
@@ -961,7 +961,7 @@ func registerTools(server *mcp.Server) {
961961
}
962962
out := RawOutput{Result: nm.GetRequests()}
963963
if fileResult, err := largeResultToFile(out, "network"); err == nil && fileResult != nil {
964-
return fileResult, out, nil
964+
return fileResult, nil, nil
965965
}
966966
return nil, out, nil
967967
})
@@ -979,7 +979,7 @@ func registerTools(server *mcp.Server) {
979979
}
980980
out := GetResponseBodyOutput{Body: body, Base64Encoded: b64}
981981
if fileResult, err := largeResultToFile(out, "response"); err == nil && fileResult != nil {
982-
return fileResult, out, nil
982+
return fileResult, nil, nil
983983
}
984984
return nil, out, nil
985985
})
@@ -1355,7 +1355,7 @@ func registerTools(server *mcp.Server) {
13551355
}
13561356
out := RawOutput{Result: cc.GetMessages()}
13571357
if fileResult, err := largeResultToFile(out, "console"); err == nil && fileResult != nil {
1358-
return fileResult, out, nil
1358+
return fileResult, nil, nil
13591359
}
13601360
return nil, out, nil
13611361
})
@@ -1636,7 +1636,7 @@ func registerTools(server *mcp.Server) {
16361636
}
16371637
out := RawOutput{Result: tc.GetEvents()}
16381638
if fileResult, err := largeResultToFile(out, "timeline"); err == nil && fileResult != nil {
1639-
return fileResult, out, nil
1639+
return fileResult, nil, nil
16401640
}
16411641
return nil, out, nil
16421642
})

internal/tools/network.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,20 @@ func (m *NetworkMonitor) Start(ctx context.Context, client *webkit.Client) error
8383

8484
client.OnEvent("Network.requestWillBeSent", func(method string, params json.RawMessage) {
8585
var evt struct {
86-
Request webkit.NetworkRequest `json:"request"`
86+
RequestID string `json:"requestId"`
87+
Request webkit.NetworkRequest `json:"request"`
8788
}
8889
if err := json.Unmarshal(params, &evt); err != nil {
8990
return
9091
}
92+
// requestId is at the top level of the event, not inside request.
93+
evt.Request.RequestID = evt.RequestID
9194
m.mu.Lock()
9295
if len(m.requests) >= maxCollectorEntries {
9396
m.mu.Unlock()
9497
return
9598
}
96-
m.requests[evt.Request.RequestID] = &CapturedRequest{
99+
m.requests[evt.RequestID] = &CapturedRequest{
97100
Request: evt.Request,
98101
}
99102
m.mu.Unlock()

internal/tools/tools_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@ func TestNetworkMonitor(t *testing.T) {
303303

304304
// Send a Network.requestWillBeSent event.
305305
err := mock.SendEvent("Network.requestWillBeSent", map[string]interface{}{
306+
"requestId": "req-1",
306307
"request": map[string]interface{}{
307-
"requestId": "req-1",
308308
"url": "https://example.com/api",
309309
"method": "GET",
310310
"headers": map[string]string{"Accept": "application/json"},

0 commit comments

Comments
 (0)