DevTo Agent について
DevTo Agentは、Dev.toのユーザー向けに記事やアカウント操作を自動化するマルチエージェントシステムです。Google ADKのエージェントとDev.to APIを組み合わせ、A2AとMCPのインターフェースを提供します。
主な機能
- 01ページ、タグ、作者別の記事取得
- 02Markdown記事の生成と公開
- 03プロフィールと読書リストの取得
- 04コメントとフォロワーの管理
- 05SSEとSTDIOによる通信
活用シーン
- 01タグに合うDev.to記事の検索
- 02Markdown記事の作成と公開
- 03アカウント情報と保存済み記事の取得
MCP 対応
MCPサーバーは、Dev.toの記事、投稿、プロフィール、読書リストを操作するツールをMCPクライアントに公開します。SSEとSTDIOのインターフェースに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DevTo エージェント
Google ADK(Agent Development Kit)と Model Context Protocol(MCP)を使用して構築された、Dev.to(DevTo)プラットフォームとやり取りするための包括的なマルチエージェントシステムです。このプロジェクトでは、エージェント間(A2A)通信と MCP サーバーの実装を通じて、DevTo のコンテンツ作成、記事管理、ユーザープロフィールとのやり取りを自動化できます。
解説ブログはこちらをご覧ください:こちら
プロジェクトの概要
このプロジェクトでは、次の機能を備えた高度なエージェントアーキテクチャを実装しています。
- タグまたは著者で DevTo の記事を取得、管理する
- DevTo 向けの Markdown コンテンツを生成して投稿する
- ユーザープロフィールと読書リストを取得する
- 記事へのコメントとフォロワーを管理する
- さまざまな統合ニーズに対応する SSE(Server-Sent Events)と STDIO の両インターフェースを提供する
目次
アーキテクチャの概要
このプロジェクトは、次の3つの主要な通信パターンを持つモジュール式アーキテクチャを採用しています。
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Client App │───▶│ A2A Server │───▶│ DevTo API │
│ (main.py) │ │ (devto_agent) │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ ▲
│ ▼ │
│ ┌─────────────────┐ │
└─────────────▶│ MCP Server │──────────────┘
│ (SSE/STDIO) │
└─────────────────┘
主なコンポーネント:
- A2A エージェントサーバー:Google ADK を使用した高レベルのエージェントインターフェース
- MCP サーバー:Model Context Protocol を使用した低レベルのツールインターフェース
- DevTo サービス:Dev.to との直接 API 統合
- ツールコネクター:エージェントと MCP サーバー間のブリッジ
プロジェクト構成
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
コンポーネントの詳細
1. A2A サーバー(a2a_servers/)
目的:Google ADK フレームワークを使用して、高レベルのエージェントインターフェースを実装します。
主なファイル:
-
devto_agent.py:次の処理を担当するメインの DevTo エージェント:- DevTo 記事向けのコンテンツ生成
- 記事の取得と管理
- ユーザープロフィール操作
- Markdown 対応の記事投稿
-
host_agent.py:複数のサブエージェントを管理できるコーディネーターエージェント -
adk_agent.py:Google ADK と MCP ツールを統合するラッパークラス
2. MCP サーバー(mcp_servers/)
目的:Model Context Protocol を使用して、低レベルのツールインターフェースを提供します。
SSE 実装(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 サービス(services/devto_service.py)
目的:DevTo API と直接統合します。
主なメソッド:
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. ツールコネクター(connector/tools/)
目的:A2A エージェントと MCP サーバー間のブリッジです。
DevTo ツールコネクター:
- MCP サーバーへの接続を確立します
- エージェント向けに非同期のツールインターフェースを提供します
- 接続ライフサイクルの管理を行います
セットアップとインストール
前提条件
- Python 3.10 以降
- サーバーの実行に使用する Uvicorn
- DevTo API キー
- Google API キー(エージェント機能用)
インストール手順
-
リポジトリをクローンします:
git clone https://github.com/HeetVekariya/devto-agent.git cd devto-agent -
環境を設定します: プロジェクトのルートに
.envファイルを作成します:DEVTO_API_KEY=your_devto_api_key_here DEVTO_BASE_URL=https://dev.to/api GOOGLE_API_KEY=your_google_api_key_here -
依存関係をインストールします:
uv pip install -e . -
Devto MCP サーバーを起動します
uv run mcp_servers/sse/devto_server.py -
Devto エージェントを起動します
uv run a2a_servers/agent_server/devto_agent.py -
ホストエージェントを起動します:
uv run a2a_servers/agent_server/host_agent.py -
クライアントアプリケーションを実行します:
uv run main.py
対話例
ユーザープロフィールの取得:
# 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"
}
記事の取得:
# Request:
"How many blogs I have published on devto ?"
# The agent response:
You have published 11 articles on Dev.to.
API リファレンス
A2A エージェントのスキル
DevTo エージェントは次のスキルを提供します。
- SKILL_DEVTO_CONTENT:DevTo 記事向けの Markdown コンテンツを生成する
- SKILL_DEVTO_ARTICLES:タグフィルターの有無を指定して記事を取得する
- SKILL_DEVTO_USER_INFO:ユーザープロフィールと統計情報を取得する
- SKILL_POST_DEVTO_ARTICLE:記事を作成して公開する
MCP ツール
MCP サーバーから次のツールを利用できます。
get_articles(page, per_page):ページ分割して記事を取得するget_articles_by_tag(tag):タグで絞り込むget_article_content(article_id):記事の全文を取得するpost_article(title, body, tags):記事を公開するget_user():ユーザープロフィール情報を取得するget_user_reading_list():保存済みの記事を取得する
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。