AVCLabs Media MCP
O MCP da AVCLabs integra upscaling de vídeo com IA, aprimoramento de qualidade e segmentação de imagem SAM3 em fluxos de trabalho MCP. Ele melhora vídeos de baixa resolução, limpa gravações com ruído e extrai objetos-alvo por meio de prompts de texto.
Documentação
media-mcp (Node.js)
Atualização de implantação (2026-09-06): o código-fonte SAM3 e os scripts de release agora são mantidos em
sam3-http-server, com raiz em/opt/ai/sam3. O candidato a head do schema da API é20260906_0007. O bootstrap de produção do SAM3 e o E2E de nove ferramentas continuam pendentes. Consulte o rollout de quatro projetos.
Inglês | 中文
Um serviço de aprimoramento de vídeo, aprimoramento/colorização/remoção de ruído de imagem e segmentação de imagem baseado no protocolo MCP, atuando como um Cliente-Servidor MCP para interagir com Servidores HTTP de backend.
Status do release (2026-09-06): o npm
latesté0.2.1; esse artefato publicado contém 5 ferramentas (3 de vídeo + 2 SAM3) e seus metadados de runtime informam incorretamente0.3.0. Este repositório é o candidato não publicado0.3.0, que corrige a consistência de versão e adiciona 4 ferramentas de imagem, além de uma substituição opcional deIMAGE_API_BASE_URL. Imagem e vídeo compartilham o mesmo servidor HTTP público e a URL base/enhance; o backend candidato mantém a concorrência de preparação, filas Redis, workers e concorrência de processamento separados. As rotas de imagem agora existem no código candidato, mas não estão implantadas nem verificadas por IA real/TOS, portanto as ferramentas de imagem abaixo não são uma capacidade npm de produção até que todas as 9 ferramentas passem nos testes de fumaça e0.3.0seja publicado.
Recursos
Fornece as seguintes Ferramentas MCP:
Aprimoramento de Vídeo
create_task- Criar uma tarefa de aprimoramento de vídeo (suporta upload por URL ou arquivo local)get_task_status- Consultar o status da tarefaenhance_video_sync- Aprimorar vídeo de forma síncrona (espera bloqueante, truncada em ~50s por padrão)
Aprimoramento de Imagem (candidato 0.3.0 não publicado)
enhance_image_sync- Aprimorar a qualidade da imagem e otimizar rostos (suporta upload por URL ou arquivo local)colorize_image_sync- Colorizar fotos em preto e branco (suporta upload por URL ou arquivo local)denoise_image_sync- Remover ruído de imagens (suporta upload por URL ou arquivo local)get_image_task_status- Consultar o status da tarefa de imagem (para polling após timeout síncrono)
Segmentação de Imagem (SAM3)
sam3_predict- Segmentação de imagem SAM3 (suporta caminho local, URL ou imagem Base64)get_sam3_task_status- Consultar o status da tarefa SAM3 (para polling após timeout síncrono)
Pré-requisitos
- Node.js >= 18 (verifique:
node --version) - Chave de API (necessária para autenticação)
Instalação Preguiçosa (Recomendada)
Se o seu Agente de IA tiver um caminho de configuração MCP conhecido, basta copiar a linha abaixo e enviá-la para a sua IA:
Install the npm package @avclabs.ai/media-mcp as an MCP server. My API Key is: sk-xxxxxxxx.
A IA irá automaticamente:
- Detectar seu cliente MCP
- Encontrar o caminho do arquivo de configuração
- Escrever a configuração correta
- Solicitar que você reinicie o cliente
Instalação Manual
Nenhuma instalação necessária. Use npx diretamente na configuração do seu cliente MCP.
1. Claude Code (CLI)
Execute no Claude Code:
/mcp
Verifique a saída para a seção "User MCPs" para encontrar o caminho do arquivo de configuração e, em seguida, edite esse arquivo.
Caminhos comuns (se /mcp não estiver disponível):
- Windows:
%USERPROFILE%\.claude.json - macOS:
~/.claude.json - Linux:
~/.claude.json - Legado/Alternativo:
~/.claude/mcp.json
Cole isto (substitua your-api-key):
{
"mcpServers": {
"video-enhancement": {
"command": "npx",
"args": ["-y", "@avclabs.ai/media-mcp@latest"],
"env": {
"API_KEY": "your-api-key"
}
}
}
}
Salve e execute /mcp para verificar se foi carregado.
2. Cursor
Vá para Configurações > Ferramentas e MCPs > Adicionar Novo Servidor MCP:
- Nome:
video-enhancement - Tipo:
command - Comando:
env API_KEY=your-api-key npx -y @avclabs.ai/media-mcp@latest
Ou edite ~/.cursor/mcp.json:
{
"mcpServers": {
"video-enhancement": {
"command": "npx",
"args": ["-y", "@avclabs.ai/media-mcp@latest"],
"env": {
"API_KEY": "your-api-key"
}
}
}
}
Verificar Instalação
Após reiniciar o cliente, verifique se as ferramentas estão disponíveis:
- Ou pergunte: "Quais ferramentas você tem disponíveis?"
- Com o npm
latest=0.2.1atual, você deve vercreate_task,get_task_status,enhance_video_sync,sam3_predicteget_sam3_task_status. - Após
0.3.0ser publicado, você também deve verenhance_image_sync,colorize_image_sync,denoise_image_synceget_image_task_status.
Opções de Configuração
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
API_KEY | Sim | - | Chave de autenticação da API (compartilhada pelos serviços de vídeo, imagem e SAM3) |
HTTP_API_BASE_URL | Não | https://mcp.avc.ai/enhance | Endpoint do serviço HTTP compartilhado de vídeo e imagem |
IMAGE_API_BASE_URL | Não | Igual a HTTP_API_BASE_URL | Substituição opcional do endpoint de imagem; omita para o servidor de produção compartilhado |
SAM3_API_BASE_URL | Não | https://mcp.avc.ai/sam | Endpoint do serviço SAM3 |
SAM3_POLL_INTERVAL | Não | 2000 | Intervalo de polling do SAM3 (milissegundos) |
SAM3_POLL_MAX_ATTEMPTS | Não | 25 | Número máximo de tentativas de polling do SAM3 |
IMAGE_API_BASE_URL é implementado pelo candidato não publicado 0.3.0 como uma substituição opcional. A produção usa o serviço compartilhado /enhance, portanto normalmente deve ser omitido; o candidato então resolve chamadas de imagem e vídeo para a mesma URL base.
Endpoint Personalizado (candidato 0.3.0)
{
"env": {
"HTTP_API_BASE_URL": "https://your-media-endpoint.com",
"API_KEY": "your-api-key",
"SAM3_API_BASE_URL": "https://your-sam3-endpoint.com"
}
}
Ou via argumentos de CLI:
npx -y @avclabs.ai/media-mcp@0.3.0 --base-url https://your-media-endpoint.com --api-key your-api-key --sam3-base-url https://your-sam3-endpoint.com
Execute este comando somente após 0.3.0 ser publicado. O --image-base-url opcional permanece disponível apenas para implantações que dividem intencionalmente o endpoint público de imagem; o npm 0.2.1 não o suporta.
Fluxo de Trabalho Recomendado
Este projeto fornece modos síncrono e assíncrono.
Como os Agentes MCP normalmente impõem um timeout de ~60 segundos por chamada de ferramenta, tarefas com tempos de processamento mais longos (aprimoramento de vídeo) são fortemente recomendadas para usar o modo assíncrono:
Modo Assíncrono (Recomendado)
Aprimoramento de Vídeo:
- Chame
create_taskpara criar uma tarefa → obtenha imediatamentetask_id - Aguarde alguns segundos e chame
get_task_statuspara consultar o status - Se
statusforprocessing, continue aguardando e repita o passo 2 - Se
statusforcompleted, a tarefa está concluída e o resultado contémvideo_url - Se
statusforfailed, a tarefa falhou e o resultado contémerror_message
Modo Síncrono (Cenários Simples)
Aprimoramento de Vídeo:
- Chame
enhance_video_sync→ o servidor faz polling internamente - Padrão de espera máxima de 50 segundos
- Se concluído em 50 segundos, retorna o resultado diretamente
- Se não concluído em 50 segundos, retorna
task_ide instruções para o Agente alternar paraget_task_status
Segmentação de Imagem (SAM3):
- Chame
sam3_predict→ o servidor faz polling internamente - Padrão de espera máxima de 50 segundos (25 tentativas × intervalo de polling de 2 segundos)
- Se concluído em 50 segundos, retorna o resultado da segmentação diretamente
- Se não concluído em 50 segundos, retorna um aviso de truncamento indicando que a tarefa ainda está em processamento
Exemplos de Uso
Após a configuração, pergunte naturalmente ao seu agente de IA:
"Aprimore este vídeo para 1080p: https://example.com/video.mp4"
"Melhore a qualidade de /Users/me/Desktop/video.mp4 para 2k"
"Aprimore esta imagem: https://example.com/photo.jpg"
"Colorize esta foto em preto e branco: /Users/me/Desktop/old_photo.png"
"Remova o ruído desta imagem: C:\Users\xxx\noisy.jpg"
"Analise esta imagem e encontre todos os objetos: C:\Users\xxx\photo.png"
"Use SAM3 para segmentar esta imagem, prompt: 'encontre todos os carros'"
O agente escolherá automaticamente ferramentas síncronas ou assíncronas com base na complexidade da tarefa.
Ferramentas Fornecidas
Aprimoramento de Vídeo
create_task
Cria uma tarefa assíncrona de aprimoramento de vídeo.
Recomendado para a maioria dos casos de uso. Ideal para vídeos mais longos (mais de 10 segundos) para evitar timeouts e bloqueio da conexão.
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
video_source | string | Sim | - | URL do vídeo ou caminho de arquivo local (a URL deve ser publicamente acessível; links que exigem login ou assinaturas não são suportados) |
type | string | Não | url | url ou local |
resolution | string | Não | 720p | 480p, 540p, 720p, 1080p, 2k |
Retorna:
{
"success": true,
"task_id": "xxx",
"status": "processing"
}
get_task_status
Consulta o status da tarefa de aprimoramento de vídeo.
O campo
statusretornado pode ser:processing,completedoufailed. Sestatusforprocessing, você precisa aguardar alguns segundos e chamar esta ferramenta novamente.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
task_id | string | Sim |
Retorna:
{
"success": true,
"task_id": "xxx",
"status": "completed",
"progress": 100,
"video_url": "https://...",
"message": "Task is still processing, please check again later"
}
O campo message só aparece quando status é processing, solicitando que o Agente continue aguardando.
enhance_video_sync
Aprimora vídeo de forma síncrona (bloqueia até a conclusão).
Melhor para vídeos curtos (tempo de processamento estimado < 1 minuto). Se a tarefa não for concluída em 50 segundos, a ferramenta retorna antecipadamente com um
task_id, e você precisa usarget_task_statuspara continuar consultando.
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
video_source | string | Sim | - | URL do vídeo ou caminho de arquivo local |
type | string | Não | url | url ou local |
resolution | string | Não | 720p | Resolução alvo |
poll_interval | number | Não | 5 | Intervalo de polling (segundos) |
timeout | number | Não | 50 | Timeout de espera síncrona (segundos), retorna antecipadamente quando excedido |
Exemplo de retorno truncado (não concluído em 50s):
{
"success": true,
"status": "processing",
"task_id": "xxx",
"message": "Task is still processing (waited 50 seconds). Please use get_task_status to continue polling.",
"note": "The synchronous wait for this long-running task has been truncated. Switch to get_task_status polling."
}
Aprimoramento de Imagem
Três ferramentas de processamento de imagem são fornecidas, cada uma voltada para um caso de uso específico:
| Ferramenta | Função | Caso de Uso |
|---|---|---|
enhance_image_sync | Aprimoramento de qualidade de imagem e otimização de rostos | Fotos borradas, de baixa resolução ou degradadas |
colorize_image_sync | Colorização de fotos em preto e branco | Restauração de fotos antigas em P&B com cores realistas |
denoise_image_sync | Remoção de ruído de imagem | Fotos com ruído/grão tiradas em pouca luz |
Todas as três ferramentas compartilham os mesmos parâmetros e padrão de comportamento. Elas são síncronas — a ferramenta bloqueia até que a imagem seja processada ou o timeout seja atingido.
Formatos de imagem suportados: PNG, JPG, JPEG, BMP, WebP, etc.
Dois métodos de upload:
- Upload por URL: forneça uma URL de imagem publicamente acessível (
type: "url") - Upload local: forneça um caminho de arquivo local; o Servidor MCP faz upload automático para o armazenamento de objetos TOS (
type: "local", tamanho máximo do arquivo: 100MB)
enhance_image_sync
Aprimora uma imagem de forma síncrona para melhorar a qualidade e otimizar rostos.
A ferramenta cria internamente uma tarefa e faz polling do resultado. Se o processamento for concluído dentro do timeout (padrão 50s), o resultado é retornado diretamente. Se não, a ferramenta retorna antecipadamente com um
task_id— useget_image_task_statuspara continuar o polling.
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
image_source | string | Sim | - | URL da imagem ou caminho de arquivo local (a URL deve ser publicamente acessível; links que exigem login ou assinaturas não são suportados) |
type | string | Não | url | url ou local |
scale | number | Não | 2 | Multiplicador de escala de aprimoramento (ex.: 2 para 2x, 4 para upscaling de 4x) |
poll_interval | number | Não | 5 | Intervalo de polling em segundos |
timeout | number | Não | 50 | Timeout de espera síncrona em segundos, retorna antecipadamente quando excedido |
Retorno de conclusão normal:
{
"success": true,
"task_id": "xxx",
"status": "completed",
"progress": 100,
"image_url": "https://..."
}
Retorno truncado (não concluído em 50s):
{
"success": true,
"status": "processing",
"task_id": "xxx",
"message": "Task is still processing (waited 50 seconds). Please use get_image_task_status to continue polling.",
"note": "The synchronous wait for this long-running task has been truncated. Switch to get_image_task_status polling."
}
colorize_image_sync
Coloriza uma foto em preto e branco de forma síncrona com IA.
Melhor para fotos antigas em preto e branco. A IA adicionará cores realistas à imagem. Suporta os mesmos parâmetros e formato de retorno que
enhance_image_sync. | Parâmetro | Tipo | Obrigatório | Padrão | Descrição | |---|---|---|---|---| |image_source| string | Sim | - | URL da imagem ou caminho de arquivo local (a URL deve ser publicamente acessível, links que exigem login ou assinaturas não são suportados) | |type| string | Não |url|urloulocal| |poll_interval| number | Não |5| Intervalo de polling em segundos | |timeout| number | Não |50| Tempo limite de espera de sincronização em segundos, retorna antecipadamente quando excedido |
Retorna: Mesmo formato que enhance_image_sync.
denoise_image_sync
Remove ruído de uma imagem de forma síncrona.
Ideal para fotos granuladas/com ruído tiradas em condições de pouca luz ou com configurações ISO altas. Suporta os mesmos parâmetros e formato de retorno que
enhance_image_sync.
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
image_source | string | Sim | - | URL da imagem ou caminho de arquivo local (a URL deve ser publicamente acessível, links que exigem login ou assinaturas não são suportados) |
type | string | Não | url | url ou local |
poll_interval | number | Não | 5 | Intervalo de polling em segundos |
timeout | number | Não | 50 | Tempo limite de espera de sincronização em segundos, retorna antecipadamente quando excedido |
Retorna: Mesmo formato que enhance_image_sync.
get_image_task_status
Consulta o status da tarefa de processamento de imagem. Usado para fazer polling dos resultados quando uma ferramenta síncrona expira.
O campo
statusretornado pode ser:processing,completedoufailed. Sestatusforprocessing, aguarde alguns segundos e chame esta ferramenta novamente.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
task_id | string | Sim |
Retorna:
{
"success": true,
"task_id": "xxx",
"status": "completed",
"progress": 100,
"image_url": "https://...",
"message": "Task is still processing, please check again later"
}
O campo message só aparece quando status é processing, solicitando que o Agente continue aguardando.
Fluxo de Trabalho Recomendado para Ferramentas de Imagem
- Para a maioria das imagens: Chame
enhance_image_sync/colorize_image_sync/denoise_image_syncdiretamente — a ferramenta lida com tudo e retorna o resultado - Se truncado: A ferramenta retorna um
task_id, então useget_image_task_statuspara fazer polling até questatusse tornecompletedoufailed - Se falhou: Verifique o campo
error_messagepara detalhes
Segmentação de Imagem (SAM3)
sam3_predict
Analisa uma imagem usando a API de segmentação SAM3 para gerar resultados de inferência (máscaras, caixas delimitadoras, pontuações).
Parâmetros:
Entrada de imagem (escolha um, deve fornecer exatamente um):
-
imagePath(string): Caminho absoluto de um arquivo de imagem local. Suporta formatos comuns (PNG, JPG, JPEG).- Exemplo:
"C:\\Users\\xxx\\photo.png","/home/user/images/cat.jpg" - Use quando: O usuário fornece explicitamente um caminho de arquivo local
- Exemplo:
-
imageUrl(string): URL publicamente acessível da imagem.- Exemplo:
"https://example.com/photo.jpg" - Use quando: A imagem já está online e o usuário fornece um link
- Nota: A URL deve ser publicamente acessível. Links que exigem login ou assinaturas não são suportados
- Exemplo:
-
imageBase64(string): Dados de imagem codificados em base64.- Exemplo:
"iVBORw0KGgoAAAANSUhEUgAA..." - Use quando: O usuário arrasta ou envia um anexo de imagem, e o Agente o codifica como base64
- Nota: Imagens grandes produzirão strings base64 muito grandes, o que pode atrasar a transmissão
- Exemplo:
Outros parâmetros:
prompt(string, obrigatório): Prompt de texto em inglês especificando o objeto alvo a segmentar. Como o modelo SAM3 só aceita prompts em inglês, forneça uma descrição em inglês. Se o usuário fornecer texto em chinês ou outro idioma que não seja inglês, o Agente o traduzirá automaticamente antes de chamar a ferramenta.
Retorno de conclusão normal:
Após a inferência ser concluída, retorna uma string JSON contendo três campos:
-
masks: Array 2D. Cada elemento é uma máscara binária (valores 0 ou 1) com as mesmas dimensões da imagem de entrada, marcando a localização em nível de pixel dos objetos detectados. A i-ésima máscara corresponde à i-ésima instância de objeto detectada. -
boxes: Array 2D. Cada elemento é uma caixa delimitadora no formato[x1, y1, x2, y2], representando a região retangular do objeto detectado.x1,y1são as coordenadas do canto superior esquerdo;x2,y2são as coordenadas do canto inferior direito.Sistema de coordenadas: O canto superior esquerdo da imagem é a origem
(0, 0). O eixo x aumenta para a direita, e o eixo y aumenta para baixo, em pixels. Por exemplo,[120, 80, 300, 450]significa que a região começa a 120px da borda esquerda e 80px da borda superior, estendendo-se até 300px da esquerda e 450px do topo. Largura =x2 - x1 = 180px, Altura =y2 - y1 = 370px. -
scores: Array 1D. Cada elemento é uma pontuação de confiança para o resultado de detecção correspondente, variando de 0 a 1. Pontuações mais altas indicam maior confiança do modelo.
Exemplo de resultado JSON:
{
"masks": [
[[0, 0, 1, ...], [0, 1, 1, ...], ...],
[[0, 0, 0, ...], [0, 0, 1, ...], ...]
],
"boxes": [
[120, 80, 300, 450],
[400, 200, 600, 500]
],
"scores": [0.95, 0.87]
}
Exemplo de retorno truncado (não concluído em 50s):
{
"success": true,
"status": "processing",
"task_id": "xxx",
"message": "Task is still processing (waited about 50 seconds). Please retry later or record this task_id for manual follow-up.",
"note": "The synchronous wait for this long-running task has been truncated."
}
get_sam3_task_status
Consulta o status da tarefa de segmentação SAM3. Usado para fazer polling dos resultados quando sam3_predict expira.
O campo
statusretornado pode ser:processing,completedoufailed. Sestatusforprocessing, aguarde alguns segundos e chame esta ferramenta novamente.
| Parâmetro | Tipo | Obrigatório |
|---|---|---|
task_id | string | Sim |
Retorno concluído:
{
"success": true,
"task_id": "xxx",
"status": "completed",
"result_url": "https://..."
}
Retorno em processamento:
{
"success": true,
"task_id": "xxx",
"status": "processing",
"message": "Task is still processing, please check again later."
}
Retorno de falha:
{
"success": false,
"task_id": "xxx",
"status": "failed",
"error": "Task failed"
}
FAQ
O Agente relata timeout ao chamar ferramentas?
Este é o principal problema que este projeto aborda. Agentes MCP (como Claude, Cursor) normalmente impõem um timeout de ~60 segundos por chamada de ferramenta. Se o processamento da tarefa exceder esse limite, o Agente apresentará erro e desconectará.
Soluções:
-
Prefira ferramentas assíncronas: Para aprimoramento de vídeo e outras tarefas demoradas, sempre use
create_task+get_task_status. Essas ferramentas retornam instantaneamente em cada chamada e não acionarão timeouts. -
Mecanismo de truncamento de ferramentas síncronas:
enhance_video_synctem um limite interno de truncamento de 50 segundos. Se a tarefa não for concluída em 50 segundos, a ferramenta retorna proativamente umtask_ide instrui o Agente a usarget_task_statuspara acompanhar. -
Mecanismo de truncamento SAM3:
sam3_predicttem como padrão 25 tentativas de polling (~50 segundos). Se a tarefa não for concluída, retorna um aviso de truncamento indicando que a tarefa ainda está em processamento. -
Ajuste os parâmetros de polling do SAM3 (avançado): Se você está confiante de que as tarefas SAM3 são geralmente rápidas (por exemplo, menos de 10 segundos), você pode aumentar as tentativas de polling via variável de ambiente:
SAM3_POLL_MAX_ATTEMPTS=60Mas garanta que o tempo total de espera não exceda o limite de timeout do seu Agente.
Anexo arrastado e solto diz que o arquivo não foi encontrado?
Esta é uma limitação conhecida do stdio MCP. Ao arrastar ou enviar um anexo pela interface do Agente, o caminho do arquivo geralmente não é passado automaticamente para o Servidor MCP.
Soluções:
-
Forneça o caminho simultaneamente (recomendado): Após arrastar a imagem, adicione o caminho absoluto local na sua mensagem:
"Por favor, analise esta imagem
D:\\photos\\cat.jpge encontre o gato" -
Aguarde a codificação automática: O Claude pode codificar automaticamente a imagem como base64. Se for bem-sucedido, nenhuma ação extra é necessária.
-
Responda à consulta de caminho: Se o Claude perguntar pelo caminho da imagem, simplesmente responda com o caminho absoluto local.
Existe prioridade entre os três métodos de entrada?
Não há prioridade estrita. O Claude escolherá automaticamente o método mais apropriado com base no contexto da conversa:
- Você forneceu um caminho local → usa
imagePath - Você forneceu um link da web → usa
imageUrl - Você arrastou um anexo sem caminho → tenta
imageBase64
Quais formatos de imagem são suportados?
Formatos comuns: PNG, JPG, JPEG, BMP, WebP, etc. PNG ou JPG é recomendado.
E se o download da imagem por URL falhar?
Garanta que a URL seja publicamente acessível, sem exigir login, cookies ou assinaturas. Se a imagem estiver em um serviço que exige autenticação (por exemplo, Bucket S3 privado, hospedagem de imagem com login), baixe-a localmente primeiro e use imagePath.
E se a imagem base64 for muito grande?
Se a imagem for muito grande (por exemplo, resolução 4K), os dados codificados em base64 serão muito grandes e podem atrasar a transmissão. Sugestões:
- Use
imagePathem vez disso - Ou comprima a imagem antes de codificar
Notas de Upload de Arquivo
Quando type é "local":
- O arquivo é lido localmente pelo Servidor MCP
- Enviado diretamente para o armazenamento de objetos TOS via URL pré-assinada
- Tamanho máximo do arquivo: 100MB
Solução de Problemas
"command not found: npx"
Instale Node.js >= 18: https://nodejs.org/
"Error: --api-key argument or API_KEY environment variable is required"
Sua chave de API está ausente. Verifique novamente o env.API_KEY na sua configuração.
Servidor MCP mostra vermelho/erro no cliente
Verifique os logs:
- Claude Desktop macOS:
~/Library/Logs/Claude/mcp*.log - Claude Desktop Windows:
%APPDATA%\Claude\logs\mcp*.log - Cursor: Painel de saída > MCP
"TOS upload failed"
Geralmente é uma incompatibilidade de assinatura. Garanta que seu IMAGE_API_BASE_URL (ou seu fallback HTTP_API_BASE_URL) e API_KEY estejam corretos e ativos.
Instalação Global (Alternativa)
Se você preferir não usar npx toda vez:
npm install -g @avclabs.ai/media-mcp
Então use "command": "media-mcp" com "args": ["--api-key", "your-api-key"] na sua configuração.
Desenvolvimento e Lançamento
Este pacote roda localmente no cliente MCP e é lançado via npm; não é um daemon Node remoto. O media-mcp-api-http-server irmão está ativo como o /enhance compartilhado de vídeo/imagem/proprietário de conta, embora seu lançamento de produção atual só implemente rotas de vídeo; o código candidato adiciona as rotas de imagem, outboxes de preparação/despacho duráveis, idempotência de crédito em nível de tarefa e filas separadas de imagem/vídeo. O Portal está ativo e o SAM3 permanece uma dependência de produção externa. E2E real de IA de imagem/TOS, implantação do backend de produção e saúde JSON do SAM3 ainda estão pendentes, então 0.3.0 não deve ser publicado ainda. Antes de publicar, execute:
npm ci
npm run release:verify
Veja o guia de lançamento para sincronização de versão, ordem de publicação, testes de fumaça e a relação com a implantação do portal/backend.
Licença
Licença MIT - Veja o arquivo LICENSE para detalhes