- Home
- MCP servers
- Transcripts
Transcripts
- typescript
5
GitHub Stars
typescript
Language
4 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
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.
How to use
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.
How to install
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"}
Configuration and deployment notes
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.
Troubleshooting
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.
API and tool overview
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.
Project notes
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.
Environment and runtime details
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.
Notes on sharing and downstream actions
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.
Available tools
list_recent_meetings
Lists recent Microsoft Teams online meetings for the signed-in user, with optional date filtering and limits.
get_meeting_transcript
Retrieves and cleans the transcript for a specific Teams meeting, returning a ready-for-use text transcript.
save_transcript
Fetches a transcript and saves it to a SharePoint document library as a Markdown file suitable for RAG indexing.