Anime News Network

Pesquise na enciclopédia da Anime News Network e leia seu feed de notícias. Sem chave de API.

Documentação

mcp-animenewsnetwork

npm CI license MCP Registry Glama M8ven LobeHub Install in Cursor Install in VS Code

O Anime News Network cobre anime e mangá desde 1998. Ele mantém uma enciclopédia das próprias obras, com o elenco e a equipe creditados em cada uma, os episódios, os lançamentos, as aberturas e encerramentos e as avaliações dos leitores, e também opera um feed de notícias, com edições separadas para os Estados Unidos, o Reino Unido e a Austrália.

Este servidor conecta um cliente de chat a ambos. Você pode pesquisar na enciclopédia por um anime ou mangá, ler uma entrada com seus créditos e detalhes, listar o que foi adicionado recentemente ou navegar pela enciclopédia em ordem alfabética, e ler o feed de notícias. Ele não requer chave de API nem conta.

Versão francesa


Instalação

Instalação com um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add animenewsnetwork -- npx -y mcp-animenewsnetwork

Claude Desktop, Cursor e qualquer cliente que use o formato de configuração padrão

{
  "mcpServers": {
    "animenewsnetwork": {
      "command": "npx",
      "args": ["-y", "mcp-animenewsnetwork"]
    }
  }
}

Node 24 ou posterior é necessário, e nenhuma variável de ambiente precisa ser definida.

Com Docker

{
  "mcpServers": {
    "animenewsnetwork": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-animenewsnetwork:3.0.0"]
    }
  }
}

-i mantém o stdin aberto, que é por onde o protocolo trafega, e -t é omitido porque um TTY reescreve o fluxo. O contêiner precisa de HTTPS de saída para cdn.animenewsnetwork.com e www.animenewsnetwork.com, e nada mais: sem volume, sem porta, sem credencial.

Pacote, sem npm

Baixe mcp-animenewsnetwork-2.0.1.mcpb do último lançamento e abra-o. Um cliente que suporte pacotes MCP o instala por conta própria, sem npm e sem arquivo de configuração para editar. O pacote carrega suas dependências, então nada é baixado no momento da instalação.

O que você pode perguntar

  • "O que a enciclopédia tem sobre Cowboy Bebop?"
  • "Quem dublou Spike, e em quais idiomas?"
  • "Quais animes foram adicionados à enciclopédia recentemente?"
  • "Quais são as notícias de anime hoje?"
  • "Como os leitores avaliaram essa série?"

O caminho comum vai de uma pesquisa a uma entrada: uma linha carrega um id e um kind, e get_title recebe ambos juntos.

Ferramentas

FerramentaO que faz
search_titlesEncontra animes e mangás por título na enciclopédia.
get_titleLê uma entrada, seus créditos e seus detalhes.
list_recentLista o que foi adicionado recentemente, ou navega pela enciclopédia por letra.
get_newsLê o feed de notícias.

Uma entrada é endereçada pelo seu id junto com seu kind, já que a enciclopédia numera animes e mangás separadamente.

search_titles

Encontra animes e mangás por título.

ArgumentoTipoObrigatórioO que faz
querystring, pelo menos 1 caracteresimUm título, ou parte dele.
kindanime, manga ou both, padrão bothnãoQual parte da enciclopédia.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.

Em retorno: linhas carregando id e kind, que get_title recebe juntos; name; type, lendo TV, filme, OAV, ONA, especial, mangá ou romance; precision; vintage, a data ou intervalo de lançamento original como publicado; e source_url. Um campo que a entrada deixa vazio é null.

get_title

Lê uma entrada. As partes mais pesadas são solicitadas em vez de servidas por padrão.

ArgumentoTipoObrigatórioO que faz
idinteiro, 1 ou maissimO id da enciclopédia.
kindanime ou mangasimA qual consulta o id pertence.
sectionsarray de basic, cast, staff, episodes, releases, related, news, reviews, padrão ["basic"]nãoQuais partes retornar.
max_charsinteiro, 200 a 20000, padrão 4000nãoQuanto do resumo da trama servir.
offsetinteiro, 0 ou mais, padrão 0nãoOnde retomar o resumo da trama.

