dev-to-mcp
DEV.to MCP Server — fast, single-binary Model Context Protocol server for the Forem/DEV.to API. Go + stdio, no cold starts.
Install / Use
claude mcp add tiagovilasboas -- npx -y github:tiagovilasboas/dev-to-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of dev-to-mcp
dev-to-mcp scores 81/100 on our quality scale, 732nd of 933 AI & Machine Learning skills we index.
Its MCP Server is 8.7 KB long, well organised into 10 sections with 8 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 26 days ago, so dev-to-mcp is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 92/100, with 1 caution from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
dev-to-mcp compared with similar skills
All 4 of these similar skills score higher than dev-to-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| dev-to-mcp (this skill)by tiagovilasboas | 81 | 3 | 26d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.0k | 4d ago | CLAUDE.md |
| claude-memby thedotmack | 100 | 104.2k | today | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 88.8k | 3d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.2k | today | CLAUDE.md |
Frequently asked questions
- How do I install dev-to-mcp?
- Run
claude mcp add tiagovilasboas -- npx -y github:tiagovilasboas/dev-to-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does dev-to-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is dev-to-mcp safe to use?
- It is MIT-licensed and scores 92/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is dev-to-mcp still maintained?
- The repository was last updated 26 days ago, so dev-to-mcp is actively maintained.
Skill content
View source on GitHubA Model Context Protocol (MCP) server for the DEV.to / Forem API. Your MCP client (Kiro, Cursor, Claude Desktop, VS Code, …) launches the binary on demand and talks to it over stdin/stdout. There is no port and no long-lived HTTP server to fall over.
<br>[!NOTE] AI-assisted project. This server was designed and implemented with AI assistance (pair-programmed with an agent), then reviewed and tested by a human. Every design decision, security choice, and the code itself were verified before landing. Contributions are welcome under the same bar: reviewed and tested.
🎯 Why this one?
There are other DEV.to MCP servers. Here's what makes this one different:
| | dev-to-mcp (this) | Python alternatives | Hosted gateways | |:--|:--:|:--:|:--:| | Cold start | ⚡ Instant | 🐌 Runtime + deps | 🌐 Network latency | | Dependencies | None (single binary) | Python + uv/pip | Third-party service | | Secret handling | 🔐 macOS Keychain native | Env var only | Varies | | Transport | stdio (client owns process) | stdio | HTTP | | Self-hosted | ✅ You control everything | ✅ | ❌ | | Write tools | ✅ create + update | ✅ | Sometimes | | Crash behavior | Tool error → model retries | Process dies | 5xx |
TL;DR: If you want a DEV.to MCP that starts instantly, keeps your API key in the OS vault, and never phones home — this is the one.
<br>✨ Why Go + stdio
| | |
|:--|:--|
| 📦 Single binary | No npx or node_modules download at startup — no cold-start timeout or network flakiness |
| 🔌 stdio, not HTTP | The client owns the process. No :3000 pinned in the background, no session bookkeeping |
| 🛡️ Resilient | A failed dev.to call becomes a tool error the model can read and retry, not a dead server |
| 📝 Clean channel | Logs go to stderr; stdout stays a pristine JSON-RPC stream |
Built on the official modelcontextprotocol/go-sdk.
🛠 Tools
| Tool | Auth | Description |
|:-----|:----:|:------------|
| get_articles | — | List articles; filter by username, tag, state, or top (days) |
| get_my_articles | 🔑 | List your unpublished drafts, published articles, or all articles |
| get_article | — | One article by numeric id or path (username/article-slug) |
| get_user | — | User by id or username |
| get_tags | — | Popular tags, paginated |
| get_comments | — | Comment tree for an article_id |
| search_articles | — | Search articles by query |
| create_article | 🔑 | Create an article (draft by default) |
| update_article | 🔑 | Update an article by id |
<br>Tip: Public read tools work with no key.
get_my_articlesuses the API key and defaults to unpublished drafts. Publishing iscreate_article/update_articlewithpublished: true.
📦 Install
Requires Go 1.27+.
git clone https://github.com/tiagovilasboas/dev-to-mcp.git
cd dev-to-mcp
go build -o dist/dev-to-mcp .
This produces a self-contained binary at dist/dev-to-mcp. Note the absolute path — you will point your MCP client at it.
🔑 Get a dev.to API key
The write tools need a personal API key. Generate one at:
dev.to → Settings → Extensions → DEV Community API Keys
👉 Direct link
Read tools need nothing.
<br>🔐 Store the key securely
<details open> <summary><b>macOS — Keychain</b> (recommended)</summary> <br>Never put your key in a config file that can be committed to git.
The binary reads the key straight from the macOS Keychain:
security add-generic-password -s dev-to-mcp -a "$(id -un)" -w "YOUR_DEV_TO_API_KEY" -U
That's it. The server finds it automatically (service dev-to-mcp, account = your OS user).
Native Keychain lookup is macOS-only. On Linux/Windows, feed the key through DEV_TO_API_KEY:
| Vault | Example |
|:------|:--------|
| 1Password CLI | op run -- dist/dev-to-mcp with DEV_TO_API_KEY=op://vault/dev-to/key |
| pass | DEV_TO_API_KEY=$(pass dev-to/api-key) dist/dev-to-mcp |
⚙️ Configure
Point your MCP client at the compiled binary using its absolute path.
<details open> <summary><b>Kiro</b></summary>.kiro/settings/mcp.json (workspace) or ~/.kiro/settings/mcp.json (global)
{
"mcpServers": {
"dev-to": {
"command": "/absolute/path/to/dev-to-mcp/dist/dev-to-mcp"
}
}
}
</details>
<details>
<summary><b>Cursor</b></summary>
~/.cursor/mcp.json or .cursor/mcp.json
{
"mcpServers": {
"dev-to": {
"command": "/absolute/path/to/dev-to-mcp/dist/dev-to-mcp"
}
}
}
</details>
<details>
<summary><b>Claude Desktop</b></summary>
claude_desktop_config.json
{
"mcpServers": {
"dev-to": {
"command": "/absolute/path/to/dev-to-mcp/dist/dev-to-mcp"
}
}
}
</details>
<details>
<summary><b>VS Code</b> (Continue / Cline / other MCP extensions)</summary>
{
"mcpServers": {
"dev-to": {
"command": "/absolute/path/to/dev-to-mcp/dist/dev-to-mcp"
}
}
}
</details>
<details>
<summary><b>With environment variable</b> (Linux/Windows)</summary>
Add an env block — and keep that file out of git:
{
"mcpServers": {
"dev-to": {
"command": "/absolute/path/to/dev-to-mcp/dist/dev-to-mcp",
"env": { "DEV_TO_API_KEY": "YOUR_DEV_TO_API_KEY" }
}
}
}
</details>
<br>
🛡 Security
<table> <tr> <td width="50%">What this server does
- 🔒 Vault-first key handling — on macOS the key is read from Keychain
- 🚫 The token is never logged
- 🔐 No key in the repo — nothing hardcoded
- ➡️ Token pass-through only — sent to
dev.toand nowhere else - 📄 Responses pass through unchanged — no third-party endpoints
What you should do
- Keep your key in a vault (Keychain / 1Password /
pass) - Ensure any file with
DEV_TO_API_KEYis git-ignored - Rotate the key at dev.to if you suspect exposure
<br>[!WARNING] Write tools (
create_article,update_article) publish to your real dev.to account with no extra confirmation — approval is expected from your MCP client's tool-approval prompt. Review calls before you approve.
📋 Configuration reference
All optional. Sensible defaults mean macOS users configure nothing.
| Variable | Default | Purpose |
|:---------|:--------|:--------|
| DEV_TO_API_KEY | — | API key fallback when Keychain has no entry |
| DEVTO_KEYCHAIN_SERVICE | dev-to-mcp | macOS Keychain service name |
| DEVTO_KEYCHAIN_ACCOUNT | current OS user | macOS Keychain account name |
Resolution order: Keychain → DEV_TO_API_KEY
📁 Project layout
main.go bootstrap: resolve token, build server, run stdio
internal/keychain/keychain.go read a secret from the macOS Keychain (no CGO)
internal/devto/
├── client.go HTTP transport: get / writeArticle / do
├── endpoints.go one method per dev.to endpoint
├── tools.go register the 9 MCP tools
└── inputs.go typed tool inputs + query/body builders
One responsibility per file. Responses flow back as raw dev.to JSON — the consumer is an LLM that reads JSON, so there are no response structs to keep in sync with the upstream API.
<br><p align="center"> <a href="CONTRIBUTING.md">Contributing</a> • <a href="LICENSE">License</a> </p> <p align="center"> <sub>MIT License • Made with 🤖 + 👨💻</sub> </p>
Related Skills
Agent-Reach
106.0kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
claude-mem
104.2kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Understand-Anything
88.8kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
78.2kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
