Skip to main content
Glama

add_education

Add education entries to a LaTeX resume by specifying institution, degree, dates, and optional details like location or GPA.

Instructions

Add a new education entry to a resume (works with modern template).

Args:
    filename: Name of the resume file
    institution: School/University name
    degree: Degree and major
    dates: Dates attended (e.g., 'Sep 2016 -- May 2020')
    location: Location - optional
    details: Additional details (GPA, honors, coursework) - optional

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filenameYes
institutionYes
degreeYes
datesYes
locationNo
detailsNo

Implementation Reference

  • The handler function for the 'add_education' tool, decorated with @mcp.tool() for registration. It adds an education entry to the LaTeX resume by parsing the content, finding the Education section, and inserting the formatted LaTeX subheading and optional details.
    @mcp.tool()
    def add_education(
        filename: str,
        institution: str,
        degree: str,
        dates: str,
        location: str = "",
        details: list[str] = None
    ) -> str:
        """
        Add a new education entry to a resume (works with modern template).
    
        Args:
            filename: Name of the resume file
            institution: School/University name
            degree: Degree and major
            dates: Dates attended (e.g., 'Sep 2016 -- May 2020')
            location: Location - optional
            details: Additional details (GPA, honors, coursework) - optional
        """
        ensure_dirs()
        filepath = get_resumes_dir() / ensure_tex_extension(filename)
    
        if not filepath.exists():
            return json.dumps({"error": f"Resume '{filename}' not found"})
    
        try:
            content = filepath.read_text(encoding="utf-8")
    
            education_entry = f"""\\resumeSubheading
        {{{institution}}}{{{location}}}
        {{{degree}}}{{{dates}}}"""
    
            if details:
                detail_items = "\n".join([f"        \\resumeItem{{{d}}}" for d in details])
                education_entry += f"""
        \\begin{{itemize}}[leftmargin=0.2in]
    {detail_items}
        \\end{{itemize}}"""
    
            import re
            pattern = r"(\\section\{Education\}[\s\S]*?\\begin\{itemize\}\[leftmargin=0\.15in, label=\{\}\])"
            match = re.search(pattern, content, re.IGNORECASE)
    
            if match:
                insert_pos = match.end()
                new_content = content[:insert_pos] + "\n" + education_entry + content[insert_pos:]
                filepath.write_text(new_content, encoding="utf-8")
                return json.dumps({"success": True, "message": f"Added education entry for {institution}"})
            else:
                return json.dumps({"error": "Could not find Education section. Make sure the resume uses the modern template format."})
        except Exception as e:
            return json.dumps({"error": f"Error adding education: {str(e)}"})

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/dannywillowliu-uchi/resume_mcp'

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