Em retorno: title, a entrada que uma linha de pesquisa carrega, que volta independentemente do que foi solicitado para que qualquer resposta possa ser citada. Pedir basic adiciona alt_titles, genres, themes, episode_count, running_time, objectionable_content, official_websites, picture_url, opening_themes e ending_themes. ratings carrega os votes, weighted_score e bayesian_score dos leitores, cada null onde a enciclopédia não calculou nenhum. plot_summary é servido em fatias por vez, descrito por total_chars, returned_chars, offset, next_offset e truncated. Uma entrada de elenco nomeia o role, o person e o lang em que atuaram.

list_recent

Lista o que foi adicionado recentemente à enciclopédia, ou navega por ela pela primeira letra.

ArgumentoTipoObrigatórioO que faz
kindanime, manga, person ou company, padrão animenãoO que listar.
starts_withum único caracterenãoNavegar pelas entradas que começam com ele.
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.
offsetinteiro, 0 ou mais, padrão 0nãoLinhas a pular, para paginação.

Em retorno: rows, cada uma carregando id, kind, name, type, precision, vintage, date_added e source_url, qualquer uma das quais o relatório pode deixar vazio. mode diz se a resposta foi lida como recent ou como browse, já que passar starts_with muda a pergunta sendo feita, e next_offset continua.

get_news

Lê o feed de notícias.

ArgumentoTipoObrigatórioO que faz
feedall, news ou reviews, padrão allnãoQual feed ler.
editionus, uk ou au, padrão usnãoQual edição.
categorystringnãoManter as histórias que carregam esta tag.
limitinteiro, 1 a 100, padrão 20nãoHistórias a servir.

Em retorno: items, cada uma com seu title, link, summary, categories contendo todas as tags que o feed carrega na história, e published_at como um timestamp ISO quando a data do feed pôde ser lida. total_available conta as histórias que o feed continha, que é um comprimento fixo de feed em vez do tamanho do arquivo.

Configuração

Toda variável é opcional. Defina-as no bloco env da configuração do seu cliente.

VariávelPadrãoO que faz
ANN_USER_AGENTa identidade do projetoNomeia seu aplicativo para o serviço, com um endereço onde uma pessoa pode ser contatada.
ANN_MIN_INTERVAL_MS1100Intervalo entre duas requisições, de 1000 a 60000.
ANN_TIMEOUT_MS15000Prazo para uma requisição, de 1000 a 120000.
ANN_MAX_RETRIES3Tentativas após uma falha transitória, de 0 a 10.
ANN_CACHE_TTL_MS3600000Por quanto tempo uma entrada da enciclopédia fica na memória, de 0 a 86400000.
ANN_NEWS_CACHE_TTL_MS300000Por quanto tempo um feed de notícias fica na memória, de 0 a 86400000.
ANN_CACHE_MAX_ENTRIES200Respostas mantidas na memória de uma vez, de 0 a 10000.
ANN_LOG_LEVELerrorsilent, error, info ou debug, escrito no stderr.

O feed de notícias publica várias vezes por hora, enquanto a enciclopédia muda raramente, então os dois são mantidos por diferentes períodos de tempo. Um valor fora do seu intervalo cai para o padrão, e o motivo é escrito no stderr.

Erros

Toda falha carrega um de seis códigos, uma mensagem e, onde ajuda, uma dica nomeando o próximo passo.

CódigoO que aconteceuO que fazer
not_foundO serviço respondeu e não possui tal entrada.Verifique o id e o tipo com search_titles.
invalid_inputOs argumentos foram recusados antes de qualquer requisição ser enviada.Leia a mensagem, que nomeia o argumento.
rate_limitedO serviço pediu que este cliente diminuísse o ritmo.Aguarde o número de segundos que a dica indica e chame novamente com os mesmos argumentos. A entrada ainda está lá.
parse_failureA resposta chegou em um formato que este cliente não consegue ler.Reporte em o rastreador de problemas.
network_errorA requisição não foi concluída.Tente novamente em breve.
timeoutA requisição passou do prazo.Aumente ANN_TIMEOUT_MS, ou peça menos linhas.

