Connects to Microsoft Teams through the Graph API, letting Claude list your chats, read and send messages, browse teams and channels, and check presence status. Built by Mindstone as part of a 35-connector suite, this server shares host-orchestrated OAuth with their other Microsoft 365 connectors (Outlook mail, calendar, OneDrive files, SharePoint). Useful when you need an LLM to search chat history, send updates to team channels, or coordinate notifications based on availability. Ships with stdio transport and follows the same hardened supply-chain practices as the rest of the monorepo, including pinned dependencies, seven-day release cool-down, and provenance attestation on npm.
Public tool metadata for what this MCP can expose to an agent.
MICROSOFT_TEAMS_ADD_MEMBER_TO_TEAMTool to add a user to a Microsoft Teams team. Use when granting or updating membership for a user.3 paramsTool to add a user to a Microsoft Teams team. Use when granting or updating membership for a user.
rolesarrayteam_idstringuser_idstringMICROSOFT_TEAMS_ARCHIVE_TEAMTool to archive a Microsoft Teams team. Use after confirming the team ID; returns 202 if accepted.2 paramsTool to archive a Microsoft Teams team. Use after confirming the team ID; returns 202 if accepted.
team_idstringshould_set_spo_site_read_only_for_membersbooleanMICROSOFT_TEAMS_CHATS_GET_ALL_CHATSRetrieves all Microsoft Teams chats a specified user is part of, supporting filtering, property selection, and pagination.4 paramsRetrieves all Microsoft Teams chats a specified user is part of, supporting filtering, property selection, and pagination.
topintegerfilterstringselectarrayuser_idstringMICROSOFT_TEAMS_CHATS_GET_ALL_MESSAGESRetrieves all messages from a specified Microsoft Teams chat using the Microsoft Graph API, automatically handling pagination; ensure `chat_id` is valid and OData expressions in `filter` or `select` are correct.3 paramsRetrieves all messages from a specified Microsoft Teams chat using the Microsoft Graph API, automatically handling pagination; ensure `chat_id` is valid and OData expressions in `filter` or `select` are correct.
topintegerfilterstringchat_idstringMICROSOFT_TEAMS_CREATE_MEETINGUse to schedule a new standalone Microsoft Teams online meeting, i.e., one not linked to any calendar event.5 paramsUse to schedule a new standalone Microsoft Teams online meeting, i.e., one not linked to any calendar event.
subjectstringparticipantsarrayend_date_timestringstart_date_timestringis_passcode_requiredbooleanMICROSOFT_TEAMS_CREATE_TEAMTool to create a new Microsoft Teams team. Use when you need to provision a team with optional template, channels, and members.6 paramsTool to create a new Microsoft Teams team. Use when you need to provision a team with optional template, channels, and members.
membersarrayvisibilitystringprivate · publicdefault: publicdescriptionstringdisplayNamestringfirstChannelNamestringtemplate_odata_bindstringMICROSOFT_TEAMS_DELETE_TEAMTool to delete a Microsoft Teams team. Use after confirming the target team ID.1 paramsTool to delete a Microsoft Teams team. Use after confirming the target team ID.
team_idstringMICROSOFT_TEAMS_GET_CHANNELTool to get a specific channel in a team. Use after obtaining valid team and channel IDs to fetch channel details.2 paramsTool to get a specific channel in a team. Use after obtaining valid team and channel IDs to fetch channel details.
team_idstringchannel_idstringMICROSOFT_TEAMS_GET_CHAT_MESSAGETool to get a specific chat message. Use after confirming chat_id and message_id.2 paramsTool to get a specific chat message. Use after confirming chat_id and message_id.
chat_idstringmessage_idstringMICROSOFT_TEAMS_GET_TEAMTool to get a specific team. Use when full details of one team by ID are needed.1 paramsTool to get a specific team. Use when full details of one team by ID are needed.
team_idstringMICROSOFT_TEAMS_LIST_MESSAGE_REPLIESTool to list replies to a channel message. Use after obtaining team, channel, and message IDs.4 paramsTool to list replies to a channel message. Use after obtaining team, channel, and message IDs.
topintegerteam_idstringchannel_idstringmessage_idstringMICROSOFT_TEAMS_LIST_TEAM_MEMBERSTool to list members of a Microsoft Teams team. Use when you need to retrieve the members of a specific team, for auditing or notifications.2 paramsTool to list members of a Microsoft Teams team. Use when you need to retrieve the members of a specific team, for auditing or notifications.
topintegerteam_idstringMICROSOFT_TEAMS_LIST_TEAMS_TEMPLATESTool to list available Microsoft Teams templates. Use when retrieving templates for team creation or customization workflows.6 paramsTool to list available Microsoft Teams templates. Use when retrieving templates for team creation or customization workflows.
topintegerskipintegercountbooleanfilterstringselectstringorderbystringMICROSOFT_TEAMS_LIST_USERSTool to list all users in the organization. Use when you need to retrieve directory users with filtering, pagination, and field selection.7 paramsTool to list all users in the organization. Use when you need to retrieve directory users with filtering, pagination, and field selection.
$topinteger$skipinteger$expandstring$filterstring$selectstring$orderbystringconsistencyLevelstringMICROSOFT_TEAMS_SEARCH_FILESSearch files in Microsoft Teams using KQL syntax. Find files by name, type, content, author, and modification date across all Teams and channels. Supports boolean logic and date ranges. Examples: 'filetype:pdf AND lastmodifiedtime>=2024-10-01', 'contract AND budget', 'filename...4 paramsSearch files in Microsoft Teams using KQL syntax. Find files by name, type, content, author, and modification date across all Teams and channels. Supports boolean logic and date ranges. Examples: 'filetype:pdf AND lastmodifiedtime>=2024-10-01', 'contract AND budget', 'filename...
sizeintegerquerystringfrom_indexintegerenable_top_resultsbooleanMICROSOFT_TEAMS_SEARCH_MESSAGESSearch Microsoft Teams messages using powerful KQL syntax. Supports sender (from:), date filters (sent:), attachments, and boolean logic. Works across all Teams chats and channels the user has access to. Examples: 'from:user@example.com AND sent>=2024-10-01', 'punchlist OR ter...4 paramsSearch Microsoft Teams messages using powerful KQL syntax. Supports sender (from:), date filters (sent:), attachments, and boolean logic. Works across all Teams chats and channels the user has access to. Examples: 'from:user@example.com AND sent>=2024-10-01', 'punchlist OR ter...
sizeintegerquerystringfrom_indexintegerenable_top_resultsbooleanMICROSOFT_TEAMS_TEAMS_CREATE_CHANNELCreates a new 'standard', 'private', or 'shared' channel within a specified Microsoft Teams team.4 paramsCreates a new 'standard', 'private', or 'shared' channel within a specified Microsoft Teams team.
namestringteam_idstringdescriptionstringmembership_typestringMICROSOFT_TEAMS_TEAMS_CREATE_CHATCreates a new chat; if a 'oneOnOne' chat with the specified members already exists, its details are returned, while 'group' chats are always newly created.3 paramsCreates a new chat; if a 'oneOnOne' chat with the specified members already exists, its details are returned, while 'group' chats are always newly created.
topicstringmembersarraychatTypestringMICROSOFT_TEAMS_TEAMS_GET_MESSAGERetrieves a specific message from a Microsoft Teams channel using its Team, Channel, and Message IDs.3 paramsRetrieves a specific message from a Microsoft Teams channel using its Team, Channel, and Message IDs.
team_idstringchannel_idstringmessage_idstringMICROSOFT_TEAMS_TEAMS_LISTRetrieves Microsoft Teams accessible by the authenticated user, allowing filtering, property selection, and pagination.3 paramsRetrieves Microsoft Teams accessible by the authenticated user, allowing filtering, property selection, and pagination.
topintegerfilterstringselectstringMICROSOFT_TEAMS_TEAMS_LIST_CHANNELSRetrieves channels for a specified Microsoft Teams team ID (must be valid and for an existing team), with options to include shared channels, filter results, and select properties.4 paramsRetrieves channels for a specified Microsoft Teams team ID (must be valid and for an existing team), with options to include shared channels, filter results, and select properties.
filterstringselectstringteam_idstringinclude_shared_channelsbooleanMICROSOFT_TEAMS_TEAMS_LIST_CHAT_MESSAGESRetrieves messages (newest first) from an existing and accessible Microsoft Teams one-on-one chat, group chat, or channel thread, specified by `chat_id`.2 paramsRetrieves messages (newest first) from an existing and accessible Microsoft Teams one-on-one chat, group chat, or channel thread, specified by `chat_id`.
topintegerchat_idstringMICROSOFT_TEAMS_TEAMS_LIST_PEOPLERetrieves a list of people relevant to a specified user from Microsoft Graph, noting the `search` parameter is only effective if `user_id` is 'me'.7 paramsRetrieves a list of people relevant to a specified user from Microsoft Graph, noting the `search` parameter is only effective if `user_id` is 'me'.
topintegerskipintegerfilterstringsearchstringselectstringorderbystringuser_idstringMICROSOFT_TEAMS_TEAMS_POST_CHANNEL_MESSAGEPosts a new text or HTML message to a specified channel in a Microsoft Teams team.4 paramsPosts a new text or HTML message to a specified channel in a Microsoft Teams team.
contentstringteam_idstringchannel_idstringcontent_typestringMICROSOFT_TEAMS_TEAMS_POST_CHAT_MESSAGESends a non-empty message (text or HTML) to a specified, existing Microsoft Teams chat; content must be valid HTML if `content_type` is 'html'.3 paramsSends a non-empty message (text or HTML) to a specified, existing Microsoft Teams chat; content must be valid HTML if `content_type` is 'html'.
chat_idstringcontentstringcontent_typestringMICROSOFT_TEAMS_TEAMS_POST_MESSAGE_REPLYSends a reply to an existing message, identified by `message_id`, within a specific `channel_id` of a given `team_id` in Microsoft Teams.5 paramsSends a reply to an existing message, identified by `message_id`, within a specific `channel_id` of a given `team_id` in Microsoft Teams.
contentstringteam_idstringchannel_idstringmessage_idstringcontent_typestringMICROSOFT_TEAMS_UNARCHIVE_TEAMTool to unarchive a Microsoft Teams team. Use when you need to restore an archived team to active state.1 paramsTool to unarchive a Microsoft Teams team. Use when you need to restore an archived team to active state.
team_idstringMICROSOFT_TEAMS_UPDATE_CHANNEL_MESSAGETool to update a message in a channel. Use when you need to modify an existing channel message after confirming channel and message IDs.5 paramsTool to update a message in a channel. Use when you need to modify an existing channel message after confirming channel and message IDs.
contentstringteam_idstringchannel_idstringmessage_idstringcontent_typestringMICROSOFT_TEAMS_UPDATE_CHAT_MESSAGETool to update a specific message in a chat. Use when you need to correct or modify a sent chat message.4 paramsTool to update a specific message in a chat. Use when you need to correct or modify a sent chat message.
chat_idstringcontentstringmessage_idstringcontent_typestringMICROSOFT_TEAMS_UPDATE_TEAMTool to update the properties of a team. Use when you need to modify team settings such as member, messaging, or fun settings.4 paramsTool to update the properties of a team. Use when you need to modify team settings such as member, messaging, or fun settings.
team_idstringfunSettingsobjectmemberSettingsobjectmessagingSettingsobject
Source-available MCP servers by Mindstone. Works with any MCP host — Claude Desktop, Cursor, Rebel, and others.
Browse all 35 connectors with their version, auth model, and tool count at the catalogue site (regenerated from each connector's STATUS.json on every push).
| Connector | Description |
|---|---|
| apple-shortcuts | Run and list Apple Shortcuts on macOS via the shortcuts CLI |
| browser-automation | Headless browser control via accessibility snapshots — navigate, fill forms, click, and screenshot pages via the agent-browser CLI |
| elevenlabs | Generate speech, music, and sound effects, browse voices, and transcribe audio via the ElevenLabs API |
| email-imap | Read, search, send, and manage emails through IMAP and SMTP |
| fathom | List and search meetings, view details, read transcripts, and manage teams via Fathom AI |
| freshdesk | Manage helpdesk tickets, search support requests, reply to customers, and add internal notes |
| gamma | Create AI-powered presentations, documents, webpages, and social posts via Gamma |
| google-analytics | Discover GA4 accounts and properties, explore the live schema, and run reports via the Google Analytics API |
| google-workspace | Read, search, and send across Gmail, Calendar, Drive, Docs, Sheets, Slides, Contacts, and Comments with host-orchestrated OAuth and per-account on-disk credentials |
| hubspot | Manage HubSpot CRM — contacts, companies, deals, tickets, leads, tasks, notes, properties, lists, workflows, knowledge base, and files — with multi-account, host-orchestrated OAuth |
| humaans | Query employee profiles, job roles, time-away requests, and company info via Humaans HR |
| kling | Generate AI videos from text descriptions or images via Kling AI |
| microsoft-calendar | List, create, update, and respond to Outlook calendar events, check free/busy, and list calendars; reuses the cohort's host-orchestrated Microsoft 365 OAuth surface |
| microsoft-files | List, search, upload, download, share, and read OneDrive files via Microsoft Graph; reuses the cohort's host-orchestrated Microsoft 365 OAuth surface |
| microsoft-mail | List, search, read, send, reply, forward, draft, move, and delete Outlook email; owns the cohort's host-orchestrated Microsoft 365 OAuth surface |
| microsoft-sharepoint | Discover sites, browse libraries, read pages and lists, search content, and mutate SharePoint files/lists with incremental Sites.Read.All consent |
| microsoft-teams | List and read Teams chats, send chat messages, list teams and channels, and read presence; reuses the cohort's host-orchestrated Microsoft 365 OAuth surface |
| mixmax | Manage sequences, send tracked emails, use templates, and monitor engagement via Mixmax |
| nano-banana | Generate and edit images using Google Gemini's AI capabilities |
| napkin | Generate professional visuals — diagrams, infographics, and illustrations — from text via Napkin AI |
| office | Read and edit Word documents, Excel workbooks, and PowerPoint presentations from desktop Microsoft 365 via an Office Add-in sidecar |
| openai-image | Generate and edit images via OpenAI's gpt-image-2 — sharp text rendering, multilingual support, and four quality levels |
| outreach | Manage prospects, sequences, accounts, tasks, and mailings via the Outreach sales engagement API |
| pandadoc | Create, send, and manage documents, templates, and e-signatures via PandaDoc |
| quickbooks | Manage invoices, bills, customers, vendors, employees, and accounts in QuickBooks Online |
| replit-ssh | Read, write, list, and check files on Replit projects over SSH/SFTP, with one-shot SSH key + config setup on the operator's machine |
| retell-ai | Place voice-agent phone calls, manage agents and LLM prompts, and discover voices via the Retell AI API |
| runway | Generate AI video, images, audio, speech, and sound effects via Runway ML |
| salesforce | Manage accounts, contacts, opportunities, leads, tasks, users, and custom objects via the Salesforce API |
| servicenow | Manage incidents, change requests, users, and knowledge base articles in ServiceNow |
| slack | Multi-workspace Slack — channels, messages, threads, reactions, users, files, bookmarks, and scheduled messages via the Slack Web API, with host-orchestrated OAuth |
| talentlms | Manage users, courses, groups, branches, enrolments, and assessments in TalentLMS |
| vanta | Read and manage compliance posture in Vanta — vulnerabilities, tests, controls, evidence, resources, people, vendors, documents, and compliance summary |
| workday | Query workers, profiles, and organizations in Workday HCM |
| zendesk | Manage tickets, macros, users, and views in Zendesk Support |
Each server builds independently:
cd connectors/<name>
npm install
npm run build
Or run directly via npx (once published):
npx -y @mindstone/mcp-server-zendesk
Moving from
@mindstone-engineering/? Every server has been republished under the shorter@mindstone/npm scope. The legacy@mindstone-engineering/mcp-server-*packages still install but are marked deprecated. See MIGRATION.md for the consumer one-liner and the deprecation timeline.
See each server's README for configuration and host setup instructions. Some connectors require additional environment variables to opt into specific behaviour (e.g. QB_ALLOW_PROD_WRITES for QuickBooks production writes, MCP_WORKSPACE_PATH for sandboxed file reads, BROWSER_AUTOMATION_ALLOW_EVAL for browser-automation script eval) — see the per-connector READMEs for the full list.
This monorepo follows a defence-in-depth posture for tool-call hosts. Highlights include:
permissions: block. Publish is split into a build job (does the install/test/pack with no publish credentials) and a publish job (downloads the packed tarball, runs only npm publish --ignore-scripts --provenance under OIDC trusted publishing, gated by the npm-publish environment). The publish job invokes NO third-party JS — tsc, vitest, lifecycle scripts, etc. all run upstream, away from id-token: write. See docs/security/AUDIT_FOX-3319_tanstack_supply_chain.md for the supply-chain threat model and docs/security/BRANCH_PROTECTION.md for required GitHub settings..npmrc sets min-release-age=7 (days), so CI refuses to install dependency versions published in the last week. This blocks the "same-day malicious re-publish" path that ships post-npm audit-clean PRs into a release tag..github/workflows/release.yml) under the @mindstone/ npm scope via Trusted Publishing OIDC — no long-lived npm token exists anywhere — with --provenance Sigstore attestations consumers can verify via npm audit signatures. Every publishable release commit must carry a Release-Gate trailer pointing at its pre-release security review, and every publish posts an alert; the full gate chain is in docs/PUBLISH_APPROVAL_PROCESS.md. (Only a brand-new connector's first publish is manual and WebAuthn-gated; those tarballs carry no provenance attestation but remain shasum-verifiable — check out the release commit and run npm pack; see MIGRATION.md.).github/workflows/scorecard.yml. The report is generated by a third party from the source tree, so every claim above (action pinning, branch protection, token usage, dependency hygiene) is independently checked rather than just asserted here. The current score is shown by the badge at the top of this README.These connectors are published as plain npm packages. The strongest single thing you can do to protect yourself from a future supply-chain compromise of any npm package (these or otherwise) is to use a client that does not run lifecycle scripts by default:
pnpm install / pnpm dlx) — does not execute postinstall/prepare hooks unless explicitly allowlisted via onlyBuiltDependencies. pnpm v11+ also defaults to a 24-hour minimumReleaseAge cool-down.bunx) — same default, no lifecycle scripts unless allowlisted.min-release-age=7 and ignore-scripts=true in your global ~/.npmrc. Requires npm v11.10+ for min-release-age.None of our published packages need postinstall to function, so disabling lifecycle scripts in your installer of choice is safe.
<untrusted-content source="..."> envelopes with close-tag breakout escaping, so an LLM host can recognise and refuse instruction-injection attempts.MCP_WORKSPACE_PATH (or os.tmpdir()) with canonical-prefix containment that handles symlinked roots like /tmp → /private/tmp.QB_ALLOW_PROD_WRITES=1 opt-in env var; outreach prospect-enrolment and mixmax sequence-recipient tools carry destructiveHint: true so hosts surface confirmation prompts.MCP_OAUTH_BIND_HOST override.For per-connector security notes, see each connector's README.
To report a vulnerability, please see SECURITY.md.
This repo is one of several open-source projects from Mindstone:
Each connector is licensed under FSL-1.1-MIT — see the LICENSE file in each connector directory for details.
MS_CLIENT_ID*Microsoft Entra (Azure AD) application client ID
MS_CONFIG_DIR*Path to the per-user Microsoft config directory (credentials/, accounts.json)
MS_ACCOUNT_EMAILAccount email when running in multi-account per-instance mode (falls back to the first account in accounts.json)
MS_MCP_PACKAGE_IDdefault: Microsoft365TeamsLogical package ID surfaced in error responses
MICROSOFT_REQUEST_TIMEOUT_MSdefault: 60000Override the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)
com.mintmcp/outlook-email
helbertparanhos/resend-email-mcp
marlinjai/email-mcp
io.github.mindstone/mcp-server-email-imap
io.github.osamahassouna/email-playbook-mcp
gongrzhe/gmail-mcp-server