install_helper.py•4.37 kB
#!/usr/bin/env python3
"""
Installation helper for Drip MCP Server
This script checks and installs required dependencies.
"""
import subprocess
import sys
import importlib.util
def check_python_version():
"""Check if Python version is 3.8+"""
version = sys.version_info
if version.major == 3 and version.minor >= 8:
print(f"✅ Python {version.major}.{version.minor}.{version.micro} (3.8+ required)")
return True
else:
print(f"❌ Python {version.major}.{version.minor}.{version.micro} - Python 3.8+ required")
return False
def check_package(package_name, import_name=None):
"""Check if a package is installed"""
if import_name is None:
import_name = package_name
spec = importlib.util.find_spec(import_name)
return spec is not None
def install_package(package_name):
"""Install a package using pip"""
try:
print(f" Installing {package_name}...")
subprocess.check_call([sys.executable, "-m", "pip", "install", package_name],
stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
print(f" ✅ {package_name} installed")
return True
except subprocess.CalledProcessError:
return False
def check_mcp():
"""Check if MCP with FastMCP is available"""
try:
from mcp.server.fastmcp import FastMCP
return True
except ImportError:
return False
def main():
print("="*60)
print("Drip MCP Server - Installation Helper")
print("="*60)
# Check Python version
if not check_python_version():
sys.exit(1)
print("\nChecking and installing dependencies...")
# Check httpx
if check_package("httpx"):
print("✅ httpx already installed")
else:
if install_package("httpx>=0.24.0"):
print("✅ httpx installed successfully")
else:
print("❌ Failed to install httpx")
print(" Try: pip install httpx")
sys.exit(1)
# Check pydantic
if check_package("pydantic"):
print("✅ pydantic already installed")
else:
if install_package("pydantic>=2.0.0"):
print("✅ pydantic installed successfully")
else:
print("❌ Failed to install pydantic")
print(" Try: pip install pydantic")
sys.exit(1)
# Check MCP
print("\nChecking MCP SDK...")
if check_mcp():
print("✅ MCP SDK with FastMCP already installed")
else:
print("Installing MCP SDK...")
# Try PyPI first
if install_package("mcp"):
if check_mcp():
print("✅ MCP SDK installed from PyPI")
else:
# Try GitHub
print(" Trying GitHub repository...")
if install_package("git+https://github.com/modelcontextprotocol/python-sdk.git"):
if check_mcp():
print("✅ MCP SDK installed from GitHub")
else:
print("❌ MCP SDK installation failed")
print("\nTry manual installation:")
print(" git clone https://github.com/modelcontextprotocol/python-sdk.git")
print(" cd python-sdk")
print(" pip install -e .")
sys.exit(1)
else:
print("❌ Failed to install MCP SDK")
print("\nIf you're seeing permission errors, try:")
print(" pip install --user mcp")
print("\nOr use a virtual environment:")
print(" python3 -m venv venv")
print(" source venv/bin/activate # On Windows: venv\\Scripts\\activate")
print(" pip install mcp httpx pydantic")
sys.exit(1)
print("\n" + "="*60)
print("✅ All dependencies installed successfully!")
print("="*60)
print("\nNext steps:")
print("1. Set environment variables:")
print(" export DRIP_API_KEY='your-api-key'")
print(" export DRIP_ACCOUNT_ID='your-account-id'")
print("")
print("2. Test the installation:")
print(" python tests/test_server.py")
print("")
print("3. Configure Claude Code using docs/claude_code_config_example.json")
if __name__ == "__main__":
main()