Skip to main content
Glama

How to connect Udemy to Claude Code, ChatGPT and any AI agent

Yes, Claude, ChatGPT and other AI agents can work in your Udemy account. Udemy's official ChatGPT app helps you discover public courses, and the official Udemy Business connector for Claude needs an Enterprise subscription with the AI Connectors add-on. Cotlet.dev connects your own signed-in Udemy instructor account to any AI agent, so the AI creates coupons and updates your courses for you.

What you can ask

Create a coupon BLACKFRIDAY26 for my Python Bootcamp course at $12.99, starting November 27 and running for 5 days.

Make a free coupon for 100 students on my Excel for Beginners course and send me the link.

Change the title of my React course to "React 19 Complete Guide" and rewrite the subtitle to match.

Add a lecture called "Deploying to Vercel" at the end of section 8 in my Next.js course and upload this video.

Which of my coupons end this week? Create new ones at the same price for my top 3 courses.

Related MCP server: Game Studio MCP

Connect in 2 minutes

Get your API key at https://cotlet.dev/app and export it as COTLET_API_KEY.

Claude Code

claude mcp add --transport http cotlet https://cotlet.dev/mcp/v1 --header "Authorization: Bearer $COTLET_API_KEY"

ChatGPT

Settings → Apps → add connector URL https://cotlet.dev/mcp/v1, then sign in with Cotlet.dev. No API key needed.

Cursor

Copy .cursor/mcp.json from this repo into your project:

{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": {
        "Authorization": "Bearer ${COTLET_API_KEY}"
      }
    }
  }
}

Run it locally (stdio)

This repo is a real MCP server. It speaks MCP over stdio, lists its Udemy tools without any key, and forwards every tool call to the hosted Cotlet.dev server. The hosted URL above stays the recommended way. Use this when your client only starts local servers.

{"mcpServers":{"udemy":{"command":"uvx","args":["udemy-mcp"],"env":{"COTLET_API_KEY":"your-key"}}}}

Or with Docker:

docker build -t udemy-mcp .
docker run -i --rm -e COTLET_API_KEY udemy-mcp

Tools: udemy_guide, udemy_status, udemy_open, udemy_read, udemy_click, udemy_type, udemy_close. Without COTLET_API_KEY a tool call answers: "Set COTLET_API_KEY. Get a key at https://cotlet.dev/app".

Command line

Python 3.10+, nothing else to install. From PyPI:

pip install udemy-mcp        # or run it once: uvx udemy-mcp connect
udemy-mcp connect

Or straight from this repo:

export COTLET_API_KEY="your-key"
python3 udemy_agent.py connect   # ready config for Claude Code, Cursor, ChatGPT
python3 udemy_agent.py status    # is Udemy ready in your Cotlet.dev account
python3 udemy_agent.py guide     # Udemy screens and sign-in link
python3 udemy_agent.py read      # open Udemy, read the page, close the browser
python3 udemy_agent.py tools     # list Cotlet.dev tools
python3 udemy_agent.py serve     # start the stdio MCP server (same as no argument)

Questions from Udemy users

Does Udemy have an API?

Udemy has an Instructor API that lists your courses, reads reviews, and reads and answers Q&A questions and direct messages (checked 12 Oct 2026). It has no coupons, announcements, review responses, course edits or revenue. Cotlet.dev works in your own signed-in Udemy account, so your AI agent can create coupons and update courses with no API key and no code.

How do I connect Udemy to ChatGPT?

Udemy's official ChatGPT app helps you discover public courses. To manage your own courses, add Cotlet.dev as an app in ChatGPT (Settings → Apps, connector URL https://cotlet.dev/mcp/v1), sign in to Udemy once in your Cotlet.dev Cloud Browser, and ask ChatGPT in plain words. No code and no Udemy API key.

Is there a way to use Claude with Udemy?

Yes. Claude lists an official Udemy Business connector, which needs an Enterprise subscription plus the AI Connectors add-on. To work in your own Udemy account, run the one-line claude mcp add command above in Claude Code, or add https://cotlet.dev/mcp/v1 as a custom connector in the Claude app.

Is there a Udemy MCP server?

Udemy offers an official Udemy Business connector for Claude, focused on learning. Cotlet.dev is a hosted MCP server that works in your own Udemy account for you, 24/7, with Claude, ChatGPT, Cursor, Codex, n8n, Make and Zapier.

Find it on

Also works with


More: https://cotlet.dev/integrations/udemy-api-mcp-server?utm_source=github&utm_medium=readme&utm_campaign=udemy

Start free: https://cotlet.dev/signup?app=udemy&utm_source=github&utm_medium=readme&utm_campaign=udemy

Available Tools

7 tools
udemy_clickBInspect

Click a numbered element on the current Udemy page.

