Skip to main content
Glama

CEDAR MCP Server

run_tests.py4.84 kB
#!/usr/bin/env python3 """ Test runner script for CEDAR MCP integration tests. This script provides convenient ways to run different categories of tests and ensures proper environment setup. """ import argparse import os import sys import subprocess from pathlib import Path def check_environment(): """Check if the test environment is properly set up.""" env_file = Path(".env.test") if not env_file.exists(): print("❌ Error: .env.test file not found!") print("Please create .env.test with your API keys:") print("CEDAR_API_KEY=your-cedar-key") print("BIOPORTAL_API_KEY=your-bioportal-key") return False # Check if API keys are present from dotenv import load_dotenv load_dotenv(".env.test") cedar_key = os.getenv("CEDAR_API_KEY") bioportal_key = os.getenv("BIOPORTAL_API_KEY") if not cedar_key: print("❌ Error: CEDAR_API_KEY not found in .env.test") return False if not bioportal_key: print("❌ Error: BIOPORTAL_API_KEY not found in .env.test") return False print("✅ Environment check passed") return True def run_pytest(args): """Run pytest with the given arguments.""" cmd = ["python", "-m", "pytest"] + args print(f"Running: {' '.join(cmd)}") return subprocess.run(cmd) def main(): parser = argparse.ArgumentParser( description="Run CEDAR MCP integration tests", formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: python run_tests.py # Run all tests python run_tests.py --integration # Run only integration tests python run_tests.py --unit # Run only unit tests python run_tests.py --fast # Run tests excluding slow ones python run_tests.py --coverage # Run with coverage report python run_tests.py --external-api # Run only external API tests python run_tests.py --processing # Run only processing tests python run_tests.py --server # Run only server tests """, ) parser.add_argument( "--integration", action="store_true", help="Run only integration tests (requires API keys)", ) parser.add_argument( "--unit", action="store_true", help="Run only unit tests (no API dependencies)" ) parser.add_argument( "--fast", action="store_true", help="Run tests excluding slow ones" ) parser.add_argument( "--coverage", action="store_true", help="Run with coverage report" ) parser.add_argument( "--external-api", action="store_true", help="Run only external API tests" ) parser.add_argument( "--processing", action="store_true", help="Run only processing tests" ) parser.add_argument("--server", action="store_true", help="Run only server tests") parser.add_argument("--verbose", "-v", action="store_true", help="Verbose output") parser.add_argument("--no-warnings", action="store_true", help="Disable warnings") parser.add_argument( "--debug", "-d", action="store_true", help="Enable debugging mode (disable output capture)", ) args = parser.parse_args() # Check environment if running integration tests if args.integration or not (args.unit or args.fast): if not check_environment(): sys.exit(1) # Build pytest arguments pytest_args = [] # Add verbosity if args.verbose: pytest_args.append("-v") # Add warnings control if args.no_warnings: pytest_args.append("--disable-warnings") # Add debug mode (disable output capture) if args.debug: pytest_args.extend(["-s", "--tb=short"]) # Add coverage if args.coverage: pytest_args.extend( ["--cov=src/cedar_mcp", "--cov-report=html", "--cov-report=term-missing"] ) # Add test selection if args.integration: pytest_args.extend(["-m", "integration"]) elif args.unit: pytest_args.extend(["-m", "unit"]) elif args.fast: pytest_args.extend(["-m", "not slow"]) # Add specific test files if args.external_api: pytest_args.append("test/test_external_api.py") elif args.processing: pytest_args.append("test/test_processing.py") elif args.server: pytest_args.append("test/test_server.py") else: pytest_args.append("test/") # Run the tests result = run_pytest(pytest_args) if result.returncode == 0: print("\n✅ All tests passed!") if args.coverage: print("📊 Coverage report generated in htmlcov/index.html") else: print(f"\n❌ Tests failed with exit code: {result.returncode}") sys.exit(result.returncode) 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/BACH-AI-Tools/cedar-mcp'

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