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
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
| Recurso | Descrição |
|---|---|
| 🔍 Navegar pelos Artigos Mais Recentes | Obtenha os artigos mais recentes do Dev.to |
| 🌟 Navegar pelos Artigos Populares | Obtenha os artigos mais populares |
| 🏷️ Navegar por Tag | Obtenha artigos com uma tag específica |
| 📚 Navegar por Título | Obtenha artigos com um título específico |
| 📖 Ler Artigo | Obtenha informações detalhadas sobre um artigo específico |
| 👤 Perfil do Usuário | Obtenha informações sobre um usuário do Dev.to |
| 🔎 Pesquisar Artigos | Pesquise artigos usando palavras-chave |
| 👤 Pesquisar Artigos por Usuário | Pesquise todos os artigos de um usuário específico |
| 📝 Obter Artigo por ID | Obtenha informações detalhadas sobre um artigo específico |
| 📝 Obter Artigo por Título | Obtenha informações detalhadas sobre um artigo específico |
| 🧠 Analisar Artigo | Analise um artigo específico (baseado em prompt, saída de resumo) |
| 🧠 Analisar Perfil do Usuário | Analise um perfil de usuário específico (baseado em prompt, saída de resumo) |
| 📝 Criar Artigo | Crie e publique novos artigos |
| ✏️ Atualizar Artigo | Atualize seus artigos existentes |
| 📝 Atualizar Artigo por Título | Atualize seus artigos existentes por título (resolve para ID) |
| 📜 Listar Meus Artigos | Liste seus próprios artigos publicados |
| 📝 Listar Meus Artigos Rascunho | Liste seus próprios artigos rascunho |
| 📝 Listar Meus Artigos Não Publicados | Liste seus próprios artigos não publicados |
| 📝 Listar Meus Artigos Agendados | Liste seus próprios artigos agendados |
| 🧑💻 Publicar Artigo por ID | Publique seus próprios artigos por ID |
| 📝 Publicar Artigo por Título | Publique seus próprios artigos por título |
| 🧑💻 Despublicar Artigo por ID | Despublique seus próprios artigos por ID |
| 📝 Despublicar Artigo por Título | Despublique seus próprios artigos por título |
| 📝 Excluir Artigo | Exclua seus próprios artigos |
🧠 Ferramentas de Análise
| Recurso | Descrição |
|---|---|
| 🧠 Analisar Artigo | Analise um artigo específico (baseado em prompt, saída de resumo) |
| 🧠 Analisar Perfil do Usuário | Analise 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 Ambiente | Descrição | Padrão |
|---|---|---|
PORT | Porta para executar o servidor | 8000 |
LOG_LEVEL | Ní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_KEYna seção de ambiente da configuração do seu cliente MCP.
🚀 Começando
🐳 Executando com Docker
- Clone o repositório:
git clone https://github.com/rawveg/devtomcp.git
cd devtomcp
- 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íficoanalyse_user_profile- Analise um usuário específico
Navegando pelo Conteúdo
browse_latest_articles()- Obtenha os artigos mais recentes do Dev.tobrowse_popular_articles()- Obtenha os artigos mais popularesbrowse_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íficoget_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-chavesearch_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 publicadoslist_my_draft_articles(page=1, per_page=30)- Liste seus próprios artigos rascunholist_my_unpublished_articles(page=1, per_page=30)- Liste seus próprios artigos não publicadoscreate_article(title, content, tags="", published=False)- Crie um novo artigoupdate_article(id, title=None, content=None, tags=None, published=None)- Atualize um artigo existentedelete_article(id)- Exclua um artigo existentepublish_article_by_id(id)- Publique seus próprios artigos por IDpublish_article_by_title(title)- Publique seus próprios artigos por títulounpublish_article_by_id(id)- Despublique seus próprios artigos por IDunpublish_article_by_title(title)- Despublique seus próprios artigos por títuloupdate_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:
| Modo | Descrição |
|---|---|
| 🟢 SSE/MCP | Para integração LLM/agente, usando o Model Context Protocol (MCP) |
| 🟦 REST/OpenAPI | Para 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
Authorizationcomo um token Bearer:Authorization: Bearer YOUR_DEVTO_API_KEY - Não é necessário definir
DEVTO_API_KEYem.envpara o modo REST.
📖 OpenAPI & Swagger UI
- Documentação interativa: http://localhost:8000/docs
- Esquema OpenAPI: http://localhost:8000/openapi.json
- Totalmente compatível com chamada de função da OpenAI, LangChain e outros executores de ferramentas OpenAPI.
🧑💻 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
/docspara 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:
-
Siga o Início Rápido do Google Cloud Run para configurar seu ambiente
-
Configure sua chave de API do Dev.to como um segredo:
gcloud secrets create devto-api-key --data-file=- <<< "your_api_key_here" -
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ável Descrição Padrão LOG_LEVELNível de registro (INFO, DEBUG, etc.) INFODEVTO_API_KEYChave de API do Dev.to NoneDEVTO_API_BASE_URLURL base da API do Dev.to https://dev.to/apiSERVER_MODEO modo do servidor para implantar sseEssas 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ável Descrição Padrão LOG_LEVELNível de registro (INFO, DEBUG, etc.) INFOSERVER_MODEModo do servidor para implantar restDEVTO_API_BASE_URLURL base da API do Dev.to https://dev.to/apiEssas 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-unauthenticatedtorna 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:
- Use Autenticação do Cloud Run
- Configure Identity-Aware Proxy (IAP)
- Configure VPC Service Controls
- Use Controles de Ingresso
-
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.