Como biblioteca

A camada que lê o serviço é publicada separadamente, com seu ritmo, seu cache e seus erros, e sem protocolo anexado.

import { AnnClient } from "mcp-animenewsnetwork/client";

const client = new AnnClient();
const { data, cached } = await client.getTitle("anime", 1);
console.log(data.name, cached);

Cada leitura responde com { data, cached }, e lança um erro com um dos seis códigos. O intervalo entre duas requisições também se aplica aqui.

Ritmo e atribuição

As requisições saem uma de cada vez com pelo menos 1,1 segundos entre elas, e o intervalo de um segundo se mantém independentemente de como o servidor está configurado. O User-Agent sempre termina com a identidade do projeto e um endereço onde uma pessoa pode ser contatada.

Cada resultado traz o endereço da página da enciclopédia ou do artigo. A enciclopédia e as notícias são trabalho da Anime News Network e seus colaboradores, e a atribuição é o que o serviço pede em troca.

Este servidor MCP é um projeto não oficial, sem afiliação com a Anime News Network.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda na sua máquina, contata cdn.animenewsnetwork.com e www.animenewsnetwork.com e nada mais, mantém as respostas na memória enquanto roda e não grava nada em disco. PRIVACY.md declara o que uma requisição carrega e quais configurações alteram isso.

Desenvolvimento

npm install
npm run build:fixtures
npm test
npm run check

Os testes rodam contra fixtures geradas e não fazem requisições de rede. A suíte ao vivo, npm run test:live, faz uma requisição por rota e roda todas as noites contra o próprio serviço.

Contribuindo

Bugs, perguntas e ideias pertencem ao rastreador de problemas. Pull requests são bem-vindos; abrir uma issue primeiro ajuda a concordar sobre a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. A enciclopédia e as notícias pertencem à Anime News Network e seus colaboradores.


mcp-animenewsnetwork (francês)

Versão em inglês

Anime News Network cobre anime e mangá desde 1998. O site mantém uma enciclopédia das obras em si, com os intérpretes e a equipe creditada em cada uma, os episódios, as publicações, os temas de abertura e encerramento e as notas de seus leitores, e também opera um feed de notícias, com edições distintas para os Estados Unidos, o Reino Unido e a Austrália.

Este servidor conecta um cliente de conversa aos dois. Pode-se buscar um anime ou um mangá na enciclopédia, ler uma ficha com seus créditos e detalhes, listar o que foi adicionado recentemente ou percorrer a enciclopédia por letra, e ler o feed de notícias. Sem chave de API, sem conta.

Instalação

Instalação em um clique

Install in Cursor Install in VS Code

Claude Code

claude mcp add animenewsnetwork -- npx -y mcp-animenewsnetwork

Claude Desktop, Cursor e qualquer cliente no formato de configuração padrão

{
  "mcpServers": {
    "animenewsnetwork": {
      "command": "npx",
      "args": ["-y", "mcp-animenewsnetwork"]
    }
  }
}

Node 24 ou mais recente é necessário, e nenhuma variável de ambiente precisa ser preenchida.

Com Docker

{
  "mcpServers": {
    "animenewsnetwork": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/smeet666/mcp-animenewsnetwork:3.0.0"]
    }
  }
}

-i mantém a entrada padrão aberta, que é o canal do protocolo, e -t é omitido porque um TTY reescreve o fluxo. O contêiner precisa de acesso HTTPS de saída para cdn.animenewsnetwork.com e www.animenewsnetwork.com, e de nada mais: nenhum volume, nenhuma porta, nenhum identificador.

Bundle, sem npm

Baixe mcp-animenewsnetwork-2.0.1.mcpb de a última publicação e abra-o. Um cliente que gerencia bundles MCP o instala sozinho, sem npm e sem arquivo de configuração para modificar. O bundle carrega suas dependências, então nada é baixado na instalação.

