teamsly

mcp
Guvenlik Denetimi
Uyari
Health Uyari
  • License — License: NOASSERTION
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 8 GitHub stars
Code Uyari
  • process.env — Environment variable access in electron/main.ts
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Open-source, keyboard-first Microsoft Teams client — built on the Graph API with AI summaries, voice rooms, themes, disappearing DMs, and an MCP server for Claude & Cursor.

README.md
Teamsly

Teamsly

A calmer way to work inside Microsoft Teams.

teamsly.app · Live demo · Self-hosting guide

License: AGPL-3.0 Next.js 15 Microsoft Graph API

Teamsly is an open-source, third-party web client for Microsoft Teams. It reads and writes your real Teams data via the official Microsoft Graph API — no scraping, no reverse engineering. Your messages stay in Microsoft's infrastructure. Teamsly is just a better interface.

Features

Clean message feed Threaded replies, reactions, file attachments, inline images
Full DM & channel support All chats and channels from your Microsoft 365 account
Fast keyboard navigation Cmd/Ctrl+K jump-to, search, keyboard-first message input
AI message summaries Catch up on long threads in seconds (opt-in, uses Anthropic API)
GIF search Tenor-powered GIF picker in the message composer
File preview Open and preview shared files without leaving the app
Smart notifications Browser notifications with mentions-only and keyword filtering
Light & dark mode Follows OS preference or override in Settings
MCP server Let any AI agent read and send Teams messages on your behalf
Open source AGPL-3.0 — inspect the code, self-host, or contribute

Getting started

Hosted (no setup required)

Go to teamsly.app and sign in with your Microsoft 365 account. No credit card required.

Self-hosting

See SELF_HOSTING.md for the full guide — Azure AD app registration, environment variables, and deployment to Vercel, Fly, Render, or any Node.js host.

Quick start for local development:

git clone https://github.com/mayurrawte/teamsly.git
cd teamsly
cp .env.example .env.local   # fill in Azure AD credentials
npm install
npm run dev                   # http://localhost:3000

MCP Server (AI agent integration)

Teamsly ships a Model Context Protocol server that lets any MCP-compatible AI client (Claude Desktop, Cursor, etc.) read and send messages in your Teams chats and channels.

Configure Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "teamsly": {
      "command": "npx",
      "args": ["tsx", "/path/to/teamsly/mcp-server/index.ts"]
    }
  }
}

On first run, the server prints a URL and short code to the Claude Desktop logs. Open the URL, enter the code, sign in with Microsoft. Tokens are saved to ~/.config/teamsly-mcp/tokens.json and auto-refresh — no repeat setup needed.

Cursor / Windsurf: same config under Settings → MCP Servers.

Claude Code CLI:

claude mcp add teamsly -- npx tsx /path/to/teamsly/mcp-server/index.ts

Available tools

Tool Description
list_chats List your DM conversations
get_chat_messages Read messages from a DM
send_chat_message Send a DM
list_teams List your joined teams
list_channels List channels in a team
get_channel_messages Read messages from a channel
send_channel_message Post to a channel

For self-hosted deployments, replace TEAMSLY_BASE_URL with your own URL and set TEAMSLY_MCP_SECRET to the value of your TEAMSLY_MCP_SECRET environment variable.

Architecture

src/
├── app/
│   ├── api/                  # Next.js API routes — thin proxy to Graph API
│   │   ├── auth/             # Auth.js (NextAuth v5) handler
│   │   ├── teams/            # GET /api/teams
│   │   ├── messages/         # GET+POST channel messages
│   │   ├── chats/            # GET /api/chats + messages
│   │   ├── mcp/              # MCP-compatible HTTP endpoints
│   │   └── ...               # presence, files, GIFs, activity scan
│   ├── workspace/            # Authenticated app shell
│   │   ├── t/[teamId]/[channelId]/  # Channel view
│   │   ├── dm/[chatId]/             # DM view
│   │   ├── activity/                # Notification feed
│   │   ├── files/                   # File browser
│   │   ├── meetings/                # Calendar
│   │   └── later/                   # Saved messages
│   ├── login/                # Sign-in page
│   └── page.tsx              # Marketing landing page
├── components/
│   ├── layout/               # AppShell, Sidebar, LeftRail, SignInPage
│   ├── messages/             # ChannelView, ChatView, MessageFeed, MessageItem, MessageInput
│   └── modals/               # Search, JumpTo, Preferences, GIF picker
├── lib/
│   ├── auth/                 # Auth.js config + token refresh
│   └── graph/                # Microsoft Graph API client
├── store/                    # Zustand state (workspace, drafts, bookmarks, toasts)
└── types/                    # TypeScript types (MSTeam, MSMessage, etc.)

Data flow: Browser → Next.js API route → Microsoft Graph API → Microsoft's servers

Nothing is stored in Teamsly. The API routes act as a thin authenticated proxy.

Tech stack

  • Next.js 15 (App Router) + TypeScript
  • Tailwind CSS v4 + Radix UI primitives
  • Auth.js v5 with Microsoft Entra ID provider (OAuth 2.0)
  • Microsoft Graph API via @microsoft/microsoft-graph-client
  • Zustand for client-side state
  • Anthropic SDK for optional AI summaries

Legal

Built entirely on the Microsoft Graph API (official, public). This project:

  • Does not reverse-engineer the Teams client
  • Does not use private or undocumented APIs
  • Does not store user data outside Microsoft's infrastructure
  • Is not affiliated with or endorsed by Microsoft Corporation

Users authenticate directly with Microsoft via OAuth 2.0. Teamsly never sees your password.

Contributing

PRs welcome. Open areas:

  • Graph change notifications (replace 5-second polling with webhooks)
  • Richer markdown editor in the composer
  • Emoji picker improvements

License

AGPL-3.0 — free to use, self-host, and modify. If you distribute a modified version as a hosted service, you must open-source your changes under the same license.


Built by @mayurrawte · Not affiliated with Microsoft

Yorumlar (0)

Sonuc bulunamadi