Connect your AI Agents to Microsoft Teams GCC High in minutes

Available tools
reply_to_message
Reply to a specific message in a Teams channel to create threaded conversations.
get_message_replies
Retrieve all replies to a specific message to follow threaded conversations. Useful for understanding discussion context and reading complete conversation threads.
check_channel_type
Check if a channel is private or standard. Returns channel permissions and member management availability.
list_private_channels
List only the private channels in a team.
list_channels
List all channels in a Microsoft Team.
create_channel
Create a new channel within a Team for focused discussions.
get_channel_info
Get detailed information about a Teams channel including description, settings, and metadata. Useful for understanding channel purpose and permissions.
update_channel
Update channel settings such as name, description, or moderation settings.
delete_channel
Permanently delete a channel from a Team. Exercise caution - this removes all channel messages and files. Typically used for cleanup or reorganization.
list_team_files
List all files stored in a Team's SharePoint drive.
delete_team_file
Remove files from a Team's drive to clean up outdated content, free up storage, or remove sensitive information. Exercise caution as this permanently deletes files.
create_meeting
Create a new Teams meeting with attendees and schedule it in calendars. Includes automatic Teams integration for online meetings.
list_meetings
List upcoming meetings and calendar events for the current user.
get_meeting_details
Get detailed information about a specific meeting including attendees, Teams link, and agenda.
update_meeting
Update an existing meeting's details such as time, attendees, or description.
cancel_meeting
Cancel a scheduled meeting and notify all attendees. Use this to remove meetings that are no longer needed or when circumstances change.
get_free_busy_schedule
Check availability and free/busy times for users to find meeting time slots.
list_team_members
List all members of a Microsoft Team with their roles and status.
add_team_member
Add a new member to a Microsoft Team with specified roles and permissions.
get_team_member
Get detailed information about a specific team member including their role, permissions, and profile.
update_team_member
Update a team member's role or permissions within the team.
remove_team_member
Remove a member from a Microsoft Team to revoke their access to team resources.
list_channel_messages
Retrieve message history from a Teams channel. Includes _is_from_me flag to distinguish your messages from others. Date filtering: created_before and created_after both use client-side filtering (API doesn't support date filters). Use when you know the specific team/channel. Faster than list_all_my_messages for single-channel queries.
send_channel_message
Send a message to a Teams channel. Requires team_id and channel_id. Use get_team_primary_channel to get the General channel, or list_channels to find other channels.
get_channel_message
Get detailed information about a specific message including sender, timestamp, and full content. Includes _is_from_me flag to distinguish your messages. Useful for referencing or analyzing particular communications.
search_teams
Search for Teams by name or description to quickly find relevant workspaces. Supports discovering teams to join and finding specific collaboration spaces.
get_team_primary_channel
Get information about a Team's default 'General' channel where main discussions occur. Essential for accessing the primary communication hub of any team.
list_channel_members
List all members with access to a specific channel, especially useful for private channels. Supports managing channel access and understanding membership.
add_channel_member
Add a user to a private channel for selective access control. Note: This operation is only supported for private channels. For standard channels, use 'add_team_member' as standard channels automatically include all team members.
remove_channel_member
Remove a user from a private channel while maintaining their team membership. Note: This operation is only supported for private channels. For standard channels, use 'remove_team_member' as standard channels cannot have selective membership.
list_teams
List all Microsoft Teams that the user is a member of. Returns all teams - no filtering options available due to API limitations.
create_team
Create a new Microsoft Team for collaboration. Use to set up project workspaces and organize team communication.
get_team_info
Get detailed information about a specific Microsoft Team including settings, member count, and metadata. Useful for understanding team structure and permissions.
update_team
Update team properties and settings including display name, description, member permissions, guest settings, messaging options, and fun features.
delete_team
Permanently delete a Microsoft Team. Exercise caution - this removes all team data, channels, and files. Typically used for cleanup or decommissioning projects.
list_meeting_transcripts
List available transcripts for a meeting with metadata (IDs, timestamps, URLs). Accepts event or meeting ID.
get_transcript_content
Get transcript content in VTT format with speaker names and timestamps. Accepts event or meeting ID.
search_users
Search for users in the organization by name, email, or display name. Use to find people to add to teams, start chats with, or @mention in messages. Accepts simple queries like 'Max' or advanced syntax like '"displayName:Max"'. Input: {"query": "search_term", "top": number_of_results}.
get_user_presence
Get a user's presence status (available, busy, away, offline).
send_chat_message
Send a direct private message to a user outside of channels. Returns shareable webUrl link to the sent message. Requires user_id (get from search_users). Creates new DM thread if none exists with that user.
add_message_reaction
Add an emoji reaction to a message in a Teams channel.
search_messages
Search for messages across teams and channels using keywords. Returns full message content with _is_from_me flag to distinguish your messages from others. Uses hybrid approach for immediate results and indexed search. FAST for keyword searches. Use this instead of list_all_my_messages when searching by text content. Note: newly sent messages may take minutes to appear in indexed search.
get_user_info
Get detailed information about a specific user including profile, contact info, and organizational details. Requires a valid user ID (GUID format) or email address - use search_users to find valid user IDs first.
check_user_availability
Check if a user is likely available by looking at their recent activity and profile information. Alternative to presence when direct presence permissions are not available.
list_direct_chats
List all direct chats and group chats the user is part of. Includes unread message detection via chatViewpoint. FAST: Use this for counting contacts, finding who you messaged, or checking unread status. For message content use read_direct_chat_messages.
read_direct_chat_messages
Read messages from a specific direct chat or group chat. Returns conversation history with timestamps, senders, and content. Includes _is_from_me flag and webUrl links. Date filtering: created_before (API filter) and created_after (client-side). Use list_direct_chats first to get chat IDs.
list_all_my_messages
Get messages from Teams channels and DMs. Use my_messages_only=True for personal message search (prioritizes DMs), or team_ids for team-specific searches. Date filtering reduces execution time.
validate_credential
Validate Microsoft Teams credentials. Verifies credentials during setup.

How to set up Merge Agent Handler
In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}FAQs on using Merge's Microsoft Teams GCC High MCP server
FAQs on using Merge's Microsoft Teams GCC High MCP server
What is a Microsoft Teams MCP?
It's an MCP server that gives your agents access to Microsoft Teams via tools. Your agents can invoke these tools to send messages to channels, schedule meetings, check user availability, retrieve meeting transcripts, and more.
Microsoft Teams offers MCP support through their SDK, but you can also use a Teams MCP server from a third-party platform, like Merge Agent Handler.
How can I use the Microsoft Teams MCP server?
The use cases naturally depend on the agent you've built, but here are a few common ones:
- Incident alerting: When a monitoring tool like Datadog detects an anomaly, an agent calls <code class="blog_inline-code">
send_channel_message</code>to post a structured alert to the relevant on-call channel in Teams, including error details and a link to the affected service
- Cross-tool status updates: When a Jira ticket moves to "In Review", an agent posts an update to the corresponding Teams channel using <code class="blog_inline-code">
send_channel_message</code>, keeping the team informed without anyone needing to check Jira manually
- Automated meeting scheduling: An agent calls <code class="blog_inline-code">
check_user_availability</code>to find open slots across a set of attendees, then calls <code class="blog_inline-code">create_meeting</code>to book a Teams meeting and send invites, triggered by a deal reaching a specific pipeline stage
- Meeting transcript summarization: After a meeting ends, an agent calls <code class="blog_inline-code">
get_transcript_content</code>to retrieve the full transcript, summarizes the key decisions and action items, and posts the summary to a designated Teams channel
What are popular tools for Microsoft Teams' MCP server?
Here are some of the most commonly used tools:
<code class="blog_inline-code">send_channel_message</code>posts a message to a specified Teams channel. Useful for agents that need to surface alerts, status updates, or summaries from external systems into a Teams workspace
<code class="blog_inline-code">list_channel_messages</code>retrieves recent messages from a Teams channel. Call this when an agent needs to review conversation history before taking action or generating a digest
<code class="blog_inline-code">search_messages</code>searches across Teams messages by keyword or phrase. Good for agents that need to locate a specific discussion thread or audit activity around a particular topic
<code class="blog_inline-code">create_meeting</code>schedules a new Teams meeting with specified attendees and time. Use this when an agent needs to coordinate a meeting in response to a business trigger, like a support escalation or a deal milestone
<code class="blog_inline-code">get_transcript_content</code>retrieves the full text transcript of a recorded Teams meeting. Helpful when an agent needs to extract decisions, action items, or context from a meeting after it has ended
<code class="blog_inline-code">check_user_availability</code>returns free and busy windows for one or more users. Call this before scheduling a meeting to ensure the agent books at a time that works for all attendees
What makes Merge Agent Handler's Microsoft Teams MCP server better than alternative Microsoft Teams MCP servers?
Here is what distinguishes Merge Agent Handler's Microsoft Teams MCP server from building your own or using a generic alternative:
- Enterprise-grade security and DLP: Merge Agent Handler includes built-in data loss prevention controls that let you block or redact sensitive fields before they reach an agent. For Microsoft Teams, this means you can prevent message contents, meeting transcripts, and user presence data from being exposed even when the agent has broad read access
- Managed authentication and credentials: Merge stores and refreshes Microsoft Teams credentials on your behalf. You never expose OAuth tokens to an agent or manage the complexity of Microsoft's token refresh flows manually
- Real-time observability and audit trail: Every tool call made against Microsoft Teams is logged with timestamp, tool name, input parameters, and response metadata. You can see exactly what messages an agent sent or read without adding any instrumentation to your own infrastructure
- Tool Packs and controlled access: Tool Packs let you bundle specific Microsoft Teams tools with tools from other connectors into a single MCP endpoint, scoped to a specific use case. An agent gets exactly the tools it needs, nothing more
How can I start using Merge Agent Handler's Microsoft Teams MCP server?
You can take the following steps:
1. Create or log into your Merge Agent Handler account and navigate to Tool Packs (collections of connector tools scoped to a specific use case)
2. Create a new Tool Pack, then find and enable the Microsoft Teams connector. Choose which tools to include — enable read tools like list_channel_messages for monitoring use cases, or add write tools like send_channel_message and create_meeting if your agent needs to post updates or schedule meetings
3. Add a Registered User inside the Tool Pack. This is the identity context under which your agent operates. Merge generates a unique MCP URL scoped to this user once it's created
4. From the Registered User detail page, authenticate Microsoft Teams by completing the OAuth flow. Merge stores and manages the credentials going forward
5. Copy the MCP URL from the Tool Pack detail page and generate an API key from Settings. You'll need both to connect your agent
6. Add the MCP server to your agent or IDE using the MCP URL and API key. Your Microsoft Teams tools are now accessible through that endpoint
Ready to try it out?
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now





