get_form
Retrieve detailed form information including title, description, questions, and URLs from Google Workspace by providing the user's email address and form ID.
Instructions
Get a form.
Args:
user_google_email (str): The user's Google email address. Required.
form_id (str): The ID of the form to retrieve.
Returns:
str: Form details including title, description, questions, and URLs.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | ||
| service | Yes | ||
| user_google_email | Yes |
Implementation Reference
- gforms/forms_tools.py:68-121 (handler)The main execution logic for the 'get_form' MCP tool, decorated with registration (@server.tool()), error handling, and auth requirements. Retrieves Google Form details by ID and returns formatted summary.@server.tool() @handle_http_errors("get_form", is_read_only=True, service_type="forms") @require_google_service("forms", "forms") async def get_form( service, user_google_email: str, form_id: str ) -> str: """ Get a form. Args: user_google_email (str): The user's Google email address. Required. form_id (str): The ID of the form to retrieve. Returns: str: Form details including title, description, questions, and URLs. """ logger.info(f"[get_form] Invoked. Email: '{user_google_email}', Form ID: {form_id}") form = await asyncio.to_thread( service.forms().get(formId=form_id).execute ) form_info = form.get("info", {}) title = form_info.get("title", "No Title") description = form_info.get("description", "No Description") document_title = form_info.get("documentTitle", title) edit_url = f"https://docs.google.com/forms/d/{form_id}/edit" responder_url = form.get("responderUri", f"https://docs.google.com/forms/d/{form_id}/viewform") items = form.get("items", []) questions_summary = [] for i, item in enumerate(items, 1): item_title = item.get("title", f"Question {i}") item_type = item.get("questionItem", {}).get("question", {}).get("required", False) required_text = " (Required)" if item_type else "" questions_summary.append(f" {i}. {item_title}{required_text}") questions_text = "\n".join(questions_summary) if questions_summary else " No questions found" result = f"""Form Details for {user_google_email}: - Title: "{title}" - Description: "{description}" - Document Title: "{document_title}" - Form ID: {form_id} - Edit URL: {edit_url} - Responder URL: {responder_url} - Questions ({len(items)} total): {questions_text}""" logger.info(f"Successfully retrieved form for {user_google_email}. ID: {form_id}") return result
- gforms/forms_tools.py:68-68 (registration)Registers the get_form tool with the MCP server.@server.tool()