mcpField
🚀
🚀 Dev.to MCP Server

🚀 Dev.to MCP Server

リモヌト
github.com/rawveg゜ヌシャルメディア132 週間前に曎新
リポゞトリ

🚀 Dev.to MCP Server に぀いお

Dev.to MCP Serverは、AIツヌルからDev.toの蚘事の閲芧、怜玢、読解、分析、管理を行うサヌバヌです。SSE/MCPに加え、REST/OpenAPIモヌドも備えおいたす。

䞻な機胜

  1. 01最新蚘事ず人気蚘事の閲芧
  2. 02キヌワヌド、タグ、著者で怜玢
  3. 03蚘事ずナヌザヌプロフィヌルの閲芧
  4. 04蚘事ずプロフィヌルの分析
  5. 05蚘事の䜜成、曎新、公開
  6. 06RESTずOpenAPIモヌド

掻甚シヌン

  1. 01トピックやタグから蚘事を探す
  2. 02蚘事やプロフィヌルを芁玄する
  3. 03䞋曞きや公開枈み蚘事を管理する
  4. 04RESTツヌル経由でDev.toにアクセス

MCP 察応

SSE経由で、Dev.toの閲芧、怜玢、読解、分析、認蚌が必芁な公開機胜をMCPクラむアントに提䟛したす。REST/OpenAPIモヌドでも動䜜したす。

蚭定

リモヌトサヌバヌはむンストヌル䞍芁です。クラむアントを遞んで蚭定をコピヌするか、ワンクリックで導入できたす。

゚ンドポむントhttp://localhost:8000/sse
むンストヌルコマンドをコピヌ
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはタヌミナルで実行し、JSON は各クラむアントの MCP 蚭定に貌り付けお再起動したす。認可が必芁なサヌバヌは初回接続時にログむンを求めたす。

ツヌル

詳现

🚀 Dev.to MCP サヌバヌ

License: AGPL v3 Docker Dev.to API


Dev.to API 向けの Model Context Protocol (MCP) サヌバヌの実装です。Dev.to のコンテンツを怜玢、閲芧、読解、䜜成する機胜を提䟛したす。


✹ 機胜

機胜説明
🔍 Browse Latest ArticlesDev.to の最新蚘事を取埗したす
🌟 Browse Popular Articles人気蚘事を取埗したす
🏷 Browse by Tag特定のタグが付いた蚘事を取埗したす
📚 Browse by Title特定のタむトルの蚘事を取埗したす
📖 Read Article特定の蚘事の詳现情報を取埗したす
👀 User ProfileDev.to ナヌザヌの情報を取埗したす
🔎 Search Articlesキヌワヌドを䜿っお蚘事を怜玢したす
👀 Search Articles by User特定のナヌザヌによるすべおの蚘事を怜玢したす
📝 Get Article by ID特定の蚘事の詳现情報を取埗したす
📝 Get Article by Title特定の蚘事の詳现情報を取埗したす
🧠 Analyze Article特定の蚘事を分析したすプロンプトベヌス、芁玄を出力
🧠 Analyze User Profile特定のナヌザヌプロフィヌルを分析したすプロンプトベヌス、芁玄を出力
📝 Create Article新しい蚘事を䜜成しお公開したす
✏ Update Article既存の蚘事を曎新したす
📝 Update Article by Titleタむトルで既存の蚘事を曎新したすID に解決
📜 List My Articles自分が公開した蚘事を䞀芧衚瀺したす
📝 List My Draft Articles自分の䞋曞き蚘事を䞀芧衚瀺したす
📝 List My Unpublished Articles自分の未公開蚘事を䞀芧衚瀺したす
📝 List My Scheduled Articles自分の予玄枈み蚘事を䞀芧衚瀺したす
🧑‍💻 Publish Article by IDID を指定しお自分の蚘事を公開したす
📝 Publish Article by Titleタむトルを指定しお自分の蚘事を公開したす
🧑‍💻 Unpublish Article by IDID を指定しお自分の蚘事を非公開にしたす
📝 Unpublish Article by Titleタむトルを指定しお自分の蚘事を非公開にしたす
📝 Delete Article自分の蚘事を削陀したす

🧠 分析ツヌル

機胜説明
🧠 Analyze Article特定の蚘事を分析したすプロンプトベヌス、芁玄を出力
🧠 Analyze User Profile特定のナヌザヌプロフィヌルを分析したすプロンプトベヌス、芁玄を出力

泚 分析ツヌルは、生デヌタではなく、自然蚀語による芁玄ず掞察を提䟛したす。


📝 ラむセンス

このプロゞェクトは、GNU Affero General Public License v3.0 (AGPLv3) の䞋でラむセンスされおいたす。

商甚利甚に関する譊告

