If you've been wondering how to get your AI tools talking to dev.to's content without building yet another custom integration, I've got something that might interest you. I recently built a remote Model Context Protocol (MCP) server for dev.to that makes this whole thing a lot more straightforward.
Dev.to MCP Server
A remote Model Context Protocol (MCP) server for interacting with the dev.to public API without requiring authentication.
Features
This MCP server provides access to the following dev.to public API endpoints:
- get_articles - Get articles from dev.to with optional filters (username, tag, state, pagination)
- get_article - Get a specific article by ID or path
- get_user - Get user information by ID or username
- get_tags - Get popular tags from dev.to
- get_comments - Get comments for a specific article
- search_articles - Search articles using query parameters
Installation
npm install
npm run build
Usage
The server runs as a remote HTTP server on port 3000 (or the PORT environment variable) and can be used with any MCP-compatible client.
npm start
The server will be available at http://localhost:3000
for MCP connections.
Development
# Build the project
npm run build
# Watch mode for development
npm run dev
# Linting
npm run
…Why? Well, a couple of reasons. One, I used to work at Forem, so dev.to is near and dear to my heart. The other reason is because I've been doing a lot of work in the MCP space recently.
pomerium
/
mcp-app-demo
Demo application showcasing how to build and secure MCP servers and clients with Pomerium using contextual access policies.
Welcome to the Pomerium Chat, a minimal chat application for showcasing remote Model Context Protocol servers secured with Pomerium.
quickstart.mp4
Pre-requisites
- Linux or MacOS host
- Docker and Docker Compose
- Your machine should have port 443 exposed to the internet so that it could acquire TLS certificates from LetsEncrypt and OpenAI could call your MCP server endpoints.
- OpenAI API Key
Quickstart
Environment Variables
Create a .env-mcp-app-demo
file in the root directory and add the following environment variables:
OPENAI_API_KEY=your_api_key_here
Pomerium Config
Update pomerium-config.yaml
and replace YOUR-DOMAIN with the subdomain you control. Create A DNS records for relevant hosts (or *.YOUR-DOMAIN
).
By default, the access policy limits access to users with emails in YOUR-DOMAIN. See policy language reference if you need to adjust it.
Docker Compose
See docker-compose.yaml
file in this repo.
docker compose up -d
It includes a demo SQLite server that requires a demo database, for example https://github.com/jpwhite3/northwind-SQLite3…
What's MCP All About?
Let me back up a bit. The Model Context Protocol (MCP) is Anthropic's open standard for connecting AI models to external data sources.
MCP is like having a standardized way for any AI system to talk to external resources without reinventing the wheel every time. It's been dubbed "the USB-C for AI."
What dev-to-mcp Does
The dev-to-mcp server exposes dev.to's public API through six focused tools. Here's what you get:
Content Discovery:
-
get_articles
- Filter by author, tag, popularity, publication state -
search_articles
- Full-text search across all of dev.to's content -
get_tags
- Access trending tags and topics
For example, ask to get the latest React articles
Content Access:
-
get_article
- Grab specific articles by ID or URL path -
get_user
- Pull author profiles and user info -
get_comments
- Read through article discussions and comment threads
Here I am asking for my articles:
In VS Code:
In the Pomerium MCP app demo.
In Goose:
Real-World Use Cases
Once your AI has direct access to dev.to's ecosystem, you can do things like:
- Research the latest React patterns by pulling top articles tagged with "react"
- Track specific authors' posting patterns and expertise areas
- Analyze community discussions to understand developer sentiment on new technologies
- Generate content recommendations based on trending topics and engagement
The possibilities get interesting when you start combining different searches and analyses.
Getting It Running
The setup is pretty straightforward:
npm install
npm run build
npm start
That's it. Your MCP server is now running on http://localhost:3000
and ready to serve up dev.to data. Use it in your favourite MCP client, like VS Code, Claude, Goose, etc.
For development, there's watch mode:
npm run dev
And if you want to deploy it via Docker:
docker build -t dev-to-mcp .
docker run -p 3000:3000 dev-to-mcp
However you run it, remember that the URL when you register it in an MCP client like VS Code will be e.g. http://localhost:3000/mcp
Under the Hood
The MCP server leverages the MCP TypeScript SDK and Vite for a clean, modern development experience and leverages the dev.to API for dev.to content.
modelcontextprotocol
/
typescript-sdk
The official TypeScript SDK for Model Context Protocol servers and clients
Table of Contents
- Overview
- Installation
- Quickstart
- What is MCP?
- Core Concepts
- Running Your Server
- Examples
- Advanced Usage
- Documentation
- Contributing
- License
Overview
The Model Context Protocol allows applications to provide context for LLMs in a standardized way, separating the concerns of providing context from the actual LLM interaction. This TypeScript SDK implements the full MCP specification, making it easy to:
- Build MCP clients that can connect to any MCP server
- Create MCP servers that expose resources, prompts and tools
- Use standard transports like stdio and Streamable HTTP
- Handle all MCP protocol messages and lifecycle events
Installation
npm install @modelcontextprotocol/sdk
⚠️ MCP requires Node.js v18.x or higher to work fine.
Quick Start
Let's create a simple MCP server that exposes…
What's Next
This is meant to be for the dev.to public API server. You have access to additional endpoints with a dev.to API key as well, but for the initial release, I omitted that to keep things simple.
It'd be neat if you could register an OAuth app to avoid API keys altogether. That way, it could be deployed with the additional user-specific endpoints without requiring an API key which is only works for the editable content of the owner of the API key if accessing the additional endpoints.
@ben, if you want to host it officially, I think that'd be awesome, and I'd also be happy to move it to the forem org if there's interest.
For those interested in trying it out if you don't feel like deploying it yourself, it's available at https://devto.mcp.maisonlab.dev. If you try to use it, you'll be denied, so if you're OK with sending me your email address, I can add you to the Pomerium policy to give you access.
That's it! Check out the repo and give it a star if you find it useful. 😎
If you want to stay in touch, all my socials are on nickyt.online.
Photo by Gerard Siderius on Unsplash
Top comments (27)
Very interesting stuff!
Will give a deep dive asap and give you an answer
Cool!
I too recently experimented with an mcp server implementation with dev.to API.
But I only did it with contest submissions!
Looks like you went full on with it. Super!
Use Algolia MCP Server & VSCode GitHub Copilot to Find and Submit Unique Projects in Dev Challenges! ❤️🔥
Fayaz ・ Jul 28
Noice!
Hi, your dev MCP server is awesome. I have also made MCP tools for dev.to. check it out- github.com/extinctsion/mcp-py-devto
And yes it would be awesome if we can Collab and make official dev.to MCP server under forem. @ben
Glad you like it!
Initializing the sessions varies depending on your MCP client, e.g. VS Code, Goose, Claude etc.
not sure what you mean by sub requests. The MCP Client with the LLM will decide if it needs to call the tools in the dev.to MCP server.
Feel free to open an issue.
For example you can ask for the latest react articles. Notice how with the natural language, it knows to call the
get_articles
tool with the tag "react"What is a MCP server in easy words ?
MCP stands for Most Compromised Protocol
Not if you secure it properly. 👀
It’s mentioned in the blog post, but you can read more about it here, modelcontextprotocol.io/docs/getti...
Lovely!
Will give it a try for sure.
This is cool!
This is really interesting! Thanks for sharing, I’m excited to try out the dev.to MCP server.
Thanks Siswoyo! Lemme know what you think once you've tried it out!
cool stuff !!
Awesome!
Nice
Some comments may only be visible to logged-in visitors. Sign in to view all comments.