home / mcp / transcripts mcp server
Provides access to Teams meeting transcripts via Graph using delegated OBO flow, with tools to list meetings, fetch transcripts, and save to SharePoint.
Configuration
View docs{
"mcpServers": {
"itspecialist111-microsoftgraph_transcript_mcp": {
"url": "https://<your-app-fqdn>/mcp",
"headers": {
"PORT": "8080",
"AZURE_CLIENT_ID": "<client-id>",
"AZURE_TENANT_ID": "<tenant-id>",
"SHAREPOINT_FOLDER": "Meeting Transcripts",
"AZURE_CLIENT_SECRET": "<secret>",
"SHAREPOINT_SITE_URL": "contoso.sharepoint.com/sites/Meetings"
}
}
}
}You deploy and run a dedicated MCP server that retrieves Microsoft Teams meeting transcripts via Microsoft Graph using delegated OAuth 2.0 On-Behalf-Of authentication. It runs in a stateless container, connects to Copilot Studio or any MCP client, and returns clean, speaker-attributed transcripts ready for analysis, summarisation, or downstream automation.
You connect this server to an MCP client (such as Copilot Studio) to discover meetings, fetch transcripts, and save transcripts to SharePoint. The server performs all calls to Graph in the context of the signed-in user, never using application-level permissions. Typical workflows include listing recent meetings, retrieving a cleaned transcript for a specific meeting, and saving transcripts for RAG indexing. When you request a transcript, you receive text where each line is attributed to a speaker and WebVTT metadata is removed.
Practical usage patterns include: discover meetings by date, filter by subject, resolve join URLs to online meeting IDs, fetch available transcripts, clean and format transcripts, and optionally save transcripts to SharePoint. You can chain tools to build higher-level automations, such as extracting action items, creating calendar tasks, or indexing transcripts for AI-assisted search.
Prerequisites you need before installation: an Azure subscription with Container Apps support, an Azure Container Registry, a Microsoft Entra ID tenant to register an app, Node.js version 20 or newer for local development, Docker if you plan to build images locally, and a Microsoft 365 license with Teams meetings and transcription enabled.
Follow these steps to install and run locally:
# 1. Clone the project
git clone https://github.com/<your-org>/TranscriptsMCP.git
cd TranscriptsMCP
npm install
# 2. Configure environment
cp .env.example .env
# Edit .env with your Azure App Registration credentials:
# AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID
# 3. Build and run
npm run build
npm start
# The server will start on http://localhost:8080
# 4. Health check
curl http://localhost:8080/health
# β {"status":"ok","service":"transcripts-mcp-server"}This server uses a delegated OAuth 2.0 On-Behalf-Of flow to obtain Graph tokens, ensuring all Graph calls run in the signed-in userβs context. It exposes an MCP endpoint at /mcp and supports the MCP protocol methods initialize, tools/list, and tools/call. The transport is stateless, with a fresh server instance created per request to enable scale-to-zero in container environments.
Environment variables you typically provide when running or deploying include: AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID, PORT, SHAREPOINT_SITE_URL, and SHAREPOINT_FOLDER. These values configure the Azure AD app, the server port, and the default SharePoint destination for saved transcripts.
If you encounter authentication errors, verify your OAuth setup and that the admin consent grant includes all required scopes. Common issues include missing or incorrect redirect URIs, incorrect client secrets, and insufficient Graph permissions. For cross-tenant meetings, expect 403 responses and review logs to understand which meetings could not be resolved.
The server provides three MCP tools: list_recent_meetings, get_meeting_transcript, and save_transcript. Each tool returns data suitable for downstream processing, such as clean transcripts ready for summarisation or indexing.
The server is designed to be Copilot Studio friendly, with an OAuth 2.0 wizard integration and detailed logging for Graph API calls. It operates as a stateless HTTP server using the MCP protocol and a per-request Server instance for scalable deployments.
Key dependencies include the MCP SDK, MSAL for OBO token exchange, Express for HTTP, and a small WebVTT parser that cleans transcripts and merges consecutive speeches by the same speaker.
Saved transcripts can be uploaded to SharePoint for RAG indexing, enabling Copilot Studio or Azure AI Search to query the transcripts. Each transcript file is named by subject and date, and the content is formatted for easy ingestion by downstream AI tools.
Lists recent Microsoft Teams online meetings for the signed-in user, with optional date filtering and limits.
Retrieves and cleans the transcript for a specific Teams meeting, returning a ready-for-use text transcript.
Fetches a transcript and saves it to a SharePoint document library as a Markdown file suitable for RAG indexing.