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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。