Skip to main content
Glama

Obsidian MCP Server

verify_installation.py5.43 kB
#!/usr/bin/env python3 """ Verification script for Custom Obsidian MCP Server This script checks: 1. Python dependencies are installed 2. Environment variables are set 3. Obsidian Local REST API is accessible 4. MCP server can be imported Run: python verify_installation.py """ import sys import os def check_python_version(): """Check Python version is 3.10+""" print("Checking Python version...") if sys.version_info < (3, 10): print(f"❌ Python 3.10+ required. You have {sys.version_info.major}.{sys.version_info.minor}") return False print(f"✅ Python {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro}") return True def check_dependencies(): """Check required packages are installed""" print("\nChecking dependencies...") required = ["mcp", "httpx", "pydantic", "frontmatter"] missing = [] for package in required: try: __import__(package) print(f"✅ {package}") except ImportError: print(f"❌ {package} (not installed)") missing.append(package) if missing: print(f"\n❌ Missing packages: {', '.join(missing)}") print("Run: pip install -e . or uv sync") return False return True def check_environment(): """Check environment variables""" print("\nChecking environment variables...") api_key = os.getenv("OBSIDIAN_API_KEY", "") host = os.getenv("OBSIDIAN_HOST", "127.0.0.1") port = os.getenv("OBSIDIAN_PORT", "27124") if not api_key: print("❌ OBSIDIAN_API_KEY not set") print(" Get your API key from Obsidian → Settings → Community Plugins → Local REST API") return False else: # Mask most of the key for security masked = api_key[:8] + "..." + api_key[-4:] if len(api_key) > 12 else "***" print(f"✅ OBSIDIAN_API_KEY: {masked}") print(f"✅ OBSIDIAN_HOST: {host}") print(f"✅ OBSIDIAN_PORT: {port}") return True def check_obsidian_connection(): """Check connection to Obsidian Local REST API""" print("\nChecking Obsidian connection...") try: import httpx api_key = os.getenv("OBSIDIAN_API_KEY", "") host = os.getenv("OBSIDIAN_HOST", "127.0.0.1") port = os.getenv("OBSIDIAN_PORT", "27124") if not api_key: print("⚠️ Skipping (no API key set)") return True # Don't fail if env not set url = f"https://{host}:{port}/vault/" headers = {"Authorization": f"Bearer {api_key}"} # Make synchronous request for simplicity client = httpx.Client(verify=False, timeout=5.0) response = client.get(url, headers=headers) client.close() if response.status_code == 200: print("✅ Connected to Obsidian Local REST API") return True else: print(f"❌ HTTP {response.status_code}: {response.text}") return False except Exception as e: print(f"❌ Connection failed: {str(e)}") print("\nTroubleshooting:") print("1. Is Obsidian running?") print("2. Is the Local REST API plugin enabled?") print("3. Is the port correct? (default: 27124)") return False def check_mcp_server(): """Check MCP server can be imported""" print("\nChecking MCP server import...") try: from custom_obsidian_mcp.server import mcp print("✅ MCP server imports successfully") print(f" Server name: {mcp.name}") return True except ImportError as e: print(f"❌ Import failed: {str(e)}") print(" Run: pip install -e . or uv sync") return False except Exception as e: print(f"❌ Error: {str(e)}") return False def main(): """Run all checks""" print("=" * 60) print("Custom Obsidian MCP Server - Installation Verification") print("=" * 60) checks = [ ("Python Version", check_python_version), ("Dependencies", check_dependencies), ("Environment", check_environment), ("MCP Server", check_mcp_server), ("Obsidian Connection", check_obsidian_connection), ] results = [] for name, check_func in checks: try: result = check_func() results.append((name, result)) except Exception as e: print(f"\n❌ Unexpected error in {name}: {str(e)}") results.append((name, False)) # Summary print("\n" + "=" * 60) print("SUMMARY") print("=" * 60) passed = sum(1 for _, result in results if result) total = len(results) for name, result in results: status = "✅" if result else "❌" print(f"{status} {name}") print(f"\nPassed: {passed}/{total}") if passed == total: print("\n🎉 All checks passed! Your MCP server is ready to use.") print("\nNext steps:") print("1. Add configuration to your LLM client (Claude Desktop, etc.)") print("2. Restart your LLM client") print("3. Start creating Zettelkasten notes!") return 0 else: print("\n⚠️ Some checks failed. Please fix the issues above.") return 1 if __name__ == "__main__": sys.exit(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/Shepherd-Creative/obsidian-mcp'

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