Skip to main content
Glama

get_person_profile

Retrieve structured LinkedIn profile data by entering a username to access professional information and connections.

Instructions

Get a specific person's LinkedIn profile.

Args: linkedin_username (str): LinkedIn username (e.g., "stickerdaniel", "anistji")

Returns: Dict[str, Any]: Structured data from the person's profile

Input Schema

NameRequiredDescriptionDefault
linkedin_usernameYes

Input Schema (JSON Schema)

{ "properties": { "linkedin_username": { "title": "Linkedin Username", "type": "string" } }, "required": [ "linkedin_username" ], "type": "object" }

Implementation Reference

  • The core handler function for the 'get_person_profile' tool. Scrapes LinkedIn profile data using linkedin_scraper.Person, structures experiences, educations, skills/interests, accomplishments, and contacts into dictionaries, and returns a comprehensive profile dictionary with error handling.
    async def get_person_profile(linkedin_username: str) -> Dict[str, Any]: """ Get a specific person's LinkedIn profile. Args: linkedin_username (str): LinkedIn username (e.g., "stickerdaniel", "anistji") Returns: Dict[str, Any]: Structured data from the person's profile """ try: # Construct clean LinkedIn URL from username linkedin_url = f"https://www.linkedin.com/in/{linkedin_username}/" driver = safe_get_driver() logger.info(f"Scraping profile: {linkedin_url}") person = Person(linkedin_url, driver=driver, close_on_complete=False) # Convert experiences to structured dictionaries experiences: List[Dict[str, Any]] = [ { "position_title": exp.position_title, "company": exp.institution_name, "from_date": exp.from_date, "to_date": exp.to_date, "duration": exp.duration, "location": exp.location, "description": exp.description, } for exp in person.experiences ] # Convert educations to structured dictionaries educations: List[Dict[str, Any]] = [ { "institution": edu.institution_name, "degree": edu.degree, "from_date": edu.from_date, "to_date": edu.to_date, "description": edu.description, } for edu in person.educations ] # Convert interests to list of titles interests: List[str] = [interest.title for interest in person.interests] # Convert accomplishments to structured dictionaries accomplishments: List[Dict[str, str]] = [ {"category": acc.category, "title": acc.title} for acc in person.accomplishments ] # Convert contacts to structured dictionaries contacts: List[Dict[str, str]] = [ { "name": contact.name, "occupation": contact.occupation, "url": contact.url, } for contact in person.contacts ] # Return the complete profile data return { "name": person.name, "about": person.about, "experiences": experiences, "educations": educations, "interests": interests, "accomplishments": accomplishments, "contacts": contacts, "company": person.company, "job_title": person.job_title, "open_to_work": getattr(person, "open_to_work", False), } except Exception as e: return handle_tool_error(e, "get_person_profile")
  • Registers all LinkedIn tools with the MCP server, including the call to register_person_tools(mcp) which adds the get_person_profile tool via its @mcp.tool() decorator.
    # Register all tools register_person_tools(mcp) register_company_tools(mcp) register_job_tools(mcp)
  • The registration function for person tools that defines and registers get_person_profile using the @mcp.tool() decorator.
    def register_person_tools(mcp: FastMCP) -> None: """ Register all person-related tools with the MCP server. Args: mcp (FastMCP): The MCP server instance """ @mcp.tool()

Latest Blog Posts

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/Kappasig920/MCP-LinkedIn'

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