Skip to main content
Glama

MCP Time Server Node

by pshempel
python-stress-test-research.py4.33 kB
#!/usr/bin/env python3 """ Research script for Python MCP stress testing - How to spawn Node.js MCP servers from Python - How to monitor process memory accurately - How to communicate with MCP servers - What memory patterns indicate leaks """ import subprocess import time import psutil import json import sys def research_process_spawning(): """Research: How to spawn and manage Node.js processes""" print("=== Research: Process Spawning ===") # Test basic subprocess spawn try: # Simple echo test result = subprocess.run(['echo', 'test'], capture_output=True, text=True) print(f"Basic subprocess works: {result.stdout.strip()}") # Test with node node_version = subprocess.run(['node', '--version'], capture_output=True, text=True) print(f"Node.js available: {node_version.stdout.strip()}") except Exception as e: print(f"Error: {e}") print() def research_memory_monitoring(): """Research: How to accurately measure process memory""" print("=== Research: Memory Monitoring ===") # Get current process info process = psutil.Process() # Different memory metrics memory_info = process.memory_info() print(f"RSS (Resident Set Size): {memory_info.rss / 1024 / 1024:.2f} MB") print(f"VMS (Virtual Memory Size): {memory_info.vms / 1024 / 1024:.2f} MB") # Memory percent print(f"Memory percent: {process.memory_percent():.2f}%") # Available on some systems try: memory_full = process.memory_full_info() print(f"USS (Unique Set Size): {memory_full.uss / 1024 / 1024:.2f} MB") print(f"PSS (Proportional Set Size): {memory_full.pss / 1024 / 1024:.2f} MB") except AttributeError: print("Full memory info not available on this system") print() def research_mcp_communication(): """Research: How to communicate with MCP servers""" print("=== Research: MCP Communication ===") # MCP uses JSON-RPC over stdin/stdout sample_request = { "jsonrpc": "2.0", "method": "tools/list", "id": 1, "params": {} } print(f"Sample MCP request: {json.dumps(sample_request, indent=2)}") # Test if we can create proper JSON-RPC print(f"Serialized for stdin: {json.dumps(sample_request)}") print() def research_memory_leak_patterns(): """Research: What patterns indicate memory leaks""" print("=== Research: Memory Leak Patterns ===") print("Indicators of memory leaks:") print("1. Continuous growth without plateau") print("2. Memory not released after operations complete") print("3. Growth rate proportional to request count") print("4. No garbage collection recovery") print("\nNormal patterns:") print("1. Initial growth then stabilization") print("2. Sawtooth pattern (allocate/GC cycles)") print("3. Plateau after warm-up period") print() def research_subprocess_communication(): """Research: How to communicate with subprocess stdin/stdout""" print("=== Research: Subprocess Communication ===") # Test echo with stdin try: proc = subprocess.Popen( ['cat'], # Simple echo back stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True ) # Send data stdout, stderr = proc.communicate(input="Hello from Python\n") print(f"Echo test successful: {stdout.strip()}") except Exception as e: print(f"Communication error: {e}") print() def main(): print("Python MCP Stress Test Research") print("=" * 40) print() research_process_spawning() research_memory_monitoring() research_mcp_communication() research_memory_leak_patterns() research_subprocess_communication() # Check Python version print(f"Python version: {sys.version}") # Check required modules print("\nRequired modules:") for module in ['subprocess', 'psutil', 'json', 'time']: try: __import__(module) print(f"✓ {module}") except ImportError: print(f"✗ {module} (needs installation)") if __name__ == "__main__": 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/pshempel/mcp-time-server-node'

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