Devto Agent
Build and deploy an autonomous Devto Agent capable of interacting with the Dev.to platform, powered by A2A (Agent-to-Agent) and MCP (Model Context Protocol)
Installation
npx devto-agentAsk AI about Devto Agent
Powered by Claude Β· Grounded in docs
I know everything about Devto Agent. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
DevTo Agent
A comprehensive multi-agent system for interacting with Dev.to (DevTo) platform, built using Google ADK (Agent Development Kit) and Model Context Protocol (MCP). This project enables automated content creation, article management, and user profile interactions with DevTo through both Agent-to-Agent (A2A) communication and MCP server implementations.
You can find follow along blog here
Project Overview
This project implements a sophisticated agent architecture that can:
- Fetch and manage DevTo articles by tags or authors
- Generate and post markdown content to DevTo
- Retrieve user profiles and reading lists
- Manage article comments and followers
- Provide both SSE (Server-Sent Events) and STDIO interfaces for different integration needs
Table of Contents
Architecture Overview
The project follows a modular architecture with three main communication patterns:
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Client App βββββΆβ A2A Server βββββΆβ DevTo API β
β (main.py) β β (devto_agent) β β β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β²
β βΌ β
β βββββββββββββββββββ β
βββββββββββββββΆβ MCP Server ββββββββββββββββ
β (SSE/STDIO) β
βββββββββββββββββββ
Key Components:
- A2A Agent Server: High-level agent interface using Google ADK
- MCP Servers: Low-level tool interface using Model Context Protocol
- DevTo Service: Direct API integration with Dev.to
- Tool Connectors: Bridge between agents and MCP servers
Project Structure
devto-agent/
βββ a2a_servers/ # Agent-to-Agent server implementations
β βββ agent_server/ # Individual agent definitions
β β βββ devto_agent.py # Main DevTo agent server
β β βββ host_agent.py # Host agent coordinator
β β βββ utils.py # Agent utilities
β βββ agents/ # Agent base classes and implementations
β β βββ adk_agent.py # Google ADK agent wrapper
β β βββ utils/ # Agent utilities
β βββ common/ # Shared components
β βββ client/ # A2A client implementations
β βββ server/ # A2A server implementations
β βββ types.py # Common type definitions
βββ connector/ # Tool connectors
β βββ tools/
β βββ devto_tools.py # DevTo MCP tool connector
βββ mcp_servers/ # Model Context Protocol servers
β βββ sse/ # Server-Sent Events implementation
β β βββ devto_server.py # SSE-based MCP server
β βββ stdio/ # Standard I/O implementation
β βββ devto_server.py # STDIO-based MCP server
βββ services/ # Core business logic
β βββ devto_service.py # DevTo API service wrapper
βββ test/ # Test files
βββ main.py # Main client application
βββ pyproject.toml # Project dependencies
Component Details
1. A2A Servers (a2a_servers/)
Purpose: Implements high-level agent interfaces using Google ADK framework.
Key Files:
-
devto_agent.py: Main DevTo agent that handles:- Content generation for DevTo articles
- Article fetching and management
- User profile operations
- Article posting with markdown support
-
host_agent.py: Coordinator agent that can manage multiple sub-agents -
adk_agent.py: Wrapper class that integrates Google ADK with MCP tools
2. MCP Servers (mcp_servers/)
Purpose: Provides low-level tool interfaces using Model Context Protocol.
SSE Implementation (sse/devto_server.py):
# Creates a Starlette web application with:
# - GET /sse: Server-Sent Events endpoint for real-time communication
# - POST /messages/: Message posting endpoint for client commands
3. DevTo Service (services/devto_service.py)
Purpose: Direct integration with DevTo API.
Core Methods:
class DevToService:
def get_articles(page, per_page) # Fetch paginated articles
def get_articles_by_tag(tag) # Filter by single tag
def get_articles_by_tags(tags) # Filter by multiple tags
def get_article_content(article_id) # Get full article content
def post_article(title, body, tags) # Create new article
def get_user() # Current user info
def get_user_articles() # User's articles
def get_user_reading_list() # User's saved articles
def get_article_comments(article_id) # Article comments
4. Tool Connectors (connector/tools/)
Purpose: Bridge between A2A agents and MCP servers.
DevTo Tools Connector:
- Establishes connection to MCP server
- Provides async tool interface for agents
- Handles connection lifecycle management
Setup and Installation
Prerequisites
- Python 3.10 or higher
- UVicorn for running servers
- DevTo API key
- Google API key (for agent functionality)
Installation Steps
-
Clone the repository:
git clone https://github.com/HeetVekariya/devto-agent.git cd devto-agent -
Environment Configuration: Create a
.envfile in the project root:DEVTO_API_KEY=your_devto_api_key_here DEVTO_BASE_URL=https://dev.to/api GOOGLE_API_KEY=your_google_api_key_here -
Install Dependencies:
uv pip install -e . -
Start the Devto MCP Server
uv run mcp_servers/sse/devto_server.py -
Start Devto Agent
uv run a2a_servers/agent_server/devto_agent.py -
Start Host Agent:
uv run a2a_servers/agent_server/host_agent.py -
Run the Client Application:
uv run main.py
Example Interactions
User Profile Fetching:
# Request:
"Retrieve my profile details"
# The agent response:
Here are your profile details:
{
"type_of": "user",
"id": ...,
"username": "heetvekariya",
"name": "HeetVekariya",
"twitter_username": "heet_2104",
"github_username": "HeetVekariya",
"summary": "A Tech person doing Non-Tech things.",
"location": "",
"website_url": "https://heet-vekariya.vercel.app/",
"joined_at": "Oct 12, 2023",
"profile_image": "....jpeg"
}
Fetch Articles:
# Request:
"How many blogs I have published on devto ?"
# The agent response:
You have published 11 articles on Dev.to.
API Reference
A2A Agent Skills
The DevTo agent provides these skills:
- SKILL_DEVTO_CONTENT: Generate markdown content for DevTo articles
- SKILL_DEVTO_ARTICLES: Fetch articles with or without tag filters
- SKILL_DEVTO_USER_INFO: Retrieve user profiles and statistics
- SKILL_POST_DEVTO_ARTICLE: Create and publish articles
MCP Tools
Available through the MCP server:
get_articles(page, per_page): Paginated article retrievalget_articles_by_tag(tag): Tag-based filteringget_article_content(article_id): Full article contentpost_article(title, body, tags): Article publishingget_user(): User profile informationget_user_reading_list(): Saved articles
