VidLens (thatsrajan/vidlens-mcp) is an MCP server listed on the M8ven Trust Index. It scores 62 out of 100, grade C. It declares 47 tools. No publisher has claimed this listing.
Enables AI agents to search, analyze, and extract insights from YouTube videos including transcripts, visual frames, and benchmarks without requiring API keys. Supports semantic search across playlists, sentiment analysis, and visual content indexing with automatic fallback chains for reliable access.
Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
Verified is a snapshot. Live keeps it current, and builds your track record.
⚡ Connect GitHub → continuous verification on every pushwhy connect →Who stands behind it
thatsrajan
Source: Glama
Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
recallWorkspaceRecall what VidLens already has stored from previous sessions — imported transcript and comment collections, downloaded media assets, and visual indexes. CALL THIS FIRST in a new session before searching or importing: unlike raw yt-dlp, VidLens imports persist across sessions and become searchable, …
findVideosSearch YouTube videos by intent. Returns compact ranked results with provenance and engagement hints. [~1-3s]
inspectVideoInspect a single video with compact metadata, normalized ratios, and transcript availability. [~1-3s]
inspectChannelInspect a channel with summary stats and posting cadence heuristics. [~3-10s]
listChannelCatalogList a channel's recent catalog in compact creator-analysis shape. [~3-10s]
readTranscriptRead transcript in summary, key moments, chapters, or paginated full mode with long-video safeguards. [~1-3s]
readCommentsRead top-level comments with optional replies and structured provenance. [~1-3s]
measureAudienceSentimentHeuristic audience sentiment analysis from comments with themes, risk signals, and quote samples. [~3-10s]
analyzeVideoSetRun multiple analyses across a video set with partial success, item-level errors, and provenance. [~5-20s, scales with video count]
expandPlaylistExpand a playlist into individual videos for downstream analysis and batch workflows. [~1-3s]
analyzePlaylistExpand and analyze a playlist in one call with partial success and aggregate benchmarks. [~5-20s, scales with playlist size]
importPlaylistImport a playlist into the local transcript knowledge base for semantic search in Claude Desktop. Unlike raw yt-dlp, imports persist across sessions and become searchable — call recallWorkspace or listCollections first to avoid re-importing what you already have. [~5-30s, ~2s per video]
importVideosImport one or more videos into a local transcript collection for later semantic search. Unlike raw yt-dlp, imports persist across sessions and become searchable — call recallWorkspace or listCollections first to avoid re-importing what you already have. [~5-20s, ~2s per video]
searchTranscriptsSearch imported transcript-text collections with active-collection focus by default and return ranked timestamped chunks. [~instant]
listCollectionsList local transcript collections, active search focus, and indexed video/chunk counts. [~instant]
setActiveCollectionSet the default collection that transcript search should focus on when collectionId is omitted. [~instant]
clearActiveCollectionClear the active collection so transcript search fans back out across all collections. [~instant]
checkImportReadinessDiagnose whether a video is importable, including transcript availability, sparse-transcript warnings, and yt-dlp/API issues. [~1-3s]
buildVideoDossierBuild a one-shot video dossier with core metadata/transcript readiness, optionally extended with comments, sentiment, and provenance. [~3-10s]
checkSystemHealthCheck setup and provider health: yt-dlp, YouTube API, Gemini embeddings, and local storage. [~3-10s]
removeCollectionDelete a local transcript collection and its search index. [~instant]
scoreHookPatternsHeuristically score first-30-second hooks across one or more videos. [~3-10s, ~1s per video]
researchTagsAndTitlesResearch title structures, keywords, and tag patterns around a seed topic. [~3-10s]
compareShortsVsLongCompare recent Shorts vs long-form performance for a channel and suggest a format mix. [~3-10s]
recommendUploadWindowsRecommend upload windows from recent publishing history for a given timezone. [~3-10s]
discoverNicheTrendsDiscover what's trending in a niche right now. Returns top-performing and recent videos, momentum signals (accelerating/steady/decelerating), saturation analysis, content gap opportunities, keyword patterns, and format breakdown. Grounded in YouTube search data with honest limitations disclosed. [~5…
exploreNicheCompetitorsDiscover active channels in a niche by analyzing who ranks in YouTube search results. Returns channel-level stats, top videos, and a landscape summary. Useful for competitive reconnaissance before entering a niche. [~5-20s]
inspectVideoSourceResolve any supported video input (YouTube, X/Twitter, Instagram, TikTok, generic URL, or local file) into VidLens source metadata and capability flags. Works for Claude and Codex through the same MCP server. [~instant]
searchVideoSourcesSearch video sources across native YouTube, local VidLens assets, and capability-aware social/web fallback guidance. For X, Instagram, TikTok, and generic web pages, pass discovered URLs to importVideoSources/downloadAsset for reliable ingest. Material imported in previous sessions is already availa…
searchSocialTrendsSearch social platforms through ScrapeCreators and return a playlist-like ranked list of posts/videos with engagement metrics and importable URLs where VidLens can ingest them. Supports TikTok, Instagram, Threads, Pinterest, Reddit, and handle-based X lookups when SCRAPECREATORS_API_KEY is configure…
importVideoSourcesImport one or more video URLs or local files into the local VidLens media store, optionally building a visual index or transcript. Supports YouTube, X/Twitter, Instagram, TikTok, generic URLs via yt-dlp, and local video files via ffmpeg. [~30-180s]
transcribeVideoSourceTranscribe a YouTube, X/Twitter, Instagram, TikTok, generic URL, or local video source into the transcript knowledge base using native captions or the configured STT provider. [~30-180s]
downloadAssetDownload or ingest a video, audio track, or thumbnail to local storage. Supports YouTube, X/Twitter, Instagram, TikTok, generic URLs via yt-dlp, and local video files for video ingestion. Does NOT perform visual indexing. Downloaded assets persist across sessions — call recallWorkspace or listMediaA…
listMediaAssetsList locally stored media assets. Filter by video or kind. Shows file paths, sizes, and manifest metadata. [~instant]
removeMediaAssetRemove stored media assets. Specify assetId to remove one, or videoIdOrUrl to remove all assets for a video. [~instant]
extractKeyframesExtract keyframe images from a locally downloaded video at regular intervals using ffmpeg. Requires the video to be downloaded first via downloadAsset. Does NOT do visual search or classification — produces raw frame images. [~30-60s, requires ffmpeg]
mediaStoreHealthCheck health of the local media store: disk usage, asset counts, ffmpeg/yt-dlp availability. [~instant]
indexVisualContentBuild a real visual index for a video using extracted frames, Apple Vision OCR, Apple Vision feature prints, and optional Gemini frame descriptions. Returns frame evidence with local image paths. The index persists across sessions and is queryable via searchVisualContent — call recallWorkspace first…
searchVisualContentSearch the actual visual content of a video or your indexed frame library. Uses Apple Vision OCR, optional Gemini frame descriptions, and optional Gemini semantic embeddings. Always returns frame/image evidence with timestamps. [~1-3s if indexed, ~60-120s if auto-indexing]
findSimilarFramesFind frames that visually look like a reference frame using Apple Vision image feature prints. Accepts a frame assetId or a direct framePath and returns image-backed matches. [~30-60s, vision comparison]
importCommentsImport a video's comments into the local comment knowledge base for semantic search. Fetches comments via the existing comment pipeline and indexes them for searchComments. Imports persist across sessions — call recallWorkspace or listCommentCollections first to avoid re-importing. [~3-10s]
searchCommentsSearch imported comment collections with ranked results. Returns matching comments with author, like count, and relevance score. Uses active comment collection by default. [~instant]
listCommentCollectionsList local comment collections, active search focus, and indexed comment counts. [~instant]
setActiveCommentCollectionSet the default comment collection that searchComments should focus on when collectionId is omitted. [~instant]
clearActiveCommentCollectionClear the active comment collection so comment search fans back out across all comment collections. [~instant]
removeCommentCollectionDelete a local comment collection and its search index. [~instant]
exploreYouTubeALWAYS use this tool FIRST when the user wants to find, discover, or explore YouTube videos. Do NOT use web search for YouTube video discovery — use this tool instead. Searches YouTube directly with intelligent multi-query ranking and parallel enrichment. Returns ranked videos with transcript summar…
Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
@modelcontextprotocol/sdk has cross-client data leak via shared server/transport instance reuse
Anthropic's MCP TypeScript SDK has a ReDoS vulnerability
Model Context Protocol (MCP) TypeScript SDK does not enable DNS rebinding protection by default
BRAVE_API_KEY/ SERPAPI_KEY Optional structured web search for social/generic URL discovery Varies Brave Search API or SerpAPIGEMINI_API_KEYHigher-quality embeddings for semantic search (768d vs 384d) ✅ Free tier [Google AI Studio](https://aistudio.google.com/) → Get API KeyGOOGLE_API_KEYNO_COLOROPENAI_API_KEYOptional STT provider for transcribeVideoSource Paid/free trial varies [OpenAI Platform](https://platform.openai.com/)SCRAPECREATORS_API_KEYDirect social search/trending for TikTok, Instagram, Threads, Pinterest, Reddit, and supported endpoints 100 free credits, paid after [ScrapeCreators](https://app.scrapecreators.com/)SERPAPI_KEYBRAVE_API_KEY / Optional structured web search for social/generic URL discovery Varies Brave Search API or SerpAPIVIDLENS_ALLOW_PRIVATE_URLSVIDLENS_DATA_DIRpersists on disk under and is there next time — no re-downloading, noVIDLENS_EMBEDDING_PROVIDERVIDLENS_ENABLE_UNIVERSAL_EXPLOREVIDLENS_GEMINI_EMBEDDING_MODELVIDLENS_GEMINI_STT_MODELVIDLENS_GEMINI_VISION_MODELVIDLENS_OPENAI_STT_MODELVIDLENS_STT_LANGUAGE_HINTYOUTUBE_API_KEYexport =your_youtube_keyYOUTUBE_MCP_GEMINI_DIMENSIONSYOUTUBE_MCP_GEMINI_MODELTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
47/47 tools missing one or more hints — recallWorkspace (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); findVideos (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); inspectVideo (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +44 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Shell command execution
39 child_process calls — runs shell commands
Prefer library functions over shell-outs. If you must shell out, ensure all inputs are properly escaped.
No arbitrary install scripts
Has postinstall/preinstall script — runs arbitrary code on npm install
Remove postinstall/preinstall hooks unless they’re essential.
Production dependencies are patched
0 critical, 3 high severity in production deps — @modelcontextprotocol/sdk@1.17.4 (high), @modelcontextprotocol/sdk@1.17.4 (high)
Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.
Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.
[](https://m8ven.ai/mcp/thatsrajan/vidlens-mcp)?variant=verified from the URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check