ghost-mcp/scripts/test-mcp-tools.py

67 lines
No EOL
2.2 KiB
Python
Executable file

#!/usr/bin/env python3
"""Test Ghost MCP tools functionality."""
import asyncio
import json
import sys
from pathlib import Path
# Add src to path
sys.path.insert(0, str(Path(__file__).parent.parent / "src"))
from ghost_mcp.tools.content.posts import get_posts
from ghost_mcp.tools.content.settings import get_settings
from ghost_mcp.server import check_ghost_connection
async def test_mcp_tools():
"""Test MCP tools functionality."""
print("🧪 Testing Ghost MCP tools...")
# Test connection check tool
print("\n1. Testing connection check tool...")
try:
result = await check_ghost_connection()
data = json.loads(result)
print(f"✅ Connection check: {data.get('connection_test', 'unknown')}")
print(f" Ghost URL: {data.get('ghost_url')}")
print(f" Content API: {'' if data.get('content_api_configured') else ''}")
print(f" Admin API: {'' if data.get('admin_api_configured') else ''}")
except Exception as e:
print(f"❌ Connection check failed: {e}")
# Test get settings
print("\n2. Testing get_settings tool...")
try:
result = await get_settings()
data = json.loads(result)
if "settings" in data:
settings = data["settings"]
print(f"✅ Settings: Site title is '{settings.get('title')}'")
print(f" Description: {settings.get('description')}")
print(f" URL: {settings.get('url')}")
else:
print(f"❌ Settings: {data}")
except Exception as e:
print(f"❌ Settings failed: {e}")
# Test get posts
print("\n3. Testing get_posts tool...")
try:
result = await get_posts(limit=2)
data = json.loads(result)
if "posts" in data:
posts = data["posts"]
print(f"✅ Posts: Found {len(posts)} posts")
for post in posts:
print(f" - '{post.get('title')}' (status: {post.get('status')})")
else:
print(f"❌ Posts: {data}")
except Exception as e:
print(f"❌ Posts failed: {e}")
print("\n🎉 MCP tools test completed!")
if __name__ == "__main__":
asyncio.run(test_mcp_tools())