DevTo-MCP
A production-ready MCP server for the DEV Community (Forem) API, enabling management of articles, comments, users, tags, organizations, reading list, and followers through any MCP-compatible client.
README
DevTo-MCP
A production-ready Model Context Protocol (MCP) server for the DEV Community (Forem) API. Manage articles, comments, users, tags, organizations, and more through any MCP-compatible client.
Quick Start
Install in VS Code
Install the DevTo MCP server in VS Code with one click:
Note: After installing, replace
YOUR_API_KEYwith your actual DEV Community API key from dev.to/settings/extensions.
Install in Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}
Install in Cursor
Add to your Cursor MCP settings:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}
Features
- 17 tools across 8 domains for comprehensive DEV Community interaction
- Full Forem API V1 support with proper authentication headers
- Robust API client with request timeouts, automatic retries with exponential backoff, and rate-limit awareness
- Written in TypeScript with strict type safety
- Zod input validation on all tool parameters
- Structured error messages with status codes, endpoints, and request IDs
- Zero external HTTP dependencies (uses native
fetch)
Prerequisites
- Node.js 18 or higher
- DEV Community API Key — Get yours at dev.to/settings/extensions
Installation
Using npx (recommended)
DEVTO_API_KEY=your_key npx -y @furkankoykiran/devto-mcp
Global install
npm install -g @furkankoykiran/devto-mcp
From source
git clone https://github.com/furkankoykiran/DevTo-MCP.git
cd DevTo-MCP
npm install
npm run build
Configuration
Set your DEV Community API key as an environment variable:
export DEVTO_API_KEY=your_api_key_here
Available Tools
Articles
| Tool | Description |
|---|---|
get_articles |
List published articles with filters (tag, username, state, top, pagination) |
get_article_by_id |
Get full article details by numeric ID |
create_article |
Create a new article or draft |
update_article |
Update an existing article |
get_my_articles |
Get authenticated user's articles (published, unpublished, or all) |
Comments
| Tool | Description |
|---|---|
get_comments |
Get threaded comments for an article or podcast episode |
get_comment_by_id |
Get a single comment by ID code |
Users
| Tool | Description |
|---|---|
get_authenticated_user |
Get the authenticated user's profile |
get_user_by_username |
Get any user's public profile |
Tags
| Tool | Description |
|---|---|
get_tags |
List available tags with pagination |
get_followed_tags |
Get tags followed by the authenticated user |
Organizations
| Tool | Description |
|---|---|
get_organization |
Get organization details by username |
get_organization_articles |
List an organization's published articles |
get_organization_users |
List users in an organization |
Reading List
| Tool | Description |
|---|---|
get_reading_list |
Get the authenticated user's bookmarked articles |
Followers
| Tool | Description |
|---|---|
get_followers |
Get the authenticated user's followers |
Error Handling & Resilience
The API client includes production-grade resilience features:
- Timeouts: All requests have a 30-second timeout via
AbortSignal - Retries: Automatic retry with exponential backoff (1s → 2s → 4s) for transient errors (HTTP 429, 5xx)
- Rate Limiting: Respects
Retry-Afterheaders; surfacesx-ratelimit-remainingin error messages - Structured Errors:
ForemApiErrorincludes status code, endpoint, HTTP method, request ID, and rate-limit info
Known Limitations
- Reactions: The
toggle_reactiontool is currently disabled due to API 401 Unauthorized errors, likely caused by insufficient scopes on standard API keys. This feature may be re-enabled in a future release if API permissions are clarified. - Draft Articles: Retrieval of draft articles via
get_article_by_iduses a fallback mechanism (searching user's full article list) because the public endpoint does not support drafts. This ensures seamless access for authenticated users.
Environment Variables
| Variable | Required | Description |
|---|---|---|
DEVTO_API_KEY |
Yes | Your DEV Community API key |
Development
# Install dependencies
npm install
# Build
npm run build
# Lint
npm run lint
# Type check
npm run typecheck
# Unit tests
npm test
# Integration tests (requires DEVTO_API_KEY)
DEVTO_API_KEY=your_key npm run test:integration
# Run locally
DEVTO_API_KEY=your_key node dist/index.js
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Security
For security concerns, please see SECURITY.md.
License
This project is licensed under the MIT License — see the LICENSE file for details.
Acknowledgments
- DEV Community for their excellent API
- Model Context Protocol for the MCP standard
- Forem for the open-source platform
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.