get_contact
Retrieve Google Contacts information by resource name or email address, including comprehensive contact details and fields.
Instructions
Get a contact by resource name or email with comprehensive information.
Args:
identifier: Resource name (people/*) or email address of the contact
include_all_fields: Whether to include all contact fields (default: True)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| include_all_fields | No |
Implementation Reference
- src/tools.py:126-143 (handler)MCP tool handler implementation for 'get_contact'. Uses @mcp.tool() decorator for automatic registration. Fetches contact details via GoogleContactsService and formats the output.@mcp.tool() async def get_contact(identifier: str, include_all_fields: bool = True) -> str: """Get a contact by resource name or email with comprehensive information. Args: identifier: Resource name (people/*) or email address of the contact include_all_fields: Whether to include all contact fields (default: True) """ service = init_service() if not service: return "Error: Google Contacts service is not available. Please check your credentials." try: contact = service.get_contact(identifier, include_all_fields) return format_contact(contact) except Exception as e: return f"Error: Failed to get contact - {str(e)}"
- Core helper method in GoogleContactsService that implements the Google People API call to retrieve a contact by resource name or email address, with support for full or limited fields, and enhanced formatting.def get_contact(self, identifier: str, include_all_fields: bool = True) -> Dict[str, Any]: """Get a contact by resource name or email with comprehensive field support. Args: identifier: Resource name (people/*) or email address include_all_fields: Whether to include all available fields Returns: Contact dictionary with comprehensive information """ try: person_fields = ( ",".join(self.PERSON_FIELDS) if include_all_fields else "names,emailAddresses,phoneNumbers,addresses,organizations" ) if identifier.startswith("people/"): # Get by resource name person = ( self.service.people() .get(resourceName=identifier, personFields=person_fields) .execute() ) return self._format_contact_enhanced(person) else: # Search by email contacts = self.search_contacts(identifier, max_results=1) if contacts: return contacts[0] raise GoogleContactsError(f"Contact with identifier {identifier} not found") except HttpError as error: raise GoogleContactsError(f"Error getting contact: {error}")
- src/tools.py:64-73 (registration)Top-level registration function that calls register_contact_tools(mcp), where the get_contact handler is defined and registered via @mcp.tool() decorator.def register_tools(mcp: FastMCP) -> None: """Register all Google Contacts tools with the MCP server. Args: mcp: FastMCP server instance """ register_contact_tools(mcp) register_directory_tools(mcp) register_contact_group_tools(mcp)