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.
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.
Add to your claude_desktop_config.json:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}Add to your Cursor MCP settings:
{
"mcpServers": {
"devto": {
"command": "npx",
"args": ["-y", "@furkankoykiran/devto-mcp"],
"env": {
"DEVTO_API_KEY": "your_api_key_here"
}
}
}
}- 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)
- Node.js 18 or higher
- DEV Community API Key — Get yours at dev.to/settings/extensions
DEVTO_API_KEY=your_key npx -y @furkankoykiran/devto-mcpnpm install -g @furkankoykiran/devto-mcpgit clone https://github.com/furkankoykiran/DevTo-MCP.git
cd DevTo-MCP
npm install
npm run buildSet your DEV Community API key as an environment variable:
export DEVTO_API_KEY=your_api_key_here| 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) |
| Tool | Description |
|---|---|
get_comments |
Get threaded comments for an article or podcast episode |
get_comment_by_id |
Get a single comment by ID code |
| Tool | Description |
|---|---|
get_authenticated_user |
Get the authenticated user's profile |
get_user_by_username |
Get any user's public profile |
| Tool | Description |
|---|---|
get_tags |
List available tags with pagination |
get_followed_tags |
Get tags followed by the authenticated user |
| 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 |
| Tool | Description |
|---|---|
get_reading_list |
Get the authenticated user's bookmarked articles |
| Tool | Description |
|---|---|
get_followers |
Get the authenticated user's followers |
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
- 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.
| Variable | Required | Description |
|---|---|---|
DEVTO_API_KEY |
Yes | Your DEV Community API key |
# 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.jsContributions are welcome! Please see CONTRIBUTING.md for guidelines.
For security concerns, please see SECURITY.md.
This project is licensed under the MIT License — see the LICENSE file for details.
- DEV Community for their excellent API
- Model Context Protocol for the MCP standard
- Forem for the open-source platform