Skip to main content
Glama
setup.py5.65 kB
#!/usr/bin/env python3 """ Setup script for MCP Personal Assistant """ import os import sys import subprocess import json import shutil def run_command(command): """Run a command and capture output""" try: result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True) print(f"✓ {command}") return True except subprocess.CalledProcessError as e: print(f"❌ Failed to run: {command}") print(f"Error: {e.stderr}") return False def setup_virtual_environment(): """Create and activate a virtual environment""" print("\n🔧 Setting up virtual environment...") if not run_command(f"{sys.executable} -m venv venv"): return False # Determine the correct activation command based on OS if sys.platform == "win32": activate_cmd = "venv\\Scripts\\activate" pip_cmd = "venv\\Scripts\\pip" else: activate_cmd = "source venv/bin/activate" pip_cmd = "venv/bin/pip" print(f"ℹ️ To activate the virtual environment, run: {activate_cmd}") return pip_cmd def install_dependencies(pip_cmd): """Install required dependencies""" print("\n📦 Installing dependencies...") return run_command(f"{pip_cmd} install -r requirements.txt") def create_directories(): """Create necessary directories""" print("\n📁 Creating directories...") directories = [ "data", ] # Add OS-specific directories if sys.platform == "darwin": # macOS directories.extend([ os.path.expanduser("~/Library/Application Support/mcp-pa"), os.path.expanduser("~/Library/Application Support/mcp-pa/documents"), ]) elif sys.platform == "win32": # Windows directories.extend([ os.path.expandvars("%APPDATA%\\mcp-pa"), os.path.expandvars("%APPDATA%\\mcp-pa\\documents"), ]) else: # Linux directories.extend([ os.path.expanduser("~/.config/mcp-pa"), os.path.expanduser("~/.config/mcp-pa/documents"), ]) try: for directory in directories: os.makedirs(directory, exist_ok=True) print(f"✓ Created directory: {directory}") return True except Exception as e: print(f"❌ Failed to create directories: {e}") return False def test_installation(pip_cmd): """Run test script to verify installation""" print("\n🧪 Testing installation...") # Use the virtual environment's Python if sys.platform == "win32": python_cmd = "venv\\Scripts\\python" else: python_cmd = "venv/bin/python" return run_command(f"{python_cmd} test_server.py") def setup_claude_desktop_config(): """Help setup Claude Desktop configuration""" print("\n🔧 Claude Desktop Configuration") print("=" * 50) print("To use this MCP server with Claude Desktop, add the following to your config file:") print() config = { "mcpServers": { "personal-assistant": { "command": "python", "args": ["-m", "src.server"], "cwd": os.path.abspath("."), "env": { "MCP_PA_DB_TYPE": "sqlite", "MCP_PA_ENCRYPTION_KEY": "optional-secret-key-here" } } } } print(json.dumps(config, indent=2)) print() print("Configuration file location:") if sys.platform == "darwin": # macOS print("~/Library/Application Support/Claude/claude_desktop_config.json") elif sys.platform == "win32": # Windows print("%APPDATA%\\Claude\\claude_desktop_config.json") else: # Linux print("~/.config/Claude/claude_desktop_config.json") print("\nOptional environment variables:") print("- MCP_PA_DB_TYPE: 'sqlite' or 'tinydb' (default: sqlite)") print("- MCP_PA_ENCRYPTION_KEY: Your encryption key for secure storage") print("- MCP_PA_DOCS_DIR: Custom directory for document storage") print("- MCP_PA_MAX_FILE_SIZE_MB: Maximum file size in MB (default: 100)") def main(): print("🚀 MCP Personal Assistant Setup") print("=" * 50) # Check Python version if sys.version_info < (3, 10): print("❌ Error: Python 3.10 or higher is required") sys.exit(1) # Setup virtual environment pip_cmd = setup_virtual_environment() if not pip_cmd: print("❌ Failed to setup virtual environment") sys.exit(1) # Install dependencies if not install_dependencies(pip_cmd): print("❌ Failed to install dependencies") sys.exit(1) # Create directories if not create_directories(): print("❌ Failed to create directories") sys.exit(1) # Test installation if not test_installation(pip_cmd): print("❌ Installation test failed") sys.exit(1) # Show Claude Desktop configuration setup_claude_desktop_config() print("\n✅ Setup completed successfully!") print("\nNext steps:") print("1. Configure Claude Desktop with the settings above") print("2. Restart Claude Desktop") print("3. Start using the Personal Assistant!") print("\nTo start the server manually, run:") if sys.platform == "win32": print("venv\\Scripts\\python -m src.server") else: print("source venv/bin/activate && python -m src.server") print("\nFor detailed configuration options, see docs/CONFIGURATION.md") if __name__ == "__main__": main()

Latest Blog Posts

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/swapnilsurdi/mcp-pa'

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