# Duolingo MCP MCP

> Duolingo tracks language learning progress by pulling public user data right into your agent. View XP totals, current streaks, friend lists, and leaderboard rankings for any supported language. It also gives translation hints and lets you browse in-app store items—all without needing a developer API key.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** language-learning, gamification, user-progress, skill-tracking, educational-data, leaderboards

## Description

You need to track how people are learning a new language, but manual checking of Duolingo dashboards is a waste of time. This MCP lets your agent pull structured data about user progress directly from the platform. You can view detailed profiles, check friend activity, and find out who's leading the board for Spanish today. Need to build an app that combines learning metrics with, say, billing records? The real power comes when you chain this Duolingo MCP with other services in Vinkius. Because all tool calls run inside a secure V8 isolate sandbox, your agent can pull user data and then pass it to another process without ever risking key exposure or needing manual oversight of credentials passing through the zero-trust proxy. It's pure, reliable data flow for building complex learning tools.

## Tools

### get_daily_leaderboard
Gets the top users and their XP scores on the leaderboard for a specified language on the current day.

### get_dictionary_hints
Returns translation pairs between two languages, useful for building flashcards or vocabulary tools.

### get_friends
Retrieves a user's friend list, including each person's current streaks and total XP.

### get_leaderboard
Gets leaderboard data for a specific user ID or username, showing their ranking and XP.

### get_store_items
Lists available items from the Duolingo store, including names, prices, and descriptions.

### get_user_by_id
Retrieves a user's full profile data using their unique numerical ID.

### get_user_by_username
Gets a public user profile by username, detailing XP, streak, and current language study.

### get_version_info
Provides information on the API version and all supported languages for the platform.

## Prompt Examples

**Prompt:** 
```
Show me the Duolingo profile for user 'john_doe'.
```

**Response:** 
```
john_doe: 1,245 total XP, 45-day streak, learning Spanish from English. Level 12 in Spanish. Recently completed 'Past Tense' skill. 23 skills completed out of 50.
```

**Prompt:** 
```
Get translation hints for 'hello', 'world', 'cat' from English to Spanish.
```

**Response:** 
```
Translation hints (en → es): hello → hola, world → mundo, cat → gato, gato (masc).
```

**Prompt:** 
```
Who is on the Spanish leaderboard today?
```

**Response:** 
```
Top 5 Spanish learners today: 1. polyglot_pro (850 XP), 2. maria_es (720 XP), 3. john_doe (650 XP), 4. language_lover (580 XP), 5. spanish_student (510 XP).
```

## Capabilities

### Retrieve User Profiles
Get a user's public profile details, including their total XP and current language focus.

### Check Friend Activity
View a list of friends for any user along with their individual streaks and XP totals.

### Analyze Daily Rankings
Identify the top users based on XP scores for a specific language on a given day.

### Get Vocabulary Pairs
Fetch translation hints between two specified languages, useful for building flashcards or quizzes.

### Browse Store Items
List available items from the Duolingo store, such as streak freezes and power-ups.

## Use Cases

### Analyzing Team Cohorts
A corporate trainer needs to audit a new cohort of 50 employees. Instead of checking 50 profiles manually, the agent calls `get_friends` and `get_user_by_username` for all users to report back on average streaks and XP totals.

### Creating Dynamic Quizzes
A developer building a language practice app needs word translations. The agent calls `get_dictionary_hints` with three source words and two target languages, getting clean pairs for immediate use in the quiz engine.

### Running Daily Contests
To run a daily internal contest, the agent uses `get_daily_leaderboard`, filtering by language code. It instantly gets the top 10 users and their scores for real-time leaderboard display.

### Debugging User Data Flow
A developer needs to verify if a user account was correctly created in the system. They use `get_user_by_id` with the numeric ID, confirming the profile data before integrating it into other services.

## Benefits

- Monitor social engagement: Use `get_friends` to instantly see a user's entire circle and their current streaks without manual checks.
- Benchmark performance: The `get_daily_leaderboard` tool lets you quickly identify top performers across specific languages for the day.
- Build learning aids: Need vocabulary? `get_dictionary_hints` pulls translation pairs, making it simple to generate structured flashcard content.
- Audit user status: Use `get_user_by_username` or `get_user_by_id` to pull a clean profile snapshot showing XP and skill progress for any account.
- Understand the ecosystem: The `get_store_items` tool lists what's available in the Duolingo store, useful for feature comparison or monetization planning.

## How It Works

The bottom line is: you get accurate Duolingo data without leaving your AI workflow.

1. Tell your agent which specific data you need—for example, 'Show me the leaderboard for French today.'
2. Your AI client calls this MCP, requesting the necessary information like a user's username or language code.
3. The platform returns clean, structured JSON containing the requested progress metrics, streaks, or rankings.

## Frequently Asked Questions

**Do I need a Duolingo account to use this?**
No! Public endpoints like user profiles, version info and dictionary hints work without authentication. Just provide a username to look up. For private data (your own progress, store items), you'd need to be logged into Duolingo.

**What languages are supported?**
Duolingo supports 40+ languages including English, Spanish, French, German, Italian, Portuguese, Japanese, Korean, Chinese, Hindi and many more. Use get_version_info to see the full list of supported language codes.

**Can I get my full learning progress?**
The public API returns limited profile data. For full progress including individual skill levels and detailed stats, you need to be authenticated with your Duolingo session. The username-based endpoint returns basic info like total XP, streak and current language.

**Can I get translation hints for vocabulary?**
Yes! Use get_dictionary_hints with target and source language codes plus a list of words. It returns common translations for each word, useful for building flashcards or studying vocabulary.

**How do I use `get_friends` to view a list of usernames, streaks, and XP totals?**
Yes, you can get a user's public friends list. This tool returns the friend's username, ID, streak count, and total XP for everyone connected.

**How does `get_daily_leaderboard` handle timezones when showing top users by XP?**
The tool lets you specify a timezone and language code. This guarantees the leaderboard data is correct for the region's local day, so your rankings are accurate.

**What does `get_version_info` tell me about available languages or features?**
It returns metadata about the Duolingo API version. You can use this info to verify which language codes and specific capabilities are supported before calling other tools.

**Do I need special credentials to get full details using `get_store_items`?**
No, but full detail requires authentication. The tool notes that while it provides item IDs, names, and prices, detailed information needs user login.