Teams Puppeteer MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Teams Puppeteer MCP Serverwhat are my unread messages?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Teams Puppeteer MCP Server
A high-performance Model Context Protocol (MCP) server for Microsoft Teams chat automation, message extraction, and unread notification monitoring powered by Puppeteer.
💡 Why This Project?
Most Microsoft Teams integrations require:
❌ Enterprise Azure App Registration
❌ Azure Tenant Administrator Consent
❌ Paid Microsoft 365 / Graph API licenses & Bot frameworks
teams-puppeteer-mcp takes a radically simpler approach:
✅ Zero Setup / No API Keys: Uses
npxwith zero local file path configuration.✅ Direct Web Client Automation: Interacts directly with Microsoft Teams (
teams.cloud.microsoft) using your standard browser profile.✅ Persistent SSO & MFA Session: Log in once interactively with your work, school, or personal account. Your session cookies and tokens persist locally in your user profile.
✅ Zero Token Overhead: Optimized specifically for LLMs. Returns clean, high-density human/LLM-readable text without nested JSON bloat.
✅ Full Cross-Platform Support: Works seamlessly on Windows, macOS, and Linux.
Related MCP server: Puppeteer MCP Server
🚀 Quick Setup (Zero Configuration)
You do not need to manually clone this repository or guess local file paths. You can add it directly to your MCP client using npx.
Merging with existing servers: If you already have other MCP servers configured in your client, do not overwrite the whole file! Simply insert the "teams" (or "teams-puppeteer") block into your existing "mcpServers" object.
1. Claude Desktop
Add this to your claude_desktop_config.json:
Windows:
%APPDATA%\\Claude\\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"//": "... keep your other existing servers here ...",
"teams": {
"command": "npx",
"args": [
"-y",
"@tinobruno/teams-puppeteer-mcp"
]
}
}
}Note: You can also run directly from GitHub without npm:
"args": ["-y", "github:tinobruno/teams-puppeteer-mcp"]
2. Cursor
Add to your Cursor MCP settings (~/.cursor/mcp.json or via Settings → Features → MCP):
{
"mcpServers": {
"//": "... keep your other existing servers here ...",
"teams": {
"command": "npx",
"args": [
"-y",
"@tinobruno/teams-puppeteer-mcp"
]
}
}
}3. VS Code (Cline / Roo-Code)
In your Cline MCP settings (cline_mcp_settings.json):
{
"mcpServers": {
"//": "... keep your other existing servers here ...",
"teams": {
"command": "npx",
"args": [
"-y",
"@tinobruno/teams-puppeteer-mcp"
],
"disabled": false,
"autoApprove": []
}
}
}4. MinnieTheMoEcher
You can add it via the Web UI (under Settings → MCP Servers → + Add Server) or by adding this entry into your existing mcp_servers.json:
{
"mcpServers": {
"//": "... keep your other existing servers here ...",
"teams-puppeteer": {
"command": "npx",
"args": [
"-y",
"@tinobruno/teams-puppeteer-mcp"
],
"enabled": true,
"transport_type": "stdio"
}
}
}🔑 First-Time Interactive Login
On your first run:
When your AI assistant invokes a Teams tool, a browser window will launch and navigate to Microsoft Teams (
https://teams.cloud.microsoft).Log in with your corporate SSO, password, and complete your Multi-Factor Authentication (MFA/2FA) prompt.
Once you reach the Teams chat interface, your session is automatically saved to your local profile directory (
~/.teams_puppeteer_profileon macOS/Linux, or%USERPROFILE%\\.teams_puppeteer_profileon Windows).Subsequent calls will automatically connect to your authenticated session.
🛠️ Available MCP Tools
Tool Name | Description | Parameters |
| Primary tool to read the single latest message from a contact, group, or channel. Matches partial names automatically. |
|
| Scans for unread messages. If |
|
| Retrieves the last N messages from a specific conversation. |
|
| Lists sidebar conversation names, unread flags, and latest activity timestamps. |
|
| Types and dispatches a message into Teams using native keyboard input into CKEditor 5. |
|
⚙️ Environment Variables (Optional)
You can customize the behavior by passing optional env variables in your MCP client config:
{
"mcpServers": {
"//": "... keep your other existing servers here ...",
"teams": {
"command": "npx",
"args": ["-y", "@tinobruno/teams-puppeteer-mcp"],
"env": {
"TEAMS_HEADLESS": "true",
"PUPPETEER_EXECUTABLE_PATH": "/usr/bin/google-chrome"
}
}
}
}Variable | Description | Default |
| Set to |
|
| Custom directory path for browser cache & persistent session cookies. |
|
| Explicit path to your Chrome or Microsoft Edge executable. | Auto-detected |
| Connect to an already running Chrome instance with remote debugging. | Auto-detected / |
🧑💻 Manual Installation (For Developers / Contributors)
If you are developing or modifying the server locally:
git clone https://github.com/tinobruno/teams-puppeteer-mcp.git
cd teams-puppeteer-mcp
npm install
node index.js🔒 Privacy & Security
Local Storage Only: Your credentials, cookies, and chat contents remain strictly on your local machine inside
.teams_puppeteer_profile/.Zero Cloud Proxies: No data is ever routed through external third-party servers. All automation occurs directly between your local machine and Microsoft Teams endpoints.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
This server cannot be deployed
Maintenance
Related MCP Connectors
Undetectable cloud browser sessions for AI agents and scrapers. Navigate, extract, click, captcha.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
Programmatic headless browser sessions: create, interact, browse, and extract - rendered in a real
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables browser automation with Puppeteer, supporting navigation, form interactions, and connection to active Chrome instances for comprehensive web page interaction.81,677 npm483MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to perform browser automation including web navigation, element interaction, and screenshot capture using Puppeteer. It provides capabilities for executing JavaScript in the browser and monitoring console logs for debugging and data extraction.25,069 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables token-efficient browser automation for AI chats like ChatGPT, Gemini, and Claude, allowing reading responses, sending messages, waiting for streaming replies, and bridging conversations between tabs via Chrome DevTools Protocol.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to scrape web pages, fill forms, take screenshots, and extract structured data via Chrome DevTools Protocol with zero external dependencies.MIT