O que se pode pedir

  • « O que a enciclopédia tem sobre Cowboy Bebop? »
  • « Quem dublou Spike, e em quais idiomas? »
  • « Quais animes foram adicionados recentemente à enciclopédia? »
  • « Qual é a notícia de anime do dia? »
  • « Como os leitores avaliaram esta série? »

O caminho comum vai de uma busca a uma ficha: uma linha carrega um id e um kind, e get_title retoma os dois juntos.

As ferramentas

FerramentaO que faz
search_titlesEncontra animes e mangás pelo título na enciclopédia.
get_titleLê uma ficha, seus créditos e detalhes.
list_recentLista os acréscimos recentes, ou percorre a enciclopédia por letra.
get_newsLê o feed de notícias.

Uma ficha é endereçada pelo seu id acompanhado do seu kind, a enciclopédia numerando animes e mangás separadamente.

search_titles

Encontra animes e mangás pelo título.

ArgumentoTipoObrigatórioO que faz
querystring, pelo menos 1 caracteresimUm título, ou uma parte.
kindanime, manga ou both, padrão bothnãoA parte da enciclopédia.
limitinteiro, 1 a 50, padrão 10nãoLinhas a servir.

Em retorno: linhas com id e kind, que get_title retoma juntos ; name ; type, valendo TV, movie, OAV, ONA, special, manga ou novel ; precision ; vintage, a data ou o período de publicação tal como publicado ; e source_url. Um campo que a ficha deixa vazio vale null.

get_title

Lê uma ficha. As partes pesadas são solicitadas em vez de serem servidas por padrão.

ArgumentoTipoObrigatórioO que faz
idinteiro, 1 ou maissimO identificador enciclopédico.
kindanime ou mangasimO registro ao qual o id pertence.
sectionsarray de basic, cast, staff, episodes, releases, related, news, reviews, padrão ["basic"]nãoAs partes a renderizar.
max_charsinteiro, 200 a 20000, padrão 4000nãoO comprimento do resumo a servir.
offsetinteiro, 0 ou mais, padrão 0nãoOnde retomar o resumo.

Em retorno: title, a ficha que uma linha de busca carrega, que volta independentemente da solicitação para que qualquer resposta possa ser citada. Pedir basic adiciona alt_titles, genres, themes, episode_count, running_time, objectionable_content, official_websites, picture_url, opening_themes e ending_themes. ratings carrega as votes dos leitores, o weighted_score e o bayesian_score, cada um null onde a enciclopédia não calculou nenhum. plot_summary é servido em partes, descritas por total_chars, returned_chars, offset, next_offset e truncated. Uma entrada de distribuição nomeia o role, a person e o idioma lang no qual ela atuou.

list_recent

Lista os acréscimos recentes à enciclopédia, ou a percorre pela primeira letra.

ArgumentoTipoObrigatórioO que faz
kindanime, manga, person ou company, padrão animenãoO que listar.
starts_withum único caracterenãoPercorre as fichas que começam com ele.
limitinteiro, 1 a 50, padrão 20nãoLinhas a servir.
offsetinteiro, 0 ou mais, padrão 0nãoLinhas a pular, para paginar.

Em retorno: rows, cada uma com id, kind, name, type, precision, vintage, date_added e source_url, que o relatório pode deixar vazios. mode diz se a resposta foi lida em recent ou em browse, passar starts_with mudando a pergunta feita, e next_offset continua.

get_news

Lê o feed de notícias.

ArgumentoTipoObrigatórioO que faz
feedall, news ou reviews, padrão allnãoO feed a ler.
editionus, uk ou au, padrão usnãoA edição.
categorystringnãoManter apenas os assuntos com esta etiqueta.
limitinteiro, 1 a 100, padrão 20nãoAssuntos a servir.
Em retorno: items, cada um com seu title, link, summary, seus
categories portando cada etiqueta que o filtro aplica ao tópico, e
published_at em carimbo de data/hora ISO quando a data do tópico pôde ser lida.
total_available conta os tópicos que o filtro continha, o que é um comprimento
de filtro fixo e não o tamanho dos arquivos.

Configuração

