We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/lukaizhi5559/thinkdrop-vision-service'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
"""
Screenshot capture endpoint
"""
import logging
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from typing import Optional, List
from ..services.screenshot import ScreenshotService
logger = logging.getLogger(__name__)
router = APIRouter(tags=["capture"])
class CaptureRequest(BaseModel):
"""Capture request model"""
region: Optional[List[int]] = None # [x, y, width, height]
format: str = "png" # png or base64
class CaptureResponse(BaseModel):
"""Capture response model"""
version: str = "mcp.v1"
status: str = "success"
data: dict
@router.post("/capture", response_model=CaptureResponse) # MCP action: capture
async def capture_screenshot(request: CaptureRequest):
"""
Capture screenshot
Args:
request: Capture configuration
Returns:
Screenshot data (base64 PNG + dimensions)
"""
try:
logger.info(f"Capturing screenshot (region={request.region})")
# Capture
region = tuple(request.region) if request.region else None
img = ScreenshotService.capture(region)
# Encode
png_base64 = ScreenshotService.encode_png(img)
return CaptureResponse(
version="mcp.v1",
status="success",
data={
"png_base64": png_base64,
"width": img.width,
"height": img.height,
"region": request.region
}
)
except Exception as e:
logger.error(f"Capture failed: {e}")
raise HTTPException(
status_code=500,
detail={
"version": "mcp.v1",
"status": "error",
"error": {
"code": "CAPTURE_FAILED",
"message": str(e)
}
}
)