Files
mcp-summary/test_mcp_server.py

156 lines
4.6 KiB
Python

#!/usr/bin/env python3
"""
Test script to verify MCP summary server connectivity and functionality.
"""
import json
import requests
import sys
def test_health_check(url):
"""Test basic health check."""
try:
response = requests.get(url, timeout=5)
print(f"✓ Health check: {response.status_code}")
print(f" Response: {response.json()}")
return True
except Exception as e:
print(f"✗ Health check failed: {e}")
return False
def test_mcp_initialize(url, api_key=None):
"""Test MCP initialization."""
headers = {
"Content-Type": "application/json"
}
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "test-client",
"version": "1.0.0"
}
}
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=10)
print(f"✓ MCP Initialize: {response.status_code}")
print(f" Response: {response.json()}")
return response.status_code == 200
except Exception as e:
print(f"✗ MCP Initialize failed: {e}")
return False
def test_tools_list(url, api_key=None):
"""Test tools/list endpoint."""
headers = {
"Content-Type": "application/json"
}
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
payload = {
"jsonrpc": "2.0",
"id": 2,
"method": "tools/list",
"params": {}
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=10)
print(f"✓ Tools List: {response.status_code}")
print(f" Response: {response.json()}")
return response.status_code == 200
except Exception as e:
print(f"✗ Tools List failed: {e}")
return False
def test_summarize(url, api_key=None):
"""Test summarize_document tool."""
headers = {
"Content-Type": "application/json"
}
if api_key:
headers["Authorization"] = f"Bearer {api_key}"
# Simple test text
test_text = """
The Supreme Court of Canada decided in R v. Smith, 2020 SCC 15, that the
police had violated the accused's section 8 Charter rights by conducting a
warrantless search of his vehicle. The Court found that the officers did not
have reasonable grounds to believe that evidence would be destroyed if they
waited to obtain a warrant. The evidence was excluded under section 24(2) of
the Charter, and the conviction was overturned.
"""
payload = {
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "summarize_document",
"arguments": {
"text": test_text,
"max_length": 50
}
}
}
try:
response = requests.post(url, headers=headers, json=payload, timeout=120)
print(f"✓ Summarize Test: {response.status_code}")
print(f" Response: {response.json()}")
return response.status_code == 200
except Exception as e:
print(f"✗ Summarize Test failed: {e}")
return False
def main():
url = sys.argv[1] if len(sys.argv) > 1 else "http://localhost:8080"
api_key = sys.argv[2] if len(sys.argv) > 2 else None
print("=" * 60)
print("MCP Summary Server Test")
print("=" * 60)
print(f"URL: {url}")
print(f"API Key: {'[SET]' if api_key else '[NOT SET]'}")
print("=" * 60)
print("\n1. Testing health check...")
health_ok = test_health_check(url)
print("\n2. Testing MCP initialization...")
init_ok = test_mcp_initialize(url, api_key)
print("\n3. Testing tools list...")
tools_ok = test_tools_list(url, api_key)
print("\n4. Testing summarize tool...")
summarize_ok = test_summarize(url, api_key)
print("\n" + "=" * 60)
print("Summary:")
print(f" Health Check: {'' if health_ok else ''}")
print(f" MCP Initialize: {'' if init_ok else ''}")
print(f" Tools List: {'' if tools_ok else ''}")
print(f" Summarize: {'' if summarize_ok else ''}")
print("=" * 60)
if all([health_ok, init_ok, tools_ok, summarize_ok]):
print("\n✓ All tests passed!")
return 0
else:
print("\n✗ Some tests failed. Check the errors above.")
return 1
if __name__ == "__main__":
sys.exit(main())