Skip to main content
Glama

Trade Me MCP Server

by giussepe198
test_server.py5.59 kB
"""Simple test script to validate Trade Me MCP server functionality.""" import asyncio import os import sys from dotenv import load_dotenv from src.trademe_mcp.client import TradeMeClient from src.trademe_mcp.tools import catalogue, search, listings # Force UTF-8 output on Windows if sys.platform == 'win32': sys.stdout.reconfigure(encoding='utf-8') # Load environment load_dotenv() async def test_catalogue_tools(): """Test catalogue tools (no auth required).""" print("\n=== Testing Catalogue Tools ===") client = TradeMeClient() try: # Test 1: Get categories print("\n1. Testing get_categories...") result = await catalogue.get_categories(client, depth=2) print(f"✓ Got {len(result.get('Subcategories', []))} top-level categories") # Test 2: Get localities print("\n2. Testing get_localities...") result = await catalogue.get_localities(client) print(f"✓ Got locality data") print("\n✅ Catalogue tools working!") except Exception as e: print(f"❌ Error: {e}") finally: client.close() async def test_search_tools(): """Test search tools (no auth required).""" print("\n=== Testing Search Tools ===") client = TradeMeClient() try: # Test 1: General search print("\n1. Testing search_general...") result = await search.search_general(client, search_string="laptop", rows=5) total = result.get('TotalCount', 0) listings = len(result.get('List', [])) print(f"✓ Found {total} total results, showing {listings} listings") # Test 2: Property search print("\n2. Testing search_property_residential...") result = await search.search_property_residential(client, rows=5) total = result.get('TotalCount', 0) print(f"✓ Found {total} residential properties") # Test 3: Motors search print("\n3. Testing search_motors...") result = await search.search_motors(client, make="Toyota", rows=5) total = result.get('TotalCount', 0) print(f"✓ Found {total} Toyota vehicles") print("\n✅ Search tools working!") except Exception as e: print(f"❌ Error: {e}") finally: client.close() async def test_listing_tools(): """Test listing retrieval tools (no auth required).""" print("\n=== Testing Listing Tools ===") client = TradeMeClient() try: # First, get a listing ID from search print("\n1. Getting a test listing ID from search...") search_result = await search.search_general(client, rows=1) if search_result.get('List') and len(search_result['List']) > 0: listing_id = search_result['List'][0]['ListingId'] print(f"✓ Using listing ID: {listing_id}") # Test 2: Get listing details print("\n2. Testing get_listing_details...") result = await listings.get_listing_details(client, listing_id) print(f"✓ Got listing: {result.get('Title', 'N/A')}") print(f" Price: ${result.get('BuyNowPrice', result.get('StartPrice', 'N/A'))}") # Test 3: Get listing photos print("\n3. Testing get_listing_photos...") result = await listings.get_listing_photos(client, listing_id) photo_count = len(result.get('Photos', []) if isinstance(result, dict) else result) print(f"✓ Found {photo_count} photos") print("\n✅ Listing tools working!") else: print("⚠️ No listings found in search to test with") except Exception as e: print(f"❌ Error: {e}") finally: client.close() async def test_authenticated_tools(): """Test authenticated tools (requires access tokens).""" print("\n=== Testing Authenticated Tools ===") if not os.getenv('TRADEME_ACCESS_TOKEN'): print("⚠️ Skipping - No access tokens configured") print(" Set TRADEME_ACCESS_TOKEN and TRADEME_ACCESS_TOKEN_SECRET to test") return client = TradeMeClient() try: print("\n1. Testing get_watchlist...") result = await listings.get_watchlist(client, rows=5) count = len(result.get('List', [])) print(f"✓ Got watchlist with {count} items") print("\n✅ Authenticated tools working!") except Exception as e: print(f"❌ Error: {e}") finally: client.close() async def main(): """Run all tests.""" print("=" * 60) print("Trade Me MCP Server - Test Suite") print("=" * 60) # Check environment env = os.getenv('TRADEME_ENVIRONMENT', 'sandbox') has_consumer_keys = bool(os.getenv('TRADEME_CONSUMER_KEY')) has_access_tokens = bool(os.getenv('TRADEME_ACCESS_TOKEN')) print(f"\nEnvironment: {env}") print(f"Consumer Keys: {'✓ Configured' if has_consumer_keys else '❌ Missing'}") print(f"Access Tokens: {'✓ Configured' if has_access_tokens else '⚠️ Not configured (optional)'}") if not has_consumer_keys: print("\n❌ ERROR: Please set TRADEME_CONSUMER_KEY and TRADEME_CONSUMER_SECRET in .env") print("Get credentials from: https://www.trademe.co.nz/MyTradeMe/Api/DeveloperOptions.aspx") return # Run tests await test_catalogue_tools() await test_search_tools() await test_listing_tools() await test_authenticated_tools() print("\n" + "=" * 60) print("✅ Testing complete!") print("=" * 60) if __name__ == "__main__": asyncio.run(main())

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/giussepe198/trademe-mcp'

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