Microsoft Teams
Connect Crow to Microsoft Teams to read and send messages in your Teams channels and chats through your AI assistant.
Experimental
This integration is experimental. Azure AD app registration and admin consent may be required by your organization.
What You Get
- Read messages from Teams channels and chats
- Send messages to channels
- List teams and channels
- Browse message threads
Setup
Step 1: Register an Azure AD application
- Go to the Azure Portal — App registrations
- Click New registration
- Name it (e.g., "Crow")
- Under Supported account types, select Single tenant (your organization only)
- Leave Redirect URI blank for now
- Click Register
- On the app overview page, copy the Application (client) ID and Directory (tenant) ID
Step 2: Create a client secret
- In your app registration, go to Certificates & secrets
- Click New client secret
- Add a description (e.g., "Crow MCP") and choose an expiration
- Click Add
- Copy the Value immediately — Azure only shows it once
Step 3: Add API permissions
- Go to API permissions in the left sidebar
- Click Add a permission → Microsoft Graph
- Select Application permissions
- Search for and add each permission listed in Required Permissions below
- Click Grant admin consent for [your organization] (requires admin role)
Step 4: Add to Crow
Paste all three values in Crow's Nest → Settings → Integrations, or on the Setup page at /setup.
The environment variables are TEAMS_CLIENT_ID, TEAMS_CLIENT_SECRET, and TEAMS_TENANT_ID.
Required Permissions
| Permission | Type | Why |
|---|---|---|
Chat.Read | Application | Read chat messages |
ChannelMessage.Read.All | Application | Read messages in all channels |
ChannelMessage.Send | Application | Send messages to channels |
Team.ReadBasic.All | Application | List teams |
Channel.ReadBasic.All | Application | List channels within teams |
Troubleshooting
"Insufficient privileges" error
An Azure AD admin must click Grant admin consent on the API permissions page. Without admin consent, the app cannot use application-level permissions.
"AADSTS700016: Application not found"
Double-check that your TEAMS_CLIENT_ID and TEAMS_TENANT_ID are correct. The client ID is the Application (client) ID on the app overview page, not the Object ID.
Client secret expired
Azure client secrets have a maximum lifetime (typically 24 months). Create a new secret in Certificates & secrets and update it in Crow.