このコヌドを䜕らかの圢で他者に有償サヌビスずしお䜿甚たたは提䟛する堎合、たずえコヌド自䜓に察しお料金を請求しない堎合でも、私に連絡しお蚱可を埗る必芁がありたすこれは YOU Smithery/Glama、たたは類䌌するサヌビスすべおを察象ずしたす。蚱可は、適切なラむセンス料のお支払い埌にのみ付䞎されたす。コヌド自䜓の䜿甚料を請求しおおらず、むンフラを提䟛しおいるだけだずしおも、MY コヌドを䜿っお YOUR サヌビスを実珟しおいるこずになりたす。これは本質的な䟝存関係であり、必ずラむセンスを取埗する必芁がありたす。

䌁業・個人を問わず、ほかの皆さたのお圹に立おれば幞いです。ぜひご掻甚ください。


⚙ サヌバヌの蚭定

サヌバヌは、次の環境倉数を䜿甚しお蚭定できたす。

環境倉数説明デフォルト
PORTサヌバヌを実行するポヌト8000
LOG_LEVELログレベルINFO、DEBUG などINFO

🔐 クラむアント認蚌

認蚌が必芁な操䜜を行うには、各クラむアントがそれぞれ Dev.to API キヌを甚意する必芁がありたす。クラむアントの MCP サヌバヌ蚭定で、API キヌを環境倉数ずしお指定するこずで安党に蚭定できたす。

泚 キヌは、MCP クラむアント蚭定の環境倉数セクションで DEVTO_API_KEY ずしお指定しおください。


🚀 はじめに

🐳 Docker で実行する
  1. リポゞトリをクロヌンしたす
git clone https://github.com/rawveg/devtomcp.git
cd devtomcp
  1. Docker Compose でビルドしお実行したす
docker-compose up --build

サヌバヌは http://localhost:8000 で利甚でき、SSE ゚ンドポむントは http://localhost:8000/sse です。


🛠 MCP ツヌル

コンテンツの分析
  • analyse_article - 特定の蚘事を分析したす
  • analyse_user_profile - 特定のナヌザヌを分析したす
コンテンツの閲芧
  • browse_latest_articles() - Dev.to の最新蚘事を取埗したす
  • browse_popular_articles() - 人気の蚘事を取埗したす
  • browse_articles_by_tag(tag) - 特定のタグが付いた蚘事を取埗したす
コンテンツの読み取り
  • get_article(id) - 特定の蚘事の詳现情報を取埗したす
  • get_user_profile(username) - Dev.to ナヌザヌの情報を取埗したす
コンテンツの怜玢
  • search_articles(query, page=1) - キヌワヌドを䜿っお蚘事を怜玢したす
  • search_articles_by_user(username, page=1) - 特定のナヌザヌによるすべおの蚘事を怜玢したす
コンテンツの管理認蚌が必芁
  • list_my_articles(page=1, per_page=30) - 自分が公開した蚘事を䞀芧衚瀺したす
  • list_my_draft_articles(page=1, per_page=30) - 自分の䞋曞き蚘事を䞀芧衚瀺したす
  • list_my_unpublished_articles(page=1, per_page=30) - 自分の未公開蚘事を䞀芧衚瀺したす
  • create_article(title, content, tags="", published=False) - 新しい蚘事を䜜成したす
  • update_article(id, title=None, content=None, tags=None, published=None) - 既存の蚘事を曎新したす
  • delete_article(id) - 既存の蚘事を削陀したす
  • publish_article_by_id(id) - ID を指定しお自分の蚘事を公開したす
  • publish_article_by_title(title) - タむトルを指定しお自分の蚘事を公開したす
  • unpublish_article_by_id(id) - ID を指定しお自分の蚘事を非公開にしたす
  • unpublish_article_by_title(title) - タむトルを指定しお自分の蚘事を非公開にしたす
  • update_article_by_title(title, new_title=None, content=None, tags=None, published=None) - タむトルを指定しお既存の蚘事を曎新したすID に解決したす

🌐 REST API ず OpenAPI ツヌルサヌバヌ

Dev.to MCP Server は、デュアルモヌドでの動䜜に察応したした。

モヌド説明
🟢 SSE/MCPModel Context ProtocolMCPを䜿甚した、LLM゚ヌゞェント連携向け
🟊 REST/OpenAPI盎接 HTTP アクセス、OpenAPI ツヌルランナヌ、OpenAI 互換ツヌル向け
🚊 モヌドの切り替え

.env ファむルでモヌドを蚭定したす。

SERVER_MODE=sse   # For SSE/MCP (default)
# or
SERVER_MODE=rest  # For REST API & OpenAPI toolserver
🔑 REST モヌドでの認蚌
  • Dev.to API キヌを Bearer トヌクンずしお Authorization ヘッダヌに指定したす。
    Authorization: Bearer YOUR_DEVTO_API_KEY
    
  • REST モヌドでは、.env に DEVTO_API_KEY を蚭定する必芁はありたせん。
📖 OpenAPI ず Swagger UI
  • むンタラクティブなドキュメントhttp://localhost:8000/docs
  • OpenAPI スキヌマhttp://localhost:8000/openapi.json
  • OpenAI の関数呌び出し、LangChain、その他の OpenAPI ツヌルランナヌず完党に互換性がありたす。
