manual_test.py•2.61 kB
#!/usr/bin/env python3
"""Manual test for the MCP server - requires mcp module."""
import json
import subprocess
import sys
import time
def send_request(process, request):
"""Send a JSON-RPC request and read the response."""
request_str = json.dumps(request)
print(f'\n→ Sending: {request_str}')
process.stdin.write(request_str + '\n')
process.stdin.flush()
# Give the server time to process
time.sleep(0.1)
# Read response
response_line = process.stdout.readline()
if response_line:
response = json.loads(response_line)
print(f'← Response: {json.dumps(response, indent=2)}')
return response
return None
def main():
"""Run manual tests against the MCP server."""
print('Starting MCP server for manual testing...')
# Start the server
process = subprocess.Popen(
[sys.executable, 'mcp_server.py'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
bufsize=1,
)
try:
# Give server time to start
time.sleep(0.5)
# Check if server started properly
if process.poll() is not None:
stderr = process.stderr.read()
print(f'Server failed to start: {stderr}')
return
print('Server started successfully!')
# Test 1: Send initialize request
init_request = {
'jsonrpc': '2.0',
'id': 1,
'method': 'initialize',
'params': {
'protocolVersion': '2025-11-05',
'capabilities': {},
'clientInfo': {'name': 'manual-test', 'version': '1.0.0'},
},
}
send_request(process, init_request)
# Test 2: List tools
list_tools = {'jsonrpc': '2.0', 'id': 2, 'method': 'tools/list', 'params': {}}
send_request(process, list_tools)
# Test 3: Call lint_code
lint_code = {
'jsonrpc': '2.0',
'id': 3,
'method': 'tools/call',
'params': {
'name': 'lint_code',
'arguments': {'code': 'def test_example():\n if True:\n pass'},
},
}
send_request(process, lint_code)
print('\n✓ Manual test completed!')
except Exception as e:
print(f'\n✗ Test failed: {e}')
import traceback
traceback.print_exc()
finally:
# Clean up
process.terminate()
process.wait()
print('\nServer stopped.')
if __name__ == '__main__':
main()