NameRequiredDescriptionDefault
elementYesElement number from the last read.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden, and it gives almost nothing: it does not say whether a click navigates to a new page, mutates server state, triggers async loading, or requires a subsequent udemy_read to re-number elements. For a browser-automation click with no annotation coverage, that leaves the agent guessing about side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One tight sentence with the action front-loaded and no filler. It is efficient, though the brevity is partly the source of the missing behavioral detail rather than pure economy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no description of post-click state, an agent cannot tell whether the click changes the page and invalidates element numbering. For a stateful browser tool the definition is under-specified relative to its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the single parameter is already fully documented including the 'from the last read' provenance. The description reinforces the 'numbered element on the current page' framing but adds no new detail such as range limits or what happens with a stale index. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (click) and object (numbered element on the current Udemy page), which clearly separates it from siblings like udemy_type and udemy_read. It stops short of naming those siblings explicitly, so differentiation relies on the agent inferring intent from the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Numbered element" plus the schema note "Element number from the last read" implies the prerequisite that a read must happen first and that a page must be current/open. There is no explicit statement of when to choose click over udemy_type or udemy_open, and no exclusion or failure guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_closeAInspect

Close the Udemy browser session when the work is done, so credits stop running.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It usefully discloses the cost consequence (credits stop running) and that the session terminates, but says nothing about idempotency, behavior when no session is open, or whether any state is lost.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence, front-loaded with the action and followed by the reason to use it. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter teardown tool with no output schema and no annotations, the description covers purpose and motivation adequately. Only edge-case behavior (already-closed session, error modes) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; baseline 4 applies. Nothing in the description misleads about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Close the Udemy browser session'), and the implicit counterpart to udemy_open is easy to infer. It does not name any sibling explicitly, so it falls just short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger condition ('when the work is done') plus the reason to act (credits stop running). It stops short of naming udemy_open as the alternative or stating what happens if no session exists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_guideAInspect

How to work in Udemy (create coupons and update courses): its screens and the sign-in link. Call this first.

NameRequiredDescriptionDefault
taskNoWhat you want done in Udemy, in your words.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full disclosure burden. It does say what the tool surfaces (screens and sign-in link), which signals a read-only orientation/help resource, but it does not state the response shape (free text vs structured screen map) or any limits on the guide's coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence plus a front-loaded imperative; nothing is wasted. Slightly awkward phrasing ('its screens and the sign-in link') but every clause carries information about content or ordering.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, no-output-schema helper this is close to adequate: it says what the guide contains and that it should be called first. It falls short on whether the guide must precede every task or only at session start, and on what the agent receives back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single 'task' parameter with 100% schema description coverage, so the schema already explains it as free-form user intent. The description's examples (create coupons, update courses) give useful framing for what to put in 'task' but add no syntax or constraint detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (Udemy) and what the guide covers concretely: 'its screens and the sign-in link', with example tasks (create coupons, update courses). That distinguishes it from the action siblings (udemy_open, udemy_click, udemy_type) which perform operations rather than explain them. The framing 'How to work in Udemy' is slightly soft but the parenthetical grounds it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Call this first' is an explicit ordering directive that tells the agent when to reach for this tool relative to all six siblings. What's missing is a when-not condition or whether it needs to be re-called per task versus once per session.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_openCInspect

