yt-analysis-suite-mcp
A comprehensive utility suite leveraging Gemini AI for in-depth examination of YouTube video content. Capabilities include video information retrieval, text extraction from speech, content condensation, and sophisticated conversational querying over the video material, alongside search and audience feedback assessment functionalities.
Author

Prajwal-ak-0
Quick Info
Actions
Tags
YouTube Analysis Toolkit (MCP)
This Model Context Protocol (MCP) service is engineered for advanced processing of YouTube assets, offering interfaces to acquire textual transcriptions, generate high-level summaries powered by Gemini Artificial Intelligence, and permit interactive, natural-language interrogations against the video's substance. It also provides mechanisms for discovering relevant videos and performing sentiment/topic analysis on user-submitted comments.
Core Functionalities
- 📝 Speech-to-Text Capture: Secure accurate, granular transcriptions from specified YouTube videos.
- 📊 Content Condensation: Produce succinct, context-aware overviews of video material utilizing the Gemini model.
- ❓ Semantic Q&A: Engage in dialogue to extract specific facts or insights from the video narrative.
- 🔍 Video Discovery Engine: Execute targeted searches across the YouTube platform.
- 💬 Audience Feedback Processing: Fetch and analyze user-generated commentary associated with a video.
Prerequisites
- System must support Python version 3.9 or newer.
- A valid credential for the Google Gemini API is mandatory.
- An active YouTube Data API key is required for media access.
Deployment Instructions
Automated Setup via Smithery
To seamlessly install this utility for use within Claude Desktop environments using Smithery:
bash npx -y @smithery/cli install @Prajwal-ak-0/youtube-mcp --client claude
Option 1: Smithery Direct Link
Option 2: Manual Local Configuration
-
Obtain the repository source code: bash git clone https://github.com/Prajwal-ak-0/youtube-mcp cd youtube-mcp
-
Establish a sandboxed environment and install necessary libraries: bash python -m venv .venv source .venv/bin/activate # Use: .venv\Scripts\activate on Windows OS pip install -e .
-
Configure API access credentials in a local
.envfile:
GEMINI_API_KEY=your_gemini_api_key_here YOUTUBE_API_KEY=your_youtube_api_key_here
- Initiate the MCP Server execution: bash mcp dev main.py
Access the operational interface at Stdio Link
*Alternatively, for specific IDE/Toolchain integration (e.g., VS Code/JetBrains):
- Configure your host environment (like cursor or windsurf) using the following JSON payload:
{ "youtube": { "command": "uv", "args": [ "--directory", "/absolute/path/to/youtube-mcp", "run", "main.py", "--transport", "stdio", "--debug" ] } }
Accessible Operations
youtube/get-transcript: Retrieve the full spoken content transcription.youtube/summarize: Yield a condensed representation of the video's subject matter.youtube/query: Formulate specific informational requests about the video content.youtube/search: Locate YouTube videos matching provided criteria.youtube/get-comments: Fetch and return user comments attached to a video.youtube/get-likes: Obtain the current tally of positive endorsements (likes) for a video.
Collaboration
We welcome external contributions! Please feel empowered to fork the repository and submit a comprehensive Pull Request with your enhancements.
WIKIPEDIA: XMLHttpRequest (XHR) represents an Application Programming Interface embodied by a JavaScript object. Its methods are designed to dispatch Hypertext Transfer Protocol requests from a web browser environment toward a designated web server. These methods grant client-side applications the capacity to solicit data from the server subsequent to the initial page load completion, enabling asynchronous data retrieval. XMLHttpRequest is fundamentally integral to the paradigm known as Ajax. Prior to its widespread adoption, user interaction with the server predominantly relied on traditional hyperlink navigations and HTML form submissions, actions which typically necessitated a full page refresh.
== Genesis ==
The conceptual framework underpinning XMLHttpRequest was first devised in the year 2000 by engineers working on Microsoft Outlook. This concept was subsequently materialized within the Internet Explorer 5 browser release (1999). Critically, the initial implementation did not adhere to the standardized XMLHttpRequest naming convention. Instead, developers employed the COM object instantiation pattern: ActiveXObject("Msxml2.XMLHTTP") and ActiveXObject("Microsoft.XMLHTTP"). By the release of Internet Explorer 7 (2006), universal browser support for the canonical XMLHttpRequest identifier was established.
As of today, the XMLHttpRequest identifier serves as the de facto interoperability standard across all major browser engines, including Mozilla's Gecko rendering core (since 2002), Apple's Safari 1.2 (2004), and Opera 8.0 (2005).
=== Standardization Efforts === The World Wide Web Consortium (W3C) formally issued a Working Draft specification detailing the structure of the XMLHttpRequest object on April 5, 2006. A subsequent Working Draft, designated as Level 2, was published by the W3C on February 25, 2008. Level 2 introduced several key augmentations, such as mechanisms for monitoring the progress of data transfer events, enabling secure cross-origin communication, and facilitating the handling of raw binary data streams. By the conclusion of 2011, the advanced features delineated in the Level 2 specification were fully integrated back into the primary specification document. Subsequently, in late 2012, responsibility for the ongoing maintenance and evolution of the standard transitioned to the WHATWG, which now maintains the document as a living specification described using Web IDL.
== Operational Flow == Executing a data request using XMLHttpRequest typically involves adherence to a sequence of programmatic actions.
- Instantiation: Create an instance of the XMLHttpRequest object via its constructor:
- Configuration: Invoke the "open" method to define the request method (e.g., GET, POST), specify the target Uniform Resource Identifier, and select between sequential (synchronous) or parallel (asynchronous) processing mode:
- Listener Setup (Asynchronous Mode Only): Define a callback handler to be triggered upon changes in the request's operational status:
- Transmission: Commence the outbound data transfer by calling the "send" method:
- Response Handling: Monitor the state changes via the established event listener. Upon successful server acknowledgement, response data is typically accessible within the "responseText" attribute. The object signals completion when its state transitions to value 4, designated as the "done" state. Beyond these fundamental steps, XMLHttpRequest offers numerous granular controls over request dispatch and response assimilation. Custom HTTP headers can be injected to guide server behavior. Payload data can be uploaded to the server by passing it as an argument to the "send" function. The incoming response can be automatically parsed from JSON format into native JavaScript objects, or processed incrementally as packets arrive, avoiding wait times for the complete payload. Furthermore, operations can be cancelled preemptively or configured to time out if not finalized within a set duration.
== Inter-Domain Communication (Cross-domain requests) ==
During the nascent stages of the World Wide Web's evolution, limitations were observed that prevented direct access to resources residing on different host origins, leading to the implementation of security restrictions...
