MCP Video Recognition Server
The MCP Video Recognition Server provides tools for analyzing and describing media using Google's Gemini AI:
Image Recognition: Analyze and describe images with custom prompts
Audio Recognition: Transcribe and analyze audio files
Video Recognition: Describe and analyze video content
You can specify the media file path, provide custom prompts for analysis, and select which Google Gemini model to use.
Provides tools for image, audio, and video recognition using Google's Gemini AI models, allowing analysis and description of images, transcription of audio, and description of video content.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Video Recognition Serverdescribe what's happening in this video: /videos/hiking.mp4"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Video Recognition Server
An MCP server that describes images, transcribes audio, and summarizes video from local files. It talks to Google Gemini by default, or to any OpenAI-compatible endpoint such as OpenRouter.
Features
Pick your provider: Google Gemini (default) or an OpenAI-compatible endpoint
Three MCP tools for local images, audio, and video
Optional Gemini model fallback, plus a final OpenAI-compatible backup
Opt-in multi-perspective parallel inference via
PARALLEL_PROMPTS(see the Configuration Reference)
Model support varies by provider. Picking the OpenAI-compatible provider does not mean every endpoint or model handles every media type. And the server never swaps in a different model or provider on its own.
Related MCP server: Puter MCP Server
Prerequisites
Node.js 18.0.0 or later
An API key for your provider:
Gemini:
GOOGLE_API_KEYOpenAI-compatible:
OPENAI_COMPATIBLE_API_KEY
Install
git clone https://github.com/yourusername/mcp-video-recognition.git
cd mcp-video-recognition
npm install
npm run buildQuickstart
Add the server to your MCP client config and point it at the built dist/index.js:
{
"mcpServers": {
"video-recognition": {
"command": "node",
"args": ["/path/to/mcp-video-recognition/dist/index.js"],
"env": {
"GOOGLE_API_KEY": "your_google_api_key"
}
}
}
}On Windows, use forward slashes or doubled backslashes (\\) in the path. Save the file and reconnect your MCP client. Environment variables must be present in the MCP client's env configuration; the server process does not automatically inherit values merely because a .env file exists beside it.
For OpenRouter or another OpenAI-compatible endpoint, set RECOGNITION_PROVIDER=openai-compatible and fill in its variables. Configuration has a ready-made example.
Standalone Client
The repository includes a client that builds the project, spawns the server over stdio, performs MCP initialization, and lists the tools. It loads .env from the repository root when that file exists; already-set process environment variables take precedence.
# Connect and list tools
npm run client
# Connect and call a tool
npm run client -- --tool image_recognition --args '{"filepath":"C:/media/example.png"}'Use --help for server-path, working-directory, env-file, and timeout options:
npm run client -- --helpA tool error exits with status 2 and prints the complete MCP error result. Connection or configuration failures exit with status 1 and include the spawned server's stderr diagnostics.
With FLUJO:
Click Add Server.
Paste the GitHub URL.
Click Parse, Clone, Install, Build and Save.
Configuration
The server reads environment variables. These are the ones you'll touch most:
Variable | Default | Purpose |
|
|
|
| none | Gemini API key |
|
| Gemini model to use |
| none | OpenAI-compatible API key |
| none | Endpoint base URL |
| none | Model to use |
| none | Media directories for the OpenAI-compatible provider and Gemini backup |
|
|
|
|
| Bind address for Streamable HTTP |
|
| Bind port for Streamable HTTP |
|
| Diagnostic threshold; all logs go to stderr |
A bad value stops startup. Nothing gets fixed silently.
The Configuration Reference has the full variable list, validation rules, an OpenRouter example, and the supported media types. For Gemini model fallback and the final backup, read the Provider Recovery Reference.
Tools
You get three MCP tools. Each takes a local filepath, an optional prompt (default Describe this content), and an optional modelname override.
image_recognition- describe an imageaudio_recognition- transcribe or describe audiovideo_recognition- describe a video
Example:
{
"name": "video_recognition",
"arguments": {
"filepath": "/path/to/video.mp4",
"prompt": "Describe what happens in this video"
}
}Security
HTTPS is required by default. Plain HTTP only works for a local endpoint you explicitly enable.
The OpenAI-compatible provider and the Gemini backup read media only from directories listed in
ALLOWED_MEDIA_ROOTS. Containment is recursive, so specifying a parent folder (e.g.C:\Projectsor${workspaceFolder}) covers all repositories, subfolders, and media files inside it.Keys stay in the process environment. Don't commit real keys.
The Security Reference covers endpoint rules, resource limits, and incident response.
MCP Inspector and Streamable HTTP
For stdio Inspector use, build first and make sure the API key is in Inspector's server environment. In PowerShell:
$env:GOOGLE_API_KEY = "your_google_api_key"
npm run debugFor HTTP, start the server separately:
$env:GOOGLE_API_KEY = "your_google_api_key"
$env:TRANSPORT_TYPE = "streamable-http"
npm startThen select Streamable HTTP in Inspector and connect to http://127.0.0.1:3000/mcp. Do not select legacy SSE: the backwards-compatible TRANSPORT_TYPE=sse spelling still starts a Streamable HTTP endpoint.
Listing tools only proves the MCP handshake succeeded. It does not contact the recognition provider or read a media file. A later call can still fail because the key, model, network, or filepath is invalid. The path must identify a file visible to the spawned server process; paths from a different container or host will not work.
Development
# Build, connect through the standalone client, and list tools
GOOGLE_API_KEY=your_api_key npm run client
# Build and run the provider foundation tests
npm run verify:provider-foundationProject Structure
src/index.ts: entry point and provider constructionsrc/server.ts: MCP server and transportsrc/tools/: the three recognition toolssrc/services/: Gemini and OpenAI-compatible providerssrc/types/: shared typessrc/utils/: helpers
License
MIT
Available Tools
3 toolsaudio_recognitionC
Analyze and transcribe audio using Google Gemini AI
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to the media file to analyze | |
| modelname | No | Gemini model to use for recognition | gemini-2.0-flash |
| prompt | No | Custom prompt for the recognition | Describe this content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'analyze and transcribe' but fails to describe key traits such as processing time, error handling, output format, or any limitations (e.g., file size, supported audio formats). This leaves significant gaps for a tool that performs AI-based analysis.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of AI-based audio analysis, no annotations, and no output schema, the description is incomplete. It lacks details on behavioral aspects, output structure, and usage context, which are critical for an agent to effectively invoke this tool without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with clear descriptions for all parameters (filepath, modelname, prompt). The description adds no additional semantic context beyond what the schema provides, such as examples or constraints, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'analyze and transcribe' and the resource 'audio' with the technology 'Google Gemini AI', making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'image_recognition' or 'video_recognition' beyond the audio focus, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like sibling tools or other audio processing methods. It lacks context about use cases, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_recognitionC
Analyze and describe images using Google Gemini AI
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to the media file to analyze | |
| modelname | No | Gemini model to use for recognition | gemini-2.0-flash |
| prompt | No | Custom prompt for the recognition | Describe this content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'analyze and describe' implies a read-only operation, it doesn't specify whether this requires API keys, has rate limits, handles errors, or what the output format looks like. For a tool with no annotations and no output schema, this leaves significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise - a single sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded with the core functionality and uses efficient language. Every word earns its place in this minimal description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no annotations, no output schema, and this is an AI analysis tool with potential behavioral complexities, the description is insufficiently complete. It doesn't explain what kind of analysis or description will be returned, doesn't mention authentication requirements for Google Gemini AI, and provides no context about limitations or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (filepath, modelname, prompt) with clear descriptions. The tool description adds no additional parameter semantics beyond what's in the schema. According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze and describe images using Google Gemini AI'. It specifies the verb ('analyze and describe'), resource ('images'), and technology ('Google Gemini AI'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like audio_recognition or video_recognition, which would require mentioning it's specifically for images.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools (audio_recognition, video_recognition) or any context for choosing this specific image analysis tool over others. There's no information about prerequisites, limitations, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_recognitionC
Analyze and describe videos using Google Gemini AI
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes | Path to the media file to analyze | |
| modelname | No | Gemini model to use for recognition | gemini-2.0-flash |
| prompt | No | Custom prompt for the recognition | Describe this content |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool analyzes and describes videos but doesn't mention critical behavioral aspects like rate limits, authentication requirements, file size limits, supported video formats, processing time, or error handling. The description is too vague about what 'analyze and describe' entails operationally.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized and front-loaded with the essential information, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of video analysis (which typically involves format handling, processing time, and potential errors), no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, how to interpret results, or any operational constraints, leaving significant gaps for an AI agent to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, such as explaining how the prompt interacts with video analysis or model selection trade-offs. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as analyzing and describing videos using Google Gemini AI, which is specific (verb+resource) and distinguishes it from sibling tools like audio_recognition and image_recognition. However, it doesn't explicitly mention video-specific capabilities beyond the name, leaving some ambiguity about whether it handles all video formats or specific features.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (audio_recognition, image_recognition). It doesn't mention prerequisites, limitations, or alternative scenarios, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose targeting different media types: audio, images, and videos. There is no overlap in functionality, as they handle separate input formats with similar analysis capabilities but different domains.
All tool names follow a consistent pattern of 'media_type_recognition' using snake_case. This predictable naming scheme makes it easy to understand what each tool does based on its name alone.
With only 3 tools, the server feels somewhat thin for a video recognition domain, as it lacks operations like video editing, frame extraction, or metadata retrieval. However, the core recognition functions for audio, images, and videos are covered, making it borderline appropriate.
The server provides basic recognition for three media types but lacks comprehensive coverage for video processing. There are no tools for operations like video segmentation, object tracking, or format conversion, which are common in video recognition workflows, leaving notable gaps.
Maintenance
Related MCP Connectors
Analyze images and videos with Gemini to get fast, reliable visual insights. Handle content from U…
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Transform video, audio and images, and generate media from prompts. FFmpeg, captions, models.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables text-to-image generation, style transfer, background removal, and automatic image cropping using Google's Imagen AI models through the Model Context Protocol.
- AlicenseNot gradedqualityDmaintenanceProvides AI-powered media generation tools including image, speech, video, OCR, and voice conversion via the Model Context Protocol.16MIT
- AlicenseAqualityCmaintenanceProvides AI-powered image and video analysis using Google Gemini and Vertex AI models through the Model Context Protocol.56276MIT
- AlicenseNot gradedqualityCmaintenanceProvides image analysis, inspection, cropping, OCR, and comparison capabilities via the Model Context Protocol, allowing AI agents to process and manipulate images using vision models.2MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mario-andreschak/mcp_video_recognition'
If you have feedback or need assistance with the MCP directory API, please join our Discord server