# Microsoft Teams Events MCP

> Microsoft Teams Events connects your AI agent directly to your MS Teams account. You can programmatically create meetings, cancel events, and manage virtual town halls without leaving your chat client. It pulls live data on attendee lists, generates detailed participation reports, and accesses full event metadata for any organized meeting or webinar.

## Overview
- **Category:** industry-titans
- **Price:** Free
- **Tags:** webinar-hosting, meeting-orchestration, attendee-tracking, virtual-events, calendar-integration, collaboration-tools

## Description

You connect your AI agent directly to your MS Teams account; it lets you manage all your professional virtual meetings without leaving your chat client. You'll treat Teams like a command line—you just tell it what to do.

**Creating and Modifying Meetings**

You can schedule new Team meetings using `create_meeting`. Just give your agent the attendee emails as a comma-separated list, and it handles the setup. If you need to ditch an event, running `cancel_event` cancels any scheduled calendar meeting in Teams instantly. You'll also find that if you just need to know what’s going on, you can pull up multiple upcoming or past calendar items with `list_events`, or get a dedicated list of all online meetings for the team using `list_online_meetings`. 

**Managing Event Details and People**

When you've got an event ID or name, you run `get_event` to pull up its full details. For webinars specifically, whether they’re scheduled or already wrapped up, `get_webinar` gives you the granular info you need. You can also get a summary list of all past and upcoming webinars using `list_webinars`. Need background on someone? Running `get_profile` fetches basic profile information for any user in your organization.

**Generating Reports and Tracking Attendance**

Tracking who showed up is where this thing shines. The agent gathers detailed reports about meeting attendance via `get_attendance_report`. This report tells you exactly who was there, noting their join times, departure times, and how long they stayed—the average duration for every single person involved. 

**Checking System Status**

You don't want your workflow getting bogged down by technical junk. You run `check_teams_status` to verify the connection between your AI agent and the Microsoft Graph endpoint, guaranteeing that everything you ask it to do actually works.

This server makes your AI act like a dedicated meeting coordinator who never forgets anything or requires manual copy-pasting into a calendar invite. It gives you granular control over scheduling, attendance tracking, and event metadata for every single collaboration session.

## Tools

### cancel_event
Cancels a scheduled calendar event in Microsoft Teams.

### check_teams_status
Verifies the API connection status between your client and the Microsoft Graph endpoint.

### create_meeting
Creates a new Teams meeting, accepting attendee emails as comma-separated values.

### get_attendance_report
Retrieves detailed information about who attended a specified meeting and their participation metrics.

### get_event
Fetches specific details for an identified calendar event by ID or name.

### get_profile
Retrieves basic profile information for a specified user in the organization.

### get_webinar
Gets specific details about a scheduled or past webinar session.

### list_events
Lists multiple upcoming and past calendar events associated with the user's account.

### list_online_meetings
Retrieves a list of all scheduled online meetings for the user or team.

### list_webinars
Provides a summary list of upcoming and past webinars hosted via Teams.

## Prompt Examples

**Prompt:** 
```
Create a Teams meeting with John and Sarah for tomorrow at 2pm.
```

**Response:** 
```
Meeting created! Subject: 'Meeting with John & Sarah', tomorrow 2-3pm UTC. Teams link: https://teams.microsoft.com/l/... Both attendees have been invited. Would you like to add an agenda?
```

**Prompt:** 
```
Show the attendance report for meeting MTG-2048.
```

**Response:** 
```
Meeting MTG-2048 had 8 participants. 6 joined on time, 1 was 5 min late, and 1 left 10 min early. Average duration: 52 min. Would you like to export this data?
```

**Prompt:** 
```
List all upcoming webinars.
```

**Response:** 
```
You have 3 upcoming webinars. The next one is 'Q2 Product Launch' on May 5 with 142 registrants. Would you like to see registration details or session data?
```

## Capabilities

### Create and modify meetings
You can schedule new Teams meetings for specific attendees or cancel existing events using `create_meeting` and `cancel_event`.

### Generate attendance reports
The agent gathers who attended a meeting, noting joining times, leaving times, and the average duration for every participant via `get_attendance_report`.

### Manage event listings
You can retrieve lists of upcoming meetings (`list_events`), scheduled online gatherings (`list_online_meetings`), or specific webinars (`list_webinars`).

