NormaHub MCP Server
OfficialNormaHub MCP Server
Сервер Model Context Protocol (MCP) для API NormaHub.
Предоставляет инструменты (Tools), ресурсы (Resources) и шаблоны промптов (Prompts) для подключения моделей (DeepSeek, Claude, GPT, SeeDance Video) к Claude Desktop, Cursor, Windsurf и другим MCP-клиентам.
Поддерживает два вида транспорта:
Stdio — локальный запуск через
npxв IDE и десктопных клиентах.SSE (Server-Sent Events) — сетевой HTTP-транспорт для Docker, Kubernetes и удаленных серверов.
Архитектура сервера
┌────────────────────────────────────────────────────────┐
│ NormaHub MCP Server │
└───────────────────────────┬────────────────────────────┘
│
┌──────────────────────┼──────────────────────┐
▼ ▼ ▼
TOOLS RESOURCES PROMPTS
• normahub_prompt_model• normahub://models • review_code
• normahub_image_to_video • normahub://status • direct_video_scene
• normahub_generate_video • cost_optimize_route
• normahub_generate_image
• normahub_list_modelsRelated MCP server: ComfyUI MCP Server
Возможности
1. Tools (Инструменты)
Инструмент | Описание | Основные параметры |
| Вызов LLM (диалоги и история сообщений) |
|
| Генерация видео из статичного изображения (I2V) через SeeDance |
|
| Генерация видео из текста (T2V) через SeeDance / Grok Video |
|
| Генерация изображений |
|
| Список подключенных моделей и тарифов | — |
2. Resources (Ресурсы)
normahub://models— структурированный каталог поддерживаемых моделей, контекстных окон, capabilities и тарифов (JSON и Markdown).normahub://status— статус шлюза, latency ping и список активных маршрутов.
3. Prompts (Шаблоны)
review_code— шаблон для код-ревью (архитектура, безопасность, производительность, diff).direct_video_scene— шаблон для формирования сценария генерации видео (оптика, свет, физика камеры) под SeeDance.cost_optimize_route— подбор наиболее экономичной модели под задачу.
Быстрый старт
Claude Desktop (Stdio)
Добавьте сервер в конфигурационный файл Claude Desktop:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"normahub": {
"command": "npx",
"args": ["-y", "@normahub/mcp-server"],
"env": {
"NORMAHUB_API_KEY": "nr_hub_..."
}
}
}
}Cursor IDE
В настройках Settings > Features > MCP > Add New MCP Server:
Name:
normahubType:
commandCommand:
npx -y @normahub/mcp-serverEnvironment Variables:
NORMAHUB_API_KEY=nr_hub_...
Готовые шаблоны конфигураций
Готовые JSON-файлы конфигурации для Claude Desktop, Cursor (.cursor/mcp.json), Zed и Continue.dev доступны в директории examples/.
Сетевой запуск (SSE Transport)
Для совместного использования командой или работы в контейнерах:
Локальный запуск SSE:
git clone https://github.com/normahubcc/mcp-server-normahub.git
cd mcp-server-normahub
npm install
npm run build
export NORMAHUB_API_KEY="nr_hub_..."
npm run start:sseСервер будет доступен на порту 3001:
SSE поток:
http://localhost:3001/ssePOST сообщений:
http://localhost:3001/messagesHealth check:
http://localhost:3001/health
Запуск в Docker:
docker build -t normahub-mcp-server .
docker run -d \
-p 3001:3001 \
-e NORMAHUB_API_KEY="nr_hub_..." \
--name normahub-mcp \
normahub-mcp-serverОтладка через MCP Inspector
npm run inspectКоманда запустит локальный веб-интерфейс MCP Inspector для интерактивного тестирования вызовов инструментов и чтения ресурсов.
Лицензия
MIT License. См. LICENSE.
Available Tools
7 toolsnormahub_generate_imageC
Generate images using GPT Image or Grok Imagine Image via NormaHub API.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Image model ID (gpt-image-2.5-flare, grok-imagine-image-2.0) | gpt-image-2.5-flare |
| prompt | Yes | Visual prompt describing the image to generate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and only says the operation uses an API. It does not disclose auth needs, rate limits, cost, async behavior, or what is returned (URL, base64, file), which are important for an image-generation tool.
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?
A single front-loaded sentence with no wasted words. It communicates the core action and supported models efficiently.
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?
No output schema exists, and the description does not explain the return format or any post-call behavior. For a generation tool with no annotations, this leaves important invocation context missing.
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 both prompt and model. The description adds no additional meaning about model selection tradeoffs or prompt formatting beyond what the schema provides.
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?
States a specific verb and resource: "Generate images" and names the supported models. It is distinguishable from sibling video/audio tools, but it does not explicitly contrast with normahub_generate_video or other alternatives.
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?
No guidance on when to use this tool versus siblings, prerequisites, model selection criteria, or limitations. The usage context is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_generate_videoB
Generate AI videos using SeeDance 2.5 / 2.0 and xAI Grok Imagine Video via NormaHub API. Automatically polls until video render completes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video model to use (seedance-2.5, seedance-2.0, grok-imagine-video-1.5) | seedance-2.5 |
| prompt | Yes | Text prompt describing the desired video scene and motion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one important behavioral trait: it 'automatically polls until video render completes,' implying a long-running, blocking call. It omits cost implications, expected wait times/timeouts, failure behavior, and whether copyrighted or safety filters apply, all material for a paid video-generation call.
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?
Two tight sentences that front-load the capability before the operational detail. Nothing extraneous, though it is thin for a tool of this complexity.
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?
For a generation tool with no output schema, the description should explain what a caller gets back (video URL, asset id, job id) and what the polling window can cost in time. It covers the operation but leaves the return contract and practical limits unstated.
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 both the prompt and model parameters (including the model list) are already fully documented in the schema. The description adds no syntax, defaulting, or prompt-engineering guidance beyond that.
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 names a specific verb and resource ('Generate AI videos') and identifies the underlying backends (SeeDance 2.5/2.0, Grok Imagine Video) and the NormaHub API. It doesn't explicitly contrast with the sibling normahub_image_to_video, but the text-to-video purpose is clear.
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?
There is no guidance on when to pick this over normahub_image_to_video or normahub_prompt_model, and no stated preconditions. The only implicit cue is that this tool is for text-prompt-driven generation, which the schema already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_get_balanceA
Check your current NormaHub account balance in Russian Rubles (RUB), active tier, and remaining tokens.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Check' plus the enumeration of returned fields (balance, tier, tokens) signals a non-destructive read and substitutes for a missing output schema, but it says nothing about authentication/account scoping or freshness of the balance data.
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?
A single front-loaded sentence with no redundant or filler content; every clause names a distinct return value.
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?
For a trivial zero-param read tool with no output schema, the description adequately covers what comes back. Minor gap: no note on account scoping or error behavior when unauthenticated.
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?
Zero parameters, so the baseline is 4; there is nothing for the description to disambiguate beyond confirming no input is needed.
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?
States a specific verb ('Check') and enumerates exactly what is returned: balance in RUB, active tier, and remaining tokens. This is clearly distinct from the sibling generation/listing tools, so an agent can identify it without opening a schema.
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?
Usage is only implied — an agent infers this is the account-status call for a zero-param read, but there is no explicit statement of when to use it, when not to, or which sibling to prefer for related questions (e.g., listing models).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_image_to_videoB
Animate an input image into a video (Image-to-Video) using SeeDance 2.5 / 2.0 via NormaHub API. Accepts image URL and animation prompt. Automatically polls until video render completes.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Video model to use (seedance-2.5, seedance-2.0, grok-imagine-video-1.5) | seedance-2.5 |
| prompt | Yes | Motion direction and cinematic animation instructions for the image | |
| image_url | Yes | Direct HTTP/HTTPS URL or data URI of the input image to animate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it usefully discloses the asynchronous polling behavior ('Automatically polls until video render completes'), which is real added value. It says nothing about expected latency, failure/timeout handling, or cost/credits, which matter for a generation call.
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?
Three short sentences, front-loaded with the core action, with no padding. The middle sentence ('Accepts image URL and animation prompt') mildly restates the schema but is not wasteful.
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?
For an async generation tool with no output schema and no annotations, the description covers input intent and polling but leaves the return value (presumably a video URL), latency expectations, and failure modes unspecified.
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, giving a baseline of 3. The description adds no constraints, sizing limits, or guidance on choosing between models, and it omits the grok-imagine-video-1.5 option listed in the schema.
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?
States a specific verb+resource ('Animate an input image into a video') and names the underlying models and API, so intent is unambiguous. It never explicitly contrasts with the sibling normahub_generate_video, leaving the agent to infer that this variant is the image-conditioned one.
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 requirement for an input image implicitly routes the agent away from text-to-video siblings, but there is no explicit when-to-use/when-not guidance and no mention of alternatives such as normahub_generate_video or normahub_prompt_model.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_list_modelsA
List currently available active AI models and their pricing on NormaHub API.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Active' usefully discloses that inactive/unavailable models are filtered out, and 'list' implies a read-only operation, but there is no mention of pagination, rate limits, or response shape.
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?
One sentence, front-loaded with the verb and resource, with zero filler. Nothing could be cut without losing meaning.
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?
There is no output schema and no annotations, so the description should ideally say what a returned record contains (model identifiers, pricing units, currency). It conveys the topic but not enough for an agent to know exactly what it will receive or how to use the result downstream.
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?
Zero parameters, so there is nothing for the description to disambiguate; baseline applies. It correctly signals that no inputs (no filters, no model ID) are needed.
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?
States a specific verb ('List') and resource ('active AI models and their pricing') with the scope qualifier 'currently available active'. This clearly separates it from the generation/transcription siblings, though it doesn't name them explicitly.
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?
Usage is only implied — an agent can infer this is a discovery tool to call before choosing a model for normahub_prompt_model or the media generation tools. There is no explicit when-to-use statement or named alternative, but no confusion is likely given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_prompt_modelC
Send a prompt to LLM models via NormaHub API (Claude, GPT, DeepSeek, Qwen).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model ID. Examples: claude-sonnet-5-5, deepseek-v4.1-flash, grok-4.7, glm-5.3-flash | claude-sonnet-5-5 |
| prompt | No | The prompt or task instruction for the AI model (required if messages is not provided) | |
| system | No | Optional system prompt instruction | |
| messages | No | Full chat message history array: [{role: 'system'|'user'|'assistant', content: string}] | |
| max_tokens | No | Optional max output tokens limit | |
| temperature | No | Sampling temperature (0.0 to 1.0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and discloses nothing about auth requirements, rate limits, latency, cost implications, or whether output is streamed or returned whole. A model-generation call that may incur balance charges is exactly the case where cost/quota context matters, and none is present.
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?
One sentence, front-loaded with the action and resource, with zero filler. It is arguably too terse rather than too long, but nothing in it is wasted.
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?
For a six-parameter LLM invocation with no annotations and no output schema, the description should at least hint at what comes back and how to choose prompt vs messages. The schema covers inputs well, so it is adequate but with clear gaps.
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 all six parameters (including the prompt/messages exclusivity and the model examples) are already documented inline. The description adds no parameter-level meaning beyond the schema, which is the expected baseline here.
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?
States a specific verb and resource ('Send a prompt to LLM models via NormaHub API') and names concrete model families, which is enough to separate it from the media-generation siblings. It stops short of saying whether this is a one-shot completion or a chat orchestration endpoint, but the core purpose is unambiguous.
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?
No guidance on when to pick this over normahub_list_models for discovery, or how prompt vs messages mode should be chosen. The agent must infer all routing decisions from the schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
normahub_transcribe_audioA
Transcribe audio recordings, voice notes, and video soundtracks to text using OpenAI Whisper via NormaHub API without VPN. Accepts local file path or public HTTP URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Public HTTP/HTTPS URL of the audio file (used if file_path is omitted) | |
| model | No | Whisper model ID to use (default: whisper-1) | whisper-1 |
| prompt | No | Optional context prompt or dictionary hints to improve transcription accuracy of domain terms. | |
| language | No | Two-letter ISO language code (e.g. 'ru' for Russian, 'en' for English). Optional, auto-detected if omitted. | |
| file_path | No | Absolute or relative path to local audio file (.mp3, .wav, .m4a, .ogg, .oga, .mp4) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses that access is via NormaHub so no VPN is required and that two input sources are supported, but it says nothing about latency for long audio, cost/credit consumption, size limits, or failure modes — relevant gaps for an unannotated tool.
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?
Two tight sentences, front-loaded with what the tool does and followed by accepted input forms. No filler and nothing repeated.
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?
For a 5-parameter, no-annotation, no-output-schema tool, the description covers what it does and where input comes from. It stops short of describing the returned artifact (plain transcript text vs. segments/timestamps), which is the one thing an agent cannot infer from structured fields.
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 coverage is 100%, so every parameter is already documented (url vs file_path precedence, model default, language auto-detection, prompt hints). The description only echoes the url/file_path duality and adds no new semantic detail; baseline 3 applies.
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?
Specific verb ('Transcribe') plus resource ('audio recordings, voice notes, video soundtracks'), the engine used (OpenAI Whisper via NormaHub), and the accepted inputs. It is unmistakably distinct from the sibling generation/model-listing tools.
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 sentence 'Accepts local file path or public HTTP URL' gives input-mode guidance, and the purpose makes the use case implicit. However, there is no statement of when to prefer this over alternatives, no prerequisites, and no mention of constraints such as file size or supported duration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.2.5- First observed
normahub_generate_image - First observed
normahub_generate_video - First observed
normahub_get_balance - First observed
normahub_image_to_video - First observed
normahub_list_models - First observed
normahub_prompt_model - First observed
normahub_transcribe_audio
TDQS
Scored across 7 tools
Each tool maps to a distinct capability: text prompting, image generation, text-to-video, image-to-video, transcription, model listing, and billing. The only mild overlap is between normahub_generate_video and normahub_image_to_video, but the descriptions clearly differentiate them by input (image required vs. prompt-only).
Every tool uses the same normahub_ prefix followed by a clear verb_noun or verb_object pattern in snake_case. No mixing of conventions or vague standalone verbs.
Seven tools is a well-scoped surface for a multi-modal AI API gateway. Each tool corresponds to a real, non-redundant operation and no filler tools are present.
The surface covers the core modalities (text, image, video, image-to-video, audio transcription) plus account inspection via balance and model listing. Minor gaps exist: no text-to-speech/audio generation, no image editing/upscale, and no usage-history or job-status tool, though built-in polling mitigates the latter.
Maintenance
Related MCP Connectors
Image and video AI tools and your own pipelines, run from any AI assistant.
Generate AI images, video, voiceovers and music from Claude, ChatGPT or Cursor through 50+ models (Veo 3.1, Kling 3, Seedance, Nano Banana, GPT Image, ElevenLabs). Also image editing, upscaling, background removal, face swap, transcription, voice cloning and UGC-style video ads. Sign in with OAuth — no API key to paste. Tools are annotated (read-only vs. credit-spending); failed generations are refunded.
Generate and edit images, video, voice, lip-sync and 3D models from your AI agent.
One workspace of tools for Claude and ChatGPT: connect 600+ apps, generate media, build tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to connect to and chat with multiple LLM models (OpenAI, OpenRouter, custom endpoints) with conversation history management and model switching capabilities.311 npm2MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to generate and iteratively refine images, audio, and video by interacting with a local ComfyUI instance through natural conversation. It provides comprehensive tools for workflow management, node introspection, and publishing generated assets.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to connect to n8n workflows, Blender 3D, Notion, and filesystem tools through a single MCP hub with hot-pluggable bridges. Features a pedagogical transparency layer for educational purposes and supports multiple LLM providers including Claude, OpenAI, Gemini, and Ollama.4MIT
- FlicenseBqualityDmaintenanceConnects AI assistants to ComfyUI for image, video, and audio generation, providing full control over ComfyUI through 40+ tools including quick generation, cloud API nodes, and custom workflow building.46-