Dev.to MCP Server

Um servidor MCP para a API do Dev.to que permite pesquisar, navegar, ler e criar conteúdo na plataforma.

Documentação

🚀 Servidor MCP Dev.to

License: AGPL v3 Docker Dev.to API


Uma implementação de um servidor Model Context Protocol (MCP) para a API do Dev.to, fornecendo capacidades para pesquisar, navegar, ler e criar conteúdo no Dev.to.


✨ Recursos

RecursoDescrição
🔍 Navegar pelos Artigos Mais RecentesObtenha os artigos mais recentes do Dev.to
🌟 Navegar pelos Artigos PopularesObtenha os artigos mais populares
🏷️ Navegar por TagObtenha artigos com uma tag específica
📚 Navegar por TítuloObtenha artigos com um título específico
📖 Ler ArtigoObtenha informações detalhadas sobre um artigo específico
👤 Perfil do UsuárioObtenha informações sobre um usuário do Dev.to
🔎 Pesquisar ArtigosPesquise artigos usando palavras-chave
👤 Pesquisar Artigos por UsuárioPesquise todos os artigos de um usuário específico
📝 Obter Artigo por IDObtenha informações detalhadas sobre um artigo específico
📝 Obter Artigo por TítuloObtenha informações detalhadas sobre um artigo específico
🧠 Analisar ArtigoAnalise um artigo específico (baseado em prompt, saída de resumo)
🧠 Analisar Perfil do UsuárioAnalise um perfil de usuário específico (baseado em prompt, saída de resumo)
📝 Criar ArtigoCrie e publique novos artigos
✏️ Atualizar ArtigoAtualize seus artigos existentes
📝 Atualizar Artigo por TítuloAtualize seus artigos existentes por título (resolve para ID)
📜 Listar Meus ArtigosListe seus próprios artigos publicados
📝 Listar Meus Artigos RascunhoListe seus próprios artigos rascunho
📝 Listar Meus Artigos Não PublicadosListe seus próprios artigos não publicados
📝 Listar Meus Artigos AgendadosListe seus próprios artigos agendados
🧑‍💻 Publicar Artigo por IDPublique seus próprios artigos por ID
📝 Publicar Artigo por TítuloPublique seus próprios artigos por título
🧑‍💻 Despublicar Artigo por IDDespublique seus próprios artigos por ID
📝 Despublicar Artigo por TítuloDespublique seus próprios artigos por título
📝 Excluir ArtigoExclua seus próprios artigos

🧠 Ferramentas de Análise

RecursoDescrição
🧠 Analisar ArtigoAnalise um artigo específico (baseado em prompt, saída de resumo)
🧠 Analisar Perfil do UsuárioAnalise um perfil de usuário específico (baseado em prompt, saída de resumo)

Nota: As ferramentas de análise fornecem resumos e insights em linguagem natural, não despejos de dados brutos.


📝 Licença

Este projeto é licenciado sob a GNU Affero General Public License v3.0 (AGPLv3).

AVISO DE USO COMERCIAL

Se você quiser usar ou implantar este código de qualquer forma como um serviço monetizado para outros, mesmo que você não exija especificamente pagamento pelo código, você precisa entrar em contato comigo para obter permissão (isso significa VOCÊ Smithery/Glama ou QUALQUER serviço similar) - que só será concedida após o pagamento da taxa de licenciamento apropriada. Não, você pode não estar cobrando pelo uso do código em si, e pode estar fornecendo a infraestrutura, mas você estaria usando MEU código para facilitar SEU serviço. Isso é uma dependência intrínseca que DEVE ser licenciada.

Para qualquer outra pessoa, seja você uma empresa ou indivíduo, espero que seja útil para você. Aproveite.


⚙️ Configuração do Servidor

O servidor pode ser configurado usando as seguintes variáveis de ambiente:

Variável de AmbienteDescriçãoPadrão
PORTPorta para executar o servidor8000
LOG_LEVELNível de registro (INFO, DEBUG, etc.)INFO

🔐 Autenticação do Cliente

Cada cliente precisa fornecer sua própria chave de API do Dev.to para operações autenticadas. Isso é feito com segurança fornecendo a chave de API como uma variável de ambiente na configuração do servidor MCP do cliente.

Nota: A chave deve ser fornecida como DEVTO_API_KEY na seção de ambiente da configuração do seu cliente MCP.


🚀 Começando

🐳 Executando com Docker

  1. Clone o repositório:
git clone https://github.com/rawveg/devtomcp.git
cd devtomcp
  1. Construa e execute com Docker Compose:
docker-compose up --build

O servidor estará disponível em http://localhost:8000 com o endpoint SSE em http://localhost:8000/sse.


🛠️ Ferramentas MCP

Analisando Conteúdo

  • analyse_article - Analise um artigo específico
  • analyse_user_profile - Analise um usuário específico

Navegando pelo Conteúdo

  • browse_latest_articles() - Obtenha os artigos mais recentes do Dev.to
  • browse_popular_articles() - Obtenha os artigos mais populares
  • browse_articles_by_tag(tag) - Obtenha artigos com uma tag específica

Lendo Conteúdo

  • get_article(id) - Obtenha informações detalhadas sobre um artigo específico
  • get_user_profile(username) - Obtenha informações sobre um usuário do Dev.to

Pesquisando Conteúdo

  • search_articles(query, page=1) - Pesquise artigos usando palavras-chave
  • search_articles_by_user(username, page=1) - Pesquise todos os artigos de um usuário específico

Gerenciando Conteúdo (requer autenticação)

  • list_my_articles(page=1, per_page=30) - Liste seus próprios artigos publicados
  • list_my_draft_articles(page=1, per_page=30) - Liste seus próprios artigos rascunho
  • list_my_unpublished_articles(page=1, per_page=30) - Liste seus próprios artigos não publicados
  • create_article(title, content, tags="", published=False) - Crie um novo artigo
  • update_article(id, title=None, content=None, tags=None, published=None) - Atualize um artigo existente
  • delete_article(id) - Exclua um artigo existente
  • publish_article_by_id(id) - Publique seus próprios artigos por ID
  • publish_article_by_title(title) - Publique seus próprios artigos por título
  • unpublish_article_by_id(id) - Despublique seus próprios artigos por ID
  • unpublish_article_by_title(title) - Despublique seus próprios artigos por título
  • update_article_by_title(title, new_title=None, content=None, tags=None, published=None) - Atualize um artigo existente por título (resolve para ID)

🌐 API REST & Servidor de Ferramentas OpenAPI

O Servidor MCP Dev.to agora suporta operação em modo duplo:

ModoDescrição
🟢 SSE/MCPPara integração LLM/agente, usando o Model Context Protocol (MCP)
🟦 REST/OpenAPIPara acesso HTTP direto, executores de ferramentas OpenAPI e ferramentas compatíveis com OpenAI

🚦 Alternando Modos

Defina o modo no seu arquivo .env:

SERVER_MODE=sse   # For SSE/MCP (default)
# or
SERVER_MODE=rest  # For REST API & OpenAPI toolserver

🔑 Autenticação no Modo REST

  • Forneça sua chave de API do Dev.to no cabeçalho Authorization como um token Bearer:
    Authorization: Bearer YOUR_DEVTO_API_KEY
    
  • Não é necessário definir DEVTO_API_KEY em .env para o modo REST.

📖 OpenAPI & Swagger UI

🧑‍💻 Exemplo: Listar Meus Artigos (REST)

curl -X GET "http://localhost:8000/list_my_articles?page=1&per_page=30&max_pages=10" \
  -H "Authorization: Bearer YOUR_DEVTO_API_KEY"

🛠️ Endpoints REST

  • Todas as principais ferramentas estão disponíveis como endpoints REST (veja /docs para detalhes)
  • Cada endpoint inclui metadados OpenAPI ricos, exemplos e tags para fácil descoberta
  • update_article_by_title - Atualize seus próprios artigos por título (resolve para ID)

🤖 Por Que Isso Importa

  • Use como uma API REST tradicional, um servidor de ferramentas OpenAPI ou um provedor de ferramentas LLM/agente—tudo a partir de um único código!
  • Plug-and-play com OpenAI, LangChain e qualquer cliente compatível com OpenAPI
  • Documentação interativa e bonita pronta para uso

🖥️ Configuração do Cliente

Configuração do Claude Desktop

Adicione o servidor MCP no config.json do Claude Desktop:

{
  "mcpServers": {
    "devto": {
      "url": "http://localhost:8000/sse"
    }
  }
}

Configuração do Cursor

Adicione o servidor MCP na configuração do Cursor:

{
  "mcpServers": {
    "devto": {
      "url": "http://localhost:8000/sse"
    }
  }
}

NOTA

Alguns clientes podem exigir o uso de serverUrl em vez de url, por exemplo: IDE Windsurf da Codium.

Acesso Programático com Python