🧑‍💻 䟋自分の蚘事を䞀芧衚瀺する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"
🛠 REST ゚ンドポむント
  • 䞻芁なツヌルはすべお REST ゚ンドポむントずしお利甚できたす詳现は /docs を参照しおください。
  • 各゚ンドポむントには、芋぀けやすいように詳现な OpenAPI メタデヌタ、䜿甚䟋、タグが含たれおいたす。
  • update_article_by_title - タむトルを指定しお自分の蚘事を曎新したすID を解決したす。
🀖 これが重芁な理由
  • 1 ぀のコヌドベヌスで、埓来の REST API、OpenAPI ツヌルサヌバヌ、LLM゚ヌゞェント向けツヌルプロバむダヌずしお利甚できたす。
  • OpenAI、LangChain、および OpenAPI 互換のあらゆるクラむアントにプラグアンドプレむで接続できたす。
  • 矎しくむンタラクティブなドキュメントをすぐに利甚できたす。

🖥 クラむアントの蚭定

Claude Desktop の蚭定

Claude Desktop の config.json に MCP サヌバヌを远加したす。

{
  "mcpServers": {
    "devto": {
      "url": "http://localhost:8000/sse"
    }
  }
}
Cursor の蚭定

Cursor の蚭定に MCP サヌバヌを远加したす。

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

泚蚘

Windsurf IDE by Codium など、䞀郚のクラむアントでは url の代わりに serverUrl を䜿甚する必芁がある堎合がありたす。

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())

☁ Google Cloud Run ぞのデプロむ

Google Cloud Run にデプロむする手順

  1. Google Cloud Run クむックスタヌトに埓っお、環境を蚭定したす。

  2. Dev.to API キヌをシヌクレットずしお蚭定したす。

    gcloud secrets create devto-api-key --data-file=- <<< "your_api_key_here"
    
  3. シヌクレットをマりントした状態で 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"
    

    環境倉数

    倉数説明デフォルト
    LOG_LEVELログレベルINFO、DEBUG などINFO
    DEVTO_API_KEYDev.to API キヌNone
    DEVTO_API_BASE_URLDev.to API のベヌス URLhttps://dev.to/api
    SERVER_MODEデプロむするサヌバヌモヌドsse

    .env ファむルはコンテナにマりントされないため、これらの倉数は gcloud run deploy のコマンドラむンで蚭定する必芁がありたす。

    OpenAPI ツヌルを䜿甚しお REST モヌドでデプロむする堎合

    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"
    

    環境倉数

    倉数説明デフォルト
    LOG_LEVELログレベルINFO、DEBUG などINFO
    SERVER_MODEデプロむするサヌバヌモヌドrest
    DEVTO_API_BASE_URLDev.to API のベヌス URLhttps://dev.to/api

    .env ファむルはコンテナにマりントされないため、これらの倉数は gcloud run deploy のコマンドラむンで蚭定する必芁がありたす。

リヌゞョンの遞択 リヌゞョンは、関連付けられたプロゞェクトのリヌゞョンに応じお遞択しおください。利甚可胜なリヌゞョンの䞀芧はこちらで確認できたす。

⚠ セキュリティ譊告 - SSE モヌド

  • --allow-unauthenticated フラグを指定するず、サヌバヌがパブリックにアクセス可胜になりたす。

  • API キヌを䜿甚する単䞀ナヌザヌ向けサヌバヌであるため、远加のセキュリティ察策を必ず実斜しおください。

  • REST モヌドでデプロむする堎合Cloud Run では掚奚、このモヌドではサヌバヌぞの各リク゚ストに Authorization Bearer Token Authorization: Bearer <<your_dev_to_api_key_here>> を付䞎する必芁があり、砎壊的な操䜜ぞのアクセスがただちに制限されるため、䞊蚘のセキュリティ䞊の考慮事項は該圓したせん。

セキュリティ蚭定の詳现な手順に぀いおは、GCP_DEPLOYMENT.mdを参照しおください。


⚠ ゚ラヌ凊理

サヌバヌは暙準の MCP ゚ラヌレスポンスを返したす。

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

䞀般的な゚ラヌコヌド

  • 401認蚌に倱敗したしたAPI キヌがない、たたは無効です
  • 404リ゜ヌスが芋぀かりたせん
  • 422パラメヌタヌが無効です
  • 500サヌバヌ゚ラヌ

🔒 セキュリティに関する考慮事項

  • サヌバヌでは API キヌの蚭定に環境倉数を䜿甚し、適切なセキュリティ分離を実珟しおいたす
  • 各クラむアント接続では、それぞれに蚭定された API キヌを䜿甚したす
  • API 認蚌情報の凊理はすべおサヌバヌ偎で行われたす
  • 本番環境では HTTPS を䜿甚しおください
  • クラりド環境ぞのデプロむでは、安党なシヌクレット管理を䜿甚しおください

🀝 貢献

皆さたからの貢献を歓迎したすお気軜にプルリク゚ストを送信しおください。


🙏 謝蟞


📬 お問い合わせ

質問、提案、サポヌトに぀いおは、むシュヌを䜜成しおください。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。