# DevTo MCP

> Production-ready MCP server for DEV Community (Forem) API. AI-native integration for managing articles, comments, users, tags, organizations, and reading lists. Built with TypeScript and comprehensive error handling.

- **Type:** MCP server
- **Install:** `agentstack add mcp-furkankoykiran-devto-mcp`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [furkankoykiran](https://agentstack.voostack.com/s/furkankoykiran)
- **Installs:** 0
- **Category:** [Integrations](https://agentstack.voostack.com/c/integrations)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [furkankoykiran](https://github.com/furkankoykiran)
- **Source:** https://github.com/furkankoykiran/DevTo-MCP
- **Website:** https://www.npmjs.com/package/@furkankoykiran/devto-mcp

## Install

```sh
agentstack add mcp-furkankoykiran-devto-mcp
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# DevTo-MCP

A production-ready [Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for the [DEV Community](https://dev.to) (Forem) API. Manage articles, comments, users, tags, organizations, and more through any MCP-compatible client.

[](https://github.com/furkankoykiran/DevTo-MCP/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@furkankoykiran/devto-mcp)
[](https://opensource.org/licenses/MIT)
[](https://nodejs.org)
[](https://www.typescriptlang.org)

## Quick Start

### Install in VS Code

Install the DevTo MCP server in VS Code with one click:

[](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22devto%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40furkankoykiran%2Fdevto-mcp%22%5D%2C%22env%22%3A%7B%22DEVTO_API_KEY%22%3A%22YOUR_API_KEY%22%7D%7D)

> **Note:** After installing, replace `YOUR_API_KEY` with your actual DEV Community API key from [dev.to/settings/extensions](https://dev.to/settings/extensions).

### Install in Claude Desktop

Add to your `claude_desktop_config.json`:

```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:

```json
{
  "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](https://developers.forem.com/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](https://dev.to/settings/extensions)

## Installation

### Using npx (recommended)

```bash
DEVTO_API_KEY=your_key npx -y @furkankoykiran/devto-mcp
```

### Global install

```bash
npm install -g @furkankoykiran/devto-mcp
```

### From source

```bash
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:

```bash
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-After` headers; surfaces `x-ratelimit-remaining` in error messages
- **Structured Errors**: `ForemApiError` includes status code, endpoint, HTTP method, request ID, and rate-limit info

## Known Limitations

- **Reactions**: The `toggle_reaction` tool 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_id` uses 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

```bash
# 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](CONTRIBUTING.md) for guidelines.

## Security

For security concerns, please see [SECURITY.md](SECURITY.md).

## License

This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.

## Acknowledgments

- [DEV Community](https://dev.to) for their excellent API
- [Model Context Protocol](https://modelcontextprotocol.io) for the MCP standard
- [Forem](https://forem.com) for the open-source platform

## Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [furkankoykiran](https://github.com/furkankoykiran)
- **Source:** [furkankoykiran/DevTo-MCP](https://github.com/furkankoykiran/DevTo-MCP)
- **License:** MIT
- **Homepage:** https://www.npmjs.com/package/@furkankoykiran/devto-mcp

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/mcp-furkankoykiran-devto-mcp
- Seller: https://agentstack.voostack.com/s/furkankoykiran
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
