#!/usr/bin/env python
"""Test script for MCP server
This script tests the MCP server by simulating client interactions.
It sends JSON-RPC requests and verifies responses.
"""
import json
import sys
import asyncio
from g4f.mcp.server import MCPServer, MCPRequest
async def test_mcp_server():
"""Test MCP server functionality"""
server = MCPServer()
print("Testing MCP Server...")
print("=" * 60)
# Test 1: Initialize
print("\n1. Testing initialize request...")
init_request = MCPRequest(jsonrpc="2.0", id=1, method="initialize", params={})
response = await server.handle_request(init_request)
print(f" Response ID: {response.id}")
print(f" Protocol Version: {response.result['protocolVersion']}")
print(f" Server Name: {response.result['serverInfo']['name']}")
print(" ✓ Initialize test passed")
# Test 2: List tools
print("\n2. Testing tools/list request...")
list_request = MCPRequest(jsonrpc="2.0", id=2, method="tools/list", params={})
response = await server.handle_request(list_request)
print(f" Number of tools: {len(response.result['tools'])}")
for tool in response.result["tools"]:
print(f" - {tool['name']}: {tool['description'][:50]}...")
print(" ✓ Tools list test passed")
# Test 3: Ping
print("\n3. Testing ping request...")
ping_request = MCPRequest(jsonrpc="2.0", id=3, method="ping", params={})
response = await server.handle_request(ping_request)
print(f" Response ID: {response.id}")
print(" ✓ Ping test passed")
# Test 4: Invalid method
print("\n4. Testing invalid method request...")
invalid_request = MCPRequest(
jsonrpc="2.0", id=4, method="invalid_method", params={}
)
response = await server.handle_request(invalid_request)
if response.error:
print(f" Error code: {response.error['code']}")
print(f" Error message: {response.error['message']}")
print(" ✓ Invalid method test passed")
# Test 5: Tool schemas
print("\n5. Testing tool input schemas...")
list_request = MCPRequest(jsonrpc="2.0", id=5, method="tools/list", params={})
response = await server.handle_request(list_request)
for tool in response.result["tools"]:
print(f" Tool: {tool['name']}")
schema = tool["inputSchema"]
required = schema.get("required", [])
properties = schema.get("properties", {})
print(f" Required params: {', '.join(required)}")
print(f" All params: {', '.join(properties.keys())}")
print(" ✓ Tool schemas test passed")
print("\n" + "=" * 60)
print("All tests passed! ✓")
print("\nMCP server is working correctly.")
print("\nTo use the server, run:")
print(" python -m g4f.mcp")
print(" or")
print(" g4f mcp")
if __name__ == "__main__":
asyncio.run(test_mcp_server())
#!/usr/bin/env python
"""Test script for MCP server
This script tests the MCP server by simulating client interactions.
It sends JSON-RPC requests and verifies responses.
"""
import json
import sys
import asyncio
from g4f.mcp.server import MCPServer, MCPRequest
async def test_mcp_server():
"""Test MCP server functionality"""
server = MCPServer()
print("Testing MCP Server...")
print("=" * 60)
# Test 1: Initialize
print("\n1. Testing initialize request...")
init_request = MCPRequest(jsonrpc="2.0", id=1, method="initialize", params={})
response = await server.handle_request(init_request)
print(f" Response ID: {response.id}")
print(f" Protocol Version: {response.result['protocolVersion']}")
print(f" Server Name: {response.result['serverInfo']['name']}")
print(" ✓ Initialize test passed")
# Test 2: List tools
print("\n2. Testing tools/list request...")
list_request = MCPRequest(jsonrpc="2.0", id=2, method="tools/list", params={})
response = await server.handle_request(list_request)
print(f" Number of tools: {len(response.result['tools'])}")
for tool in response.result["tools"]:
print(f" - {tool['name']}: {tool['description'][:50]}...")
print(" ✓ Tools list test passed")
# Test 3: Ping
print("\n3. Testing ping request...")
ping_request = MCPRequest(jsonrpc="2.0", id=3, method="ping", params={})
response = await server.handle_request(ping_request)
print(f" Response ID: {response.id}")
print(" ✓ Ping test passed")
# Test 4: Invalid method
print("\n4. Testing invalid method request...")
invalid_request = MCPRequest(
jsonrpc="2.0", id=4, method="invalid_method", params={}
)
response = await server.handle_request(invalid_request)
if response.error:
print(f" Error code: {response.error['code']}")
print(f" Error message: {response.error['message']}")
print(" ✓ Invalid method test passed")
# Test 5: Tool schemas
print("\n5. Testing tool input schemas...")
list_request = MCPRequest(jsonrpc="2.0", id=5, method="tools/list", params={})
response = await server.handle_request(list_request)
for tool in response.result["tools"]:
print(f" Tool: {tool['name']}")
schema = tool["inputSchema"]
required = schema.get("required", [])
properties = schema.get("properties", {})
print(f" Required params: {', '.join(required)}")
print(f" All params: {', '.join(properties.keys())}")
print(" ✓ Tool schemas test passed")
print("\n" + "=" * 60)
print("All tests passed! ✓")
print("\nMCP server is working correctly.")
print("\nTo use the server, run:")
print(" python -m g4f.mcp")
print(" or")
print(" g4f mcp")
if __name__ == "__main__":
asyncio.run(test_mcp_server())