Open a Udemy page in your signed-in Cloud Browser (default https://www.udemy.com) to work with create coupons and update courses.

NameRequiredDescriptionDefault
urlNoPage to open. Default: https://www.udemy.com

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden; it does disclose that the page opens in a signed-in Cloud Browser, which is genuinely useful auth/session context. However, it never says whether an already-open session is reused or navigated away, whether existing page state is lost, or what happens on invalid URLs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single sentence, so length is fine, but the second half ("to work with create coupons and update courses") is garbled and adds confusion rather than information. The useful scoping detail is front-loaded, but the sentence does not fully earn its words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For the entry-point tool in a browser-automation family (open/close/read/click/type), an agent needs to know the relationship to those siblings and whether this establishes the session they depend on; neither is addressed. With no output schema, the description should also indicate whether anything is returned (page content vs. just a navigation acknowledgement), and it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single optional parameter at 100% schema description coverage, the schema already documents the url field and its default. The description merely restates the default (https://www.udemy.com) without adding constraints, accepted formats, or whether relative paths are allowed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The leading clause gives a clear verb and resource ("Open a Udemy page in your signed-in Cloud Browser"), but the trailing clause "to work with create coupons and update courses" is grammatically broken and could mislead an agent into thinking this tool creates coupons or updates courses itself. It also does not position the tool relative to siblings like udemy_read, udemy_click, or udemy_type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to call this versus udemy_read, udemy_click, udemy_type, or udemy_guide, nor whether opening must precede those tools or whether it reuses an existing session. The only usage hint is the implied need for a signed-in browser.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_readAInspect

Read the current Udemy page: its text and numbered buttons, links and fields.

NameRequiredDescriptionDefault
elementNoRead only inside this element.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description must carry the behavioral burden. "Read" implies a non-mutating operation and the mention of numbered elements hints that the output assigns the indices consumed by sibling click/type tools, which is genuinely useful. It does not state what happens if no page is open, whether reading scrolls or navigates, or what the element numbering rules are.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the colon efficiently enumerates the returned content types. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter read tool with no output schema, the description covers purpose and rough return shape adequately. The remaining gap is the linkage between the numbered elements it emits and the indices accepted by udemy_click, which is only hinted at rather than stated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single optional "element" parameter is documented as "Read only inside this element." The description never mentions the parameter, so it adds nothing beyond the schema; the baseline 3 applies when the schema already does this work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read the current Udemy page" names a specific verb and resource, and the clause about text and numbered buttons/links/fields previews what comes back. It implicitly separates itself from the sibling action tools (click, type, open, close) but never names them or states the contrast explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is the inspection step before udemy_click or udemy_type. There is no explicit "use this when..." statement, no mention of prerequisites (e.g. a page must already be open via udemy_open), and no exclusions pointing to udemy_status or udemy_guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_statusAInspect

Check that your Cotlet.dev account and Udemy are ready: account, credits and Udemy connection.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden; it does disclose the three areas inspected (account, credits, connection), which frames this as a read-only diagnostic. It does not state whether the call can fail, cost credits, require authentication, or what the result looks like — a real gap given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the enumerated check items are easy to scan. The phrasing "Check that your Cotlet.dev account and Udemy are ready" is slightly awkward, mixing the credential owner with the service being connected.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool, the description should convey what the agent learns from the response. It names the checked dimensions but not the shape of the result (status flags, error text, remediation guidance), so an agent cannot predict the outcome format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The three named check domains add a little orientation without implying any input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ("Check") with a concrete resource set: Cotlet.dev account, credits, and the Udemy connection. This clearly separates it from siblings like udemy_open, udemy_click, and udemy_type, which are browser actions, though it never explicitly names those alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the word "ready" suggests a preflight check before invoking the other udemy_* tools, but the description never says when to call it, when not to, or which sibling to use instead if it fails. The agent must infer the workflow position itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

udemy_typeCInspect

Type text into a numbered field on the current Udemy page.

NameRequiredDescriptionDefault
textYesText to type.
elementYesField number from the last read.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not say whether typing replaces existing text or appends to it, whether it places focus first, whether it triggers change/keyboard events, or whether it ever submits the form — all behaviors an agent needs to know before acting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler or redundant restatement of the name. It is appropriately sized for a simple two-parameter tool, though brevity is achieved partly by omitting needed context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple low-complexity tool with full schema coverage and no output schema, the definition covers the basic mechanics. However, with zero annotations and no statement of replace-vs-append or submission behavior, an agent could still invoke it incorrectly in a form-filling flow.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented ('Text to type,' 'Field number from the last read'). The description only echoes the notion of a numbered field and adds no syntax, formatting, or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action on a specific target ('type text into a numbered field on the current Udemy page'), which is distinct from the verbs used by siblings like udemy_read, udemy_click, and udemy_close. It does not explicitly differentiate itself from the sibling set, but the verb+resource combination is unambiguous on its own.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool rather than udemy_click or udemy_read, and no mention of the prerequisite workflow that the 'numbered field' concept implies (i.e., that element numbers come from a prior page read). The only usage hint, 'Field number from the last read,' lives in the schema, not the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 7 tool updatesv1.1.0
    • First observedudemy_click
    • First observedudemy_close
    • First observedudemy_guide
    • First observedudemy_open
    • First observedudemy_read
    • First observedudemy_status
    • First observedudemy_type

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a distinct role in a browser-automation workflow: setup/help (guide, status), session lifecycle (open, close), and page interaction (read, click, type). There is no meaningful overlap between tools, and the descriptions make the boundaries clear.

Naming Consistency4/5

All tools consistently use the udemy_ prefix, which makes the set easy to recognize. Most names use clear action verbs, though guide and status are noun-like rather than verb-based, a minor deviation.

Tool Count5/5

Seven tools is well-scoped for a browser-automation server focused on Udemy coupon creation and course updates. Each tool earns its place, with no obviously redundant or missing lifecycle pieces.

Completeness4/5

The set covers the essential browser workflow: check readiness, read page state, open pages, interact via click/type, and close the session. Some common browser actions like scrolling, navigation history, or waiting are absent, but the core loop is functional.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Control your Discord server with AI. Lets you manage channels, roles, members, messages, and more through natural language.
    203 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    This server enables AI assistants to directly control the Unity Editor via MCP, supporting scene manipulation, script editing, level generation, monetization management, build pipelines, and more—all with zero external dependencies.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables autonomous Discord server administration via natural language, allowing users to delegate tasks like channel/role creation, permission checks, and automations to an AI agent with safety gates and audit trails.
    MIT