Skip to main content
Glama

Dynamic Per-User Tool Generation MCP Server

test_list_tools.py•3.15 kB
#!/usr/bin/env python3 """ Quick test script to verify list/tools endpoint works """ import asyncio import httpx import json async def test_list_tools(): """Test the list/tools endpoint""" # For FastMCP with HTTP transport, we need to: # 1. First initialize a session # 2. Then call tools/list base_url = "http://127.0.0.1:9092/mcp" headers = { "Content-Type": "application/json", "Accept": "application/json, text/event-stream", "Authorization": "Bearer test-token" } # First, initialize the session init_payload = { "jsonrpc": "2.0", "id": 1, "method": "initialize", "params": { "protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": { "name": "test-client", "version": "1.0.0" } } } tools_payload = { "jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {} } print("šŸ” Testing MCP server...") print(f"Base URL: {base_url}") print(f"Headers: {headers}") print() try: async with httpx.AsyncClient(timeout=30.0) as client: # Step 1: Initialize session print("šŸ“” Step 1: Initializing session...") init_response = await client.post(base_url, json=init_payload, headers=headers) print(f"Status: {init_response.status_code}") if init_response.status_code == 200: init_data = init_response.json() print(f"āœ… Session initialized") print(json.dumps(init_data, indent=2)) else: print(f"āŒ Init failed: {init_response.text}") return print("\n" + "="*80 + "\n") # Step 2: List tools print("šŸ“” Step 2: Listing tools...") tools_response = await client.post(base_url, json=tools_payload, headers=headers) print(f"Status: {tools_response.status_code}") if tools_response.status_code == 200: data = tools_response.json() print("šŸ“¦ Response Data:") print(json.dumps(data, indent=2)) # Check if we have tools if "result" in data and "tools" in data["result"]: tools = data["result"]["tools"] print(f"\nāœ… Found {len(tools)} tools:") for tool in tools: print(f" - {tool.get('name')}: {tool.get('description', 'No description')[:80]}") if tool.get('name') == 'create_request': print(f" šŸ“‹ Parameters: {list(tool.get('inputSchema', {}).get('properties', {}).keys())}") else: print("āš ļø No tools found in response") else: print(f"āŒ Error: {tools_response.text}") except Exception as e: print(f"āŒ Error: {e}") import traceback traceback.print_exc() if __name__ == "__main__": asyncio.run(test_list_tools())

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/ShivamPansuriya/MCP-server-Python'

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