Skip to main content
Glama

UpGrad LXP MCP Server

An MCP (Model Context Protocol) server that controls a Firefox browser via Playwright to automate navigating UpGrad's learning platform, extracting class transcripts, and downloading resources.

Setup

npm install
npx playwright install firefox

Related MCP server: Coursera MCP Server

Usage

With Claude Code / Claude Desktop

Add to your MCP configuration:

{
  "mcpServers": {
    "upgrad-lxp": {
      "command": "npx",
      "args": ["tsx", "/path/to/upgrad-lxp-mcp/src/index.ts"],
      "env": {
        "UPGRAD_EMAIL": "your-email@example.com",
        "UPGRAD_PASSWORD": "your-password",
        "OUTPUT_DIR": "./output",
        "HEADLESS": "false"
      }
    }
  }
}

Run directly

npm start

Available Tools

Tool

Description

launch_browser

Launch Firefox browser instance

close_browser

Close the browser

login

Log into UpGrad LXP

check_login_status

Check if currently logged in

list_courses

List available courses

select_course

Navigate into a course

list_tracks

List tracks/modules in a course

select_track

Navigate into a track

list_past_classes

List past classes in a track

view_class_details

Open a specific class's details

extract_transcript

Extract transcript from class details

extract_resources

Extract resource links from class details

download_resource

Download a resource file

save_transcript

Save transcript to disk

screenshot

Take a page screenshot

get_page_content

Get page text content

navigate

Navigate to a URL

click

Click an element

scrape_all_past_classes

Bulk scrape all past classes

Output Structure

output/
├── transcripts/     # Saved transcript files (.md, .txt, .json)
├── resources/       # Downloaded resource files (organized by class)
├── screenshots/     # Page screenshots
├── errors/          # Error screenshots for debugging
└── index.json       # Manifest from bulk scraping

Selector Updates

The CSS selectors in src/helpers/selectors.ts are initial guesses. After first launch:

  1. Run the browser in headed mode (headless: false)

  2. Log in and navigate to the target pages

  3. Use browser DevTools to inspect the actual DOM

  4. Update selectors.ts with the real selectors

Available Tools

22 tools
apply_selectorsA

Save discovered selector overrides to disk. These override the default guesses and persist across server restarts.

Inputs: selectors (required).

check_login_statusA

Check if the user is currently logged in

Inputs: no named parameters.

clickC

Click an element on the page

Inputs: selector (required).

close_browserA

Close the browser instance and clean up resources

Inputs: no named parameters.

discover_selectorsA

Inspect the current page DOM to auto-detect CSS selectors for UpGrad LXP elements. Run this on each key page (login, dashboard, course, track, class_list, class_detail) to map the real selectors, then apply them with apply_selectors.

Inputs: page (required).

download_resourceB

Download a specific resource file to disk

Inputs: url (required), filename, className.

extract_resourcesB

Extract resource links/files from the current class detail view

Inputs: classNameOrId.

extract_transcriptA

Extract the transcript text from the current class detail view

Inputs: classNameOrId.

get_page_contentA

Get the visible text content of the current page or a specific element

Inputs: selector.

get_selectorsA

View the currently active selectors (defaults merged with any overrides)

Inputs: no named parameters.

launch_browserB

Launch a Firefox browser instance with Playwright

Inputs: headless.

list_coursesA

Get a list of available courses from the dashboard

Inputs: no named parameters.

list_past_classesA

Navigate to Past Classes tab and list all past classes

Inputs: no named parameters.

list_tracksA

List available tracks/modules within the current course

Inputs: no named parameters.

loginB

Log into UpGrad LXP with email and password

Inputs: email (required), password (required).

save_transcriptA

Save extracted transcript text to a file

Inputs: content (required), filename (required), format.

scrape_all_past_classesA

Bulk scrape all past classes in the current track — extracts transcripts and resources

Inputs: outputDir, includeResources.

screenshotB

Take a screenshot of the current page

Inputs: filename, fullPage.

select_courseC

Navigate into a specific course

Inputs: courseNameOrId (required).

select_trackC

Navigate into a specific track

Inputs: trackNameOrId (required).

view_class_detailsB

Open the details of a specific past class

Inputs: classNameOrId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 22 tools

    Disambiguation4/5

    Most tools have clear, distinct purposes. The generic browser tools (navigate, click, get_page_content) could overlap with higher-level specific tools, but their descriptions clarify their lower-level role. The selector management tools are clearly separate. Minor overlap exists between extract_transcript and scrape_all_past_classes, but the bulk nature distinguishes them.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (list_courses, select_track, extract_transcript), but a few use bare verbs (login, navigate, click, screenshot). The style is consistent with lowercase and underscores throughout. The variation is minor and does not hinder predictability.

    Tool Count3/5

    With 22 tools, the server feels heavy. It combines generic browser tools, platform-specific tools, and meta-tools for selector management. While each serves a purpose, the set could be consolidated without losing functionality.

    Completeness4/5

    The domain of browsing courses and extracting transcripts/resources is well covered: login, listing, selection, extraction, saving, and bulk scraping are present. The absence of a logout tool is a minor gap, but closing the browser suffices. Selector management tools add robustness.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers