From Painful Setup to Centralized MCP Store
In November 2024, a few Duolingo engineers connected MCP servers to local editors. The setup was painful. Each server required finding the GitHub repo, figuring out config, getting credentials, and manually editing mcp.json. Few engineers bothered. In May 2025, Duolingo created a centralized web page with instructions. It worked like an app store. Users selected an MCP server, followed steps for credentials, and copied a generic config into Cursor or Cloud Code. Discovery improved, but runtime problems remained.
Standardizing 30 MCP Servers for Internal Use
Every MCP server ran differently. Some used Python with UV X, others used TypeScript as Docker images. Dependency and Docker issues broke setups across machines. In August 2025, Duolingo started a standardization effort. They forked open-source servers, added internal authentication and tracking, and hosted them behind the VPC via HTTP. For services like PagerDuty or Jenkins, they used a shared service token. For Google or Slack, they ran OAuth. They also built an internal Python library on FastMCP so teams could convert their services. Today, Duolingo supports 30 MCP servers with 300-plus tools. Half are served internally with a standard HTTP config: a JWT token in the header and a URL like mcp-name.internal.duolingo.com.
The Slackbot: Bringing MCP to Every Employee
Even with a single-click config, adoption stayed low. In September 2025, Duolingo brought MCPs to users directly with an AI Slack app. The bot uses a Cloud Agent SDK to talk to MCP servers and a Slack Bot SDK for messaging. It connects 15-plus read-only MCP servers and can run AWS and BigQuery commands. Key features include auto-response in help desk and incident channels, human-in-the-loop verification for write operations, per-channel customization, and a feedback button. The bot runs 20 eval tests to prevent regressions. Downvoted answers get added to the eval set over time.
Security, Privacy, and Real-World Results
The bot enforces four security principles. Non-engineers cannot access engineering tools. Write operations like creating Jira tickets or pull requests require explicit human approval. The bot runs in a sandboxed VM with no access to other credentials. User messages are sandboxed so person A cannot see person B’s DMs. For privacy, the bot logs nothing from DM or private channel messages. In practice, the bot searches internal Slack channels and the public internet to answer help desk questions. For PagerDuty alerts, it runs commands against Grafana, Honeycomb, and Sentry, then provides root cause analysis and next steps. Adoption grew from 20 weekly active users to over 250, roughly 30% of Duolingo. The upvote rate on responses stabilized around 80%.
Open Source Release
Duolingo open-sourced the core Slack bot application code. The repository is available at Duolingo slack-ai-agent. Companies that do not use Slack can fork it and ask AI to write a different version.
Notable Quotes
“Even like a single click to copy this to your local config is still too much for people.” Aaron Wang · ▶ Watch (5:35)
“The bot should not perform write operations to the outside world without human approve.” Aaron Wang · ▶ Watch (8:52)
“We do not log anything for DM or private channel messages.” Aaron Wang · ▶ Watch (9:49)
“It may not sound a lot, but for a small company like Duolingo, that’s more around like 30% of the company.” Aaron Wang · ▶ Watch (12:16)
Key Takeaways
- Duolingo standardized 30 MCP servers with a single HTTP config using JWT tokens.
- The AI Slackbot reduced on-call toil by auto-responding in help desk and incident channels.
- Write operations require human approval; the bot logs no private DMs.
- Adoption reached 250 weekly users, 30% of the company, with an 80% upvote rate.
- Duolingo open-sourced the core Slack bot code for other companies to reuse.
About the Speaker(s)
Aaron Wang is a Software Engineer on Duolingo’s DevXAI team, building AI-powered developer tools. He led the development of Duolingo’s AI Slackbot with 180+ MCP tools, helping employees find answers in help channels, triage alerts, debug incidents, and navigate internal systems.