Skip to main content
Glama
test_claude_json.py6.85 kB
#!/usr/bin/env python3 """ Script to test JSON formatting issues that Claude might encounter This simulates different ways Claude might format JSON data """ import os import sys import json import time from pathlib import Path from dotenv import load_dotenv # Try loading environment variables env_path = Path('.env') if env_path.exists(): load_dotenv(dotenv_path=env_path) print(f"Loaded environment from .env") else: load_dotenv() # Fallback to default .env print(f"Loaded environment from .env") # User ID to test with USER_ID = "16263830569" # Import the Zep Cloud client try: # Try to import from the core directory sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from core.zep_cloud_client import ZepCloudClient print("Successfully imported ZepCloudClient") except ImportError as e: print(f"Failed to import ZepCloudClient: {str(e)}") print("Make sure zep_cloud_client.py is accessible.") sys.exit(1) def test_claude_json_handling(): """Test various JSON formatting scenarios that Claude might use""" print(f"\n=== Testing Claude JSON Handling for user: {USER_ID} ===") # Create client try: client = ZepCloudClient() print(f"Successfully initialized ZepCloudClient") except Exception as e: print(f"Error initializing client: {str(e)}") sys.exit(1) # Test scenarios simulating how Claude might format JSON data test_scenarios = [ { "name": "Standard JSON Object", "json_data": {"name": "Test User", "age": 30, "active": True}, "expected_success": True }, { "name": "JSON with nested quotes", "json_data": '{"name": "Test User", "message": "Hello, this is a \"quoted\" message"}', "expected_success": True, "is_string": True }, { "name": "JSON with extra quotes", "json_data": '\'{"name": "Extra Quotes Test", "age": 30}\'', "expected_success": False, "is_string": True }, { "name": "JSON with formatted string", "json_data": """ { "name": "Formatted JSON", "description": "JSON with newlines and indentation", "items": [1, 2, 3] } """, "expected_success": True, "is_string": True }, { "name": "JSON with escaped backslashes", "json_data": '{"path": "C:\\\\Users\\\\Documents"}', "expected_success": True, "is_string": True }, { "name": "Using JSON Object With String Value", "json_data": {"data": '{"nested": "value"}'}, "expected_success": False } ] # Run each test scenario for scenario in test_scenarios: print(f"\n== Testing: {scenario['name']} ==") data = scenario["json_data"] is_string = scenario.get("is_string", False) if not is_string: try: data = json.dumps(data) except Exception as e: print(f"❌ Error converting to JSON string: {str(e)}") continue print(f"JSON data: {data}") print(f"Type: {type(data)}") print(f"Expected success: {scenario['expected_success']}") # Try adding to graph try: result = client.add_graph_data(USER_ID, data, "json") if result and result.get("success"): success = True uuid = result.get("response", {}).get("uuid", "unknown") print(f"✅ Success! Added JSON data to graph. UUID: {uuid}") else: success = False error = result.get("error", "Unknown error") if result else "Empty result" print(f"❌ Failed: {error}") if success == scenario["expected_success"]: print(f"✓ Result matches expected outcome") else: print(f"✗ Result differs from expected outcome") except Exception as e: print(f"❌ Exception during test: {str(e)}") import traceback traceback.print_exc() # Test modifying the client implementation to handle potential issues print("\n== Testing modified client approach ==") test_data = '{"name": "Modified Client Test", "value": "This tests a more robust implementation"}' print(f"Test data: {test_data}") try: # Try to fix common JSON formatting issues that Claude might introduce if isinstance(test_data, str): # Handle potential extra quotes that Claude might add if test_data.startswith("'") and test_data.endswith("'"): test_data = test_data[1:-1] elif test_data.startswith('"') and test_data.endswith('"'): test_data = test_data[1:-1] # Check if it's already valid JSON try: # Just validate, but keep as string json.loads(test_data) valid_json = True except json.JSONDecodeError: valid_json = False print(f"Warning: Invalid JSON string format") if not valid_json: # Try to fix common issues try: # If it looks like a Python dict literal, try to eval it safely if test_data.strip().startswith("{") and test_data.strip().endswith("}"): import ast obj = ast.literal_eval(test_data) test_data = json.dumps(obj) print(f"Fixed with ast.literal_eval: {test_data}") except Exception as e: print(f"Could not fix JSON format: {str(e)}") # Now try adding to graph result = client.add_graph_data(USER_ID, test_data, "json") if result and result.get("success"): print(f"✅ Successfully added with modified approach") else: error = result.get("error", "Unknown error") if result else "Empty result" print(f"❌ Failed with modified approach: {error}") except Exception as e: print(f"❌ Exception during modified test: {str(e)}") # Final summary print("\n=== Test Summary ===") print("Completed testing of Claude JSON handling scenarios") print("Based on these results, we can update the client implementation to handle Claude's JSON format better") if __name__ == "__main__": test_claude_json_handling()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fshamim/mcp-server-zep-cloud'

If you have feedback or need assistance with the MCP directory API, please join our Discord server