import asyncio
import os
from fastmcp.client import Client

async def main():
    # Set environment variable for authentication
    os.environ["DEVTO_API_KEY"] = "your_dev_to_api_key_here"
    
    # Connect to the MCP server
    client = Client("http://localhost:8000/sse")
    
    # Use the client
    async with client:
        # Get popular articles
        results = await client.call_tool("browse_popular_articles", {})
        print(results)

if __name__ == "__main__":
    asyncio.run(main())

☁️ Implantando no Google Cloud Run

Para implantar no Google Cloud Run:

  1. Siga o Início Rápido do Google Cloud Run para configurar seu ambiente

  2. Configure sua chave de API do Dev.to como um segredo:

    gcloud secrets create devto-api-key --data-file=- <<< "your_api_key_here"
    
  3. Implante com o segredo montado no modo SSE:

    gcloud run deploy devtomcp \
       --source . \
       --platform managed \
       --allow-unauthenticated \
       --region [REGION] \
       --set-env-vars="LOG_LEVEL=<<LOG_LEVEL>>" \
       --set-env-vars="DEVTO_API_KEY=<<DEVTO_API_KEY>>" \
       --set-env-vars="SERVER_MODE=sse" \
       --set-env-vars="DEVTO_API_BASE_URL=<<DEVTO_API_BASE_URL>>" \
       --format="json"
    

    Variáveis de Ambiente

    VariávelDescriçãoPadrão
    LOG_LEVELNível de registro (INFO, DEBUG, etc.)INFO
    DEVTO_API_KEYChave de API do Dev.toNone
    DEVTO_API_BASE_URLURL base da API do Dev.tohttps://dev.to/api
    SERVER_MODEO modo do servidor para implantarsse

    Essas variáveis devem ser definidas na linha de comando para gcloud run deploy, pois o arquivo .env não é montado no contêiner.

    Implantação alternativa no modo REST com Ferramentas OpenAPI:

    gcloud run deploy devtomcp \
       --source . \
       --platform managed \
       --allow-unauthenticated \
       --region [REGION] \
       --set-env-vars="LOG_LEVEL=<<LOG_LEVEL>>" \
       --set-env-vars="SERVER_MODE=rest" \
       --set-env-vars="DEVTO_API_BASE_URL=<<DEVTO_API_BASE_URL>>" \
       --format="json"
    

    Variáveis de Ambiente

    VariávelDescriçãoPadrão
    LOG_LEVELNível de registro (INFO, DEBUG, etc.)INFO
    SERVER_MODEModo do servidor para implantarrest
    DEVTO_API_BASE_URLURL base da API do Dev.tohttps://dev.to/api

    Essas variáveis devem ser definidas na linha de comando para gcloud run deploy, pois o arquivo .env não é montado no contêiner.

Seleção de Região A região deve ser selecionada de acordo com a região do seu projeto associado. Uma lista de regiões disponíveis pode ser encontrada aqui.

⚠️ Aviso de Segurança - Modo SSE:

  • O sinalizador --allow-unauthenticated torna seu servidor publicamente acessível

  • Como este é um servidor de usuário único com sua chave de API, você DEVE implementar medidas de segurança adicionais:

  • Ao implantar no modo REST (recomendado para Cloud Run), as considerações de segurança acima não se aplicam, pois cada solicitação ao servidor neste modo precisa ser acompanhada por um Token Bearer de Autorização Authorization: Bearer <<your_dev_to_api_key_here>>, limitando imediatamente o acesso destrutivo.

Veja GCP_DEPLOYMENT.md para instruções detalhadas de configuração de segurança.


⚠️ Tratamento de Erros

O servidor retorna respostas de erro MCP padrão:

{
  "status": "error",
  "message": "Error description",
  "code": 401
}

Códigos de erro comuns:

  • 401: Falha na autenticação (chave de API ausente ou inválida)
  • 404: Recurso não encontrado
  • 422: Parâmetros inválidos
  • 500: Erro do servidor

🔒 Considerações de Segurança

  • O servidor usa variáveis de ambiente para configuração da chave de API, fornecendo isolamento de segurança adequado
  • Cada conexão de cliente usa sua própria chave de API configurada
  • Todo o manuseio de credenciais de API acontece no lado do servidor
  • Use HTTPS em ambientes de produção
  • Use gerenciamento seguro de segredos para chaves de API em implantações em nuvem

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.


🙏 Agradecimentos


📬 Contato

Para perguntas, sugestões ou suporte, por favor abra uma issue.