Cada variável é opcional. Elas são definidas no bloco env da configuração do cliente.

VariávelPadrãoO que faz
ANN_USER_AGENTa identidade do projetoNomeia seu aplicativo junto ao serviço, com um endereço para contato com uma pessoa.
ANN_MIN_INTERVAL_MS1100Intervalo entre duas requisições, de 1000 a 60000.
ANN_TIMEOUT_MS15000Tempo limite de uma requisição, de 1000 a 120000.
ANN_MAX_RETRIES3Tentativas após uma falha temporária, de 0 a 10.
ANN_CACHE_TTL_MS3600000Duração durante a qual uma ficha permanece em memória, de 0 a 86400000.
ANN_NEWS_CACHE_TTL_MS300000Duração durante a qual um filtro permanece em memória, de 0 a 86400000.
ANN_CACHE_MAX_ENTRIES200Respostas mantidas em memória de uma vez, de 0 a 10000.
ANN_LOG_LEVELerrorsilent, error, info ou debug, escrito na saída de erro.

O filtro de notícias publica várias vezes por hora, enquanto a enciclopédia muda raramente, então ambos são mantidos por durações diferentes. Um valor fora de sua faixa cai no padrão, e o motivo é escrito na saída de erro.

Erros

Cada falha carrega um dos seis códigos, uma mensagem e, quando ajuda, uma indicação do próximo passo.

CódigoO que aconteceuO que fazer
not_foundO serviço respondeu e não tem essa ficha.Verifique o identificador e o tipo com search_titles.
invalid_inputOs argumentos foram recusados antes de qualquer requisição.Leia a mensagem, que nomeia o argumento.
rate_limitedO serviço pede que este cliente desacelere.Aguarde os segundos indicados e chame novamente com os mesmos argumentos. A ficha ainda está lá.
parse_failureA resposta chegou em uma forma ilegível aqui.Reporte em o rastreador de incidentes.
network_errorA requisição não foi concluída.Tente novamente em breve.
timeoutA requisição excedeu seu tempo limite.Aumente ANN_TIMEOUT_MS, ou peça menos linhas.

Como biblioteca

A camada que lê o serviço é publicada sozinha, com seu ritmo, seu cache e seus erros, sem protocolo anexado.

import { AnnClient } from "mcp-animenewsnetwork/client";

const client = new AnnClient();
const { data, cached } = await client.getTitle("anime", 1);
console.log(data.name, cached);

Cada leitura responde { data, cached }, e levanta um erro carregando um dos seis códigos. O piso entre duas requisições também se aplica aqui.

Ritmo e atribuição

As requisições partem uma a uma com pelo menos 1,1 segundo entre elas, e o piso de um segundo se mantém independentemente da configuração. O User-Agent se termina sempre com a identidade do projeto e um endereço para contato com uma pessoa.

Cada resultado carrega o endereço da página enciclopédica ou do artigo. A enciclopédia e as notícias são obra da Anime News Network e de seus contribuidores, e a atribuição é o que o serviço pede em retorno.

Este MCP é um projeto não oficial, sem afiliação à Anime News Network.

Privacidade

Este servidor não coleta nada sobre você e não envia nada ao seu autor. Ele roda na sua máquina, junta apenas cdn.animenewsnetwork.com e www.animenewsnetwork.com, mantém suas respostas em memória enquanto roda, e não escreve nada no disco. PRIVACY.md diz o que uma requisição carrega e quais ajustes mudam isso.

Desenvolvimento

npm install
npm run build:fixtures
npm test
npm run check

Os testes são executados em fixtures geradas e não emitem nenhuma requisição. A suíte ao vivo, npm run test:live, emite uma requisição por rota e roda todas as noites contra o próprio serviço.

Contribuindo

Anomalias, perguntas e ideias têm seu lugar em o rastreador de incidentes. Propostas de modificação são bem-vindas; abrir um ticket primeiro ajuda a alinhar a forma da mudança. Veja CONTRIBUTING.md.

Licença

MIT, veja LICENSE. A enciclopédia e as notícias pertencem à Anime News Network e aos seus contribuidores.