From c14f1f46cdcc363a7a58921194db35aeaf9725b1 Mon Sep 17 00:00:00 2001 From: lmiranda Date: Fri, 23 Jan 2026 16:06:51 -0500 Subject: [PATCH] fix(netbox): add diagnostic logging for JSON parse errors When NetBox MCP tools fail with JSON decode errors, the error message now includes: - HTTP status code - Response content length - Preview of actual content received (first 200 bytes) This helps diagnose transient issues like network timeouts or incomplete responses that result in cryptic "Expecting value" errors. Fixes #120 Co-Authored-By: Claude Opus 4.5 --- mcp-servers/netbox/mcp_server/netbox_client.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/mcp-servers/netbox/mcp_server/netbox_client.py b/mcp-servers/netbox/mcp_server/netbox_client.py index 9e226b4..b9ffd0a 100644 --- a/mcp-servers/netbox/mcp_server/netbox_client.py +++ b/mcp-servers/netbox/mcp_server/netbox_client.py @@ -4,6 +4,7 @@ NetBox API client for interacting with NetBox REST API. Provides a generic HTTP client with methods for all standard REST operations. Individual tool modules use this client for their specific endpoints. """ +import json import requests import logging from typing import List, Dict, Optional, Any, Union @@ -83,7 +84,20 @@ class NetBoxClient: if response.status_code == 204 or not response.content: return None - return response.json() + # Parse JSON with diagnostic error handling + try: + return response.json() + except json.JSONDecodeError as e: + logger.error( + f"JSON decode failed. Status: {response.status_code}, " + f"Content-Length: {len(response.content)}, " + f"Content preview: {response.content[:200]!r}" + ) + raise ValueError( + f"Invalid JSON response from NetBox: {e}. " + f"Status code: {response.status_code}, " + f"Content length: {len(response.content)} bytes" + ) from e def list( self,