### Get detailed event info
Access full details for a single meeting, webinar, or user profile using `get_event`, `get_webinar`, or `get_profile`.

### Verify API connection status
The agent runs `check_teams_status` to confirm the connectivity between your AI client and Microsoft Graph, ensuring reliable operations.

## Use Cases

### Post-Client Pitch Debrief
The Project Manager needs proof of participation from a client call. Instead of asking an admin to export the data, they prompt their agent: 'Show me the attendance report for MTG-2048.' The agent runs `get_attendance_report` and provides the average duration and punctuality metrics instantly.

### Rescheduling a Town Hall
An HR specialist needs to move an internal webinar. They tell their agent: 'Cancel the Q3 town hall event, then schedule a new one for next Monday.' The agent executes `cancel_event` followed by `create_meeting`, updating all calendars automatically.

### Tracking Webinar Success
The L&D team wants to know which webinars were popular. They use the agent to run `list_webinars` first, then select one and call `get_webinar` to pull registration counts and session details for analysis.

### Auditing User Access
A developer needs a list of all possible meetings that happened last month. They use the agent with `list_events`, which returns a comprehensive, machine-readable list they can then process into a database schema.

## Benefits

- Stop manual follow-up. After a meeting, run `get_attendance_report` and instantly know who was there, how late they were, and when they left. No more compiling spreadsheets.
- Schedule complex events fast. Use `create_meeting` to invite multiple people and set up the entire calendar sync in one prompt. It's instant scheduling power.
- Manage all event types from one place. You can list regular meetings (`list_events`), specialized webinars (`list_webinars`), and general online gatherings using separate tools.
- Get full context on any event. Instead of just getting a title, use `get_event` to pull detailed metadata about the meeting's setup and purpose.
- Maintain an audit trail easily. The server gives access to recorded metadata, letting your agent keep track of transcripts and recording status for compliance.

## How It Works

The bottom line is: once it's connected, your AI can handle complex Teams operations using natural language prompts.

1. First, you subscribe to this server. This links your account's permissions to Vinkius.
2. You must retrieve an Access Token from the Microsoft Entra admin center (you'll need Graph permissions for this).
3. Finally, you tell your AI client what you need—like 'Schedule a meeting with Jane and Tom tomorrow at 10 am.' The agent then uses the specific tools to execute the task.

## Frequently Asked Questions

**How do I get an attendance report using get_attendance_report?**
You pass the meeting ID or event name to your agent. The server then runs `get_attendance_report` and returns a structured summary detailing participant presence, joining times, and total duration.

**Can I list all upcoming webinars using list_webinars?**
Yes. Using the `list_webinars` tool, your agent pulls a summary of scheduled events, letting you see how many are coming up and their titles without having to browse the full calendar.

**How do I cancel an event with cancel_event?**
You tell your agent which specific meeting or event ID needs canceling. The tool runs `cancel_event` and sends out the necessary cancellations across all linked calendars.

**What is check_teams_status for?**
The `check_teams_status` tool verifies that your AI client has active, working API permissions to interact with Microsoft Graph. It’s a quick check to ensure the server connection isn't broken.

**What format should I use for emails when calling `create_meeting`?**
You must pass all attendee emails as a single string, separated by commas. This comma-separated value (CSV) structure ensures the API correctly interprets and invites every required user.

**How can I get full details about one specific event using `get_event`?**
The tool retrieves comprehensive data points for a single event, including its unique join URL and detailed description. This lets you pull all necessary context for an archived or future meeting.

**If I use `list_events`, how do I handle results that exceed the page limit?**
The system uses pagination, meaning you must loop through subsequent result pages. You'll need to pass the next page token provided in the response until all events are captured.

**What permissions are required when I run `list_online_meetings`?**
You need the appropriate Microsoft Graph scopes for directory and calendar reads. If the required scope is missing, the call will fail with a permission error, so verify your access token first.

**How do I create a Teams meeting from my AI agent?**
Use the `create_meeting` tool with subject, start and end times (ISO 8601), and attendee emails. A Teams meeting link is generated automatically.

**Can I check attendance after a meeting?**
Yes. Use `get_attendance_report` with the meeting ID to retrieve join/leave times for each participant.

**Does this connector support webinars?**
Absolutely. Use `list_webinars` to see all scheduled webinars and `get_webinar` for detailed session and registration data.