关于 🚀 Dev.to MCP Server
Dev.to MCP Server 将 AI 工具连接到 Dev.to,用于浏览、搜索、阅读、分析和管理文章。除 SSE/MCP 外,也支持 REST/OpenAPI 模式。
主要功能
- 01浏览最新和热门文章
- 02按关键词、标签或作者搜索
- 03阅读文章和用户资料
- 04分析文章和用户资料
- 05创建、更新和发布文章
- 06REST 与 OpenAPI 模式
适用场景
- 01查找特定主题或标签的文章
- 02总结文章或用户资料
- 03管理草稿和已发布文章
- 04通过 REST 工具访问 Dev.to
MCP 相关
该服务通过 SSE 向 MCP 客户端提供 Dev.to 浏览、搜索、阅读、分析及需认证的发布工具。它也可运行于 REST/OpenAPI 模式。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://localhost:8000/sseclaude mcp add --transport http devtomcp http://localhost:8000/sse{"mcpServers":{"devtomcp":{"type":"http","url":"http://localhost:8000/sse"}}}在 Cursor 中打开{"servers":{"devtomcp":{"type":"http","url":"http://localhost:8000/sse"}}}在 VS Code 中打开{"mcpServers":{"devtomcp":{"type":"http","url":"http://localhost:8000/sse"}}}{"mcpServers":{"devtomcp":{"serverUrl":"http://localhost:8000/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
🚀 Dev.to MCP 服务
一个面向 Dev.to API 的模型上下文协议(MCP)服务实现,提供在 Dev.to 上搜索、浏览、阅读和创建内容的功能。
✨ 功能
| 功能 | 描述 |
|---|---|
| 🔍 浏览最新文章 | 获取 Dev.to 上的最新文章 |
| 🌟 浏览热门文章 | 获取最受欢迎的文章 |
| 🏷️ 按标签浏览 | 获取带有指定标签的文章 |
| 📚 按标题浏览 | 获取标题符合指定内容的文章 |
| 📖 阅读文章 | 获取特定文章的详细信息 |
| 👤 用户资料 | 获取 Dev.to 用户的信息 |
| 🔎 搜索文章 | 使用关键词搜索文章 |
| 👤 按用户搜索文章 | 搜索特定用户的所有文章 |
| 📝 按 ID 获取文章 | 获取特定文章的详细信息 |
| 📝 按标题获取文章 | 获取特定文章的详细信息 |
| 🧠 分析文章 | 分析特定文章(基于提示词,输出摘要) |
| 🧠 分析用户资料 | 分析特定用户资料(基于提示词,输出摘要) |
| 📝 创建文章 | 创建并发布新文章 |
| ✏️ 更新文章 | 更新你已有的文章 |
| 📝 按标题更新文章 | 按标题更新你已有的文章(解析为 ID) |
| 📜 列出我的文章 | 列出你已发布的文章 |
| 📝 列出我的草稿文章 | 列出你的草稿文章 |
| 📝 列出我的未发布文章 | 列出你未发布的文章 |
| 📝 列出我的定时发布文章 | 列出你已安排发布的文章 |
| 🧑💻 按 ID 发布文章 | 按 ID 发布你自己的文章 |
| 📝 按标题发布文章 | 按标题发布你自己的文章 |
| 🧑💻 按 ID 撤回发布文章 | 按 ID 撤回你自己的文章 |
| 📝 按标题撤回发布文章 | 按标题撤回你自己的文章 |
| 📝 删除文章 | 删除你自己的文章 |
🧠 分析工具
| 功能 | 描述 |
|---|---|
| 🧠 分析文章 | 分析特定文章(基于提示词,输出摘要) |
| 🧠 分析用户资料 | 分析特定用户资料(基于提示词,输出摘要) |
注意: 分析工具提供自然语言摘要和见解,而非原始数据转储。
📝 许可证
本项目依据 GNU Affero General Public License v3.0 (AGPLv3) 授权。
商业用途警告
如果你想以任何形式将此代码用于或部署为面向他人的营利性服务,即使你不专门对代码收费,也需要联系我获得许可(这意味着 你们 Smithery/Glama 或任何类似服务)——只有在支付相应的许可费用后才会授予许可。没错,你可能没有对代码本身的使用收费,也可能只是提供基础设施,但你是在使用 我的 代码来支持 你的 服务。这是固有的依赖关系,必须获得授权。
对于其他所有人,无论你是企业还是个人,希望它能对你有所帮助。尽情使用吧。
⚙️ 服务配置
可以使用以下环境变量配置服务:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
PORT | 服务运行的端口 | 8000 |
LOG_LEVEL | 日志级别(INFO、DEBUG 等) | INFO |
🔐 客户端身份验证
每个客户端都需要提供自己的 Dev.to API 密钥以执行需要身份验证的操作。为此,请在客户端的 MCP 服务配置中将 API 密钥作为环境变量安全地提供。
注意: 应在 MCP 客户端配置的环境变量部分将密钥设为
DEVTO_API_KEY。
🚀 快速开始
🐳 使用 Docker 运行
- 克隆代码库:
git clone https://github.com/rawveg/devtomcp.git
cd devtomcp
- 使用 Docker Compose 构建并运行:
docker-compose up --build
服务将在 http://localhost:8000 上提供,SSE 端点为 http://localhost:8000/sse。
🛠️ MCP 工具
分析内容
analyse_article- 分析指定文章analyse_user_profile- 分析指定用户
浏览内容
browse_latest_articles()- 获取 Dev.to 上最新的文章browse_popular_articles()- 获取最受欢迎的文章browse_articles_by_tag(tag)- 获取带有指定标签的文章
阅读内容
get_article(id)- 获取指定文章的详细信息get_user_profile(username)- 获取 Dev.to 用户的信息
搜索内容
search_articles(query, page=1)- 使用关键词搜索文章search_articles_by_user(username, page=1)- 搜索指定用户的所有文章
管理内容(需要身份验证)
list_my_articles(page=1, per_page=30)- 列出你已发布的文章list_my_draft_articles(page=1, per_page=30)- 列出你的草稿文章list_my_unpublished_articles(page=1, per_page=30)- 列出你尚未发布的文章create_article(title, content, tags="", published=False)- 创建新文章update_article(id, title=None, content=None, tags=None, published=None)- 更新现有文章delete_article(id)- 删除现有文章publish_article_by_id(id)- 按 ID 发布你自己的文章publish_article_by_title(title)- 按标题发布你自己的文章unpublish_article_by_id(id)- 按 ID 取消发布你自己的文章unpublish_article_by_title(title)- 按标题取消发布你自己的文章update_article_by_title(title, new_title=None, content=None, tags=None, published=None)- 按标题更新现有文章(解析为 ID)
🌐 REST API 与 OpenAPI 工具服务
Dev.to MCP 服务现已支持双模式运行:
| 模式 | 说明 |
|---|---|
| 🟢 SSE/MCP | 用于大模型/Agent 集成,使用 Model Context Protocol (MCP) |
| 🟦 REST/OpenAPI | 用于直接 HTTP 访问、OpenAPI 工具运行器及兼容 OpenAI 的工具 |
🚦 切换模式
在 .env 文件中设置模式:
SERVER_MODE=sse # For SSE/MCP (default)
# or
SERVER_MODE=rest # For REST API & OpenAPI toolserver
🔑 REST 模式下的身份验证
- 在
Authorization标头中以 Bearer 令牌的形式提供 Dev.to API 密钥:Authorization: Bearer YOUR_DEVTO_API_KEY - REST 模式下无需在
.env中设置DEVTO_API_KEY。
📖 OpenAPI 和 Swagger UI
- 交互式文档:http://localhost:8000/docs
- OpenAPI 架构:http://localhost:8000/openapi.json
- 完全兼容 OpenAI 的函数调用、LangChain 和其他 OpenAPI 工具运行器。
🧑💻 示例:列出我的文章(REST)
curl -X GET "http://localhost:8000/list_my_articles?page=1&per_page=30&max_pages=10" \
-H "Authorization: Bearer YOUR_DEVTO_API_KEY"
🛠️ REST 端点
- 所有主要工具都可通过 REST 端点使用(详情请参阅
/docs) - 每个端点都包含丰富的 OpenAPI 元数据、示例和标签,便于查找
update_article_by_title- 按标题更新自己的文章(解析为 ID)
🤖 这样做的意义
- 只需一个代码库,即可将其用作传统 REST API、OpenAPI 工具服务器或大模型/Agent 工具提供方!
- 可与 OpenAI、LangChain 以及任何兼容 OpenAPI 的客户端即插即用
- 开箱即用、美观且交互性强的文档
🖥️ 客户端配置
Claude Desktop 配置
在 Claude Desktop 的 config.json 中添加 MCP 服务:
{
"mcpServers": {
"devto": {
"url": "http://localhost:8000/sse"
}
}
}
Cursor 配置
在 Cursor 的配置中添加 MCP 服务:
{
"mcpServers": {
"devto": {
"url": "http://localhost:8000/sse"
}
}
}
注意
某些客户端可能需要使用 serverUrl 而非 url,例如 Codium 的 Windsurf IDE。
使用 Python 进行编程访问
import asyncio
import os
from fastmcp.client import Client
async def main():
# Set environment variable for authentication
os.environ["DEVTO_API_KEY"] = "your_dev_to_api_key_here"
# Connect to the MCP server
client = Client("http://localhost:8000/sse")
# Use the client
async with client:
# Get popular articles
results = await client.call_tool("browse_popular_articles", {})
print(results)
if __name__ == "__main__":
asyncio.run(main())
☁️ 部署到 Google Cloud Run
部署到 Google Cloud Run:
-
按照 Google Cloud Run 快速入门 设置环境
-
将 Dev.to API 密钥设置为密钥:
gcloud secrets create devto-api-key --data-file=- <<< "your_api_key_here" -
在 SSE 模式下挂载密钥并进行部署:
gcloud run deploy devtomcp \ --source . \ --platform managed \ --allow-unauthenticated \ --region [REGION] \ --set-env-vars="LOG_LEVEL=<<LOG_LEVEL>>" \ --set-env-vars="DEVTO_API_KEY=<<DEVTO_API_KEY>>" \ --set-env-vars="SERVER_MODE=sse" \ --set-env-vars="DEVTO_API_BASE_URL=<<DEVTO_API_BASE_URL>>" \ --format="json"环境变量
变量 描述 默认值 LOG_LEVEL日志级别(INFO、DEBUG 等) INFODEVTO_API_KEYDev.to API 密钥 NoneDEVTO_API_BASE_URLDev.to API 基础 URL https://dev.to/apiSERVER_MODE要部署的服务模式 sse由于
.env文件不会挂载到容器中,因此必须在 gcloud run deploy 命令行中设置这些变量。也可以使用 OpenAPI 工具以 REST 模式部署:
gcloud run deploy devtomcp \ --source . \ --platform managed \ --allow-unauthenticated \ --region [REGION] \ --set-env-vars="LOG_LEVEL=<<LOG_LEVEL>>" \ --set-env-vars="SERVER_MODE=rest" \ --set-env-vars="DEVTO_API_BASE_URL=<<DEVTO_API_BASE_URL>>" \ --format="json"环境变量
变量 描述 默认值 LOG_LEVEL日志级别(INFO、DEBUG 等) INFOSERVER_MODE要部署的服务模式 restDEVTO_API_BASE_URLDev.to API 基础 URL https://dev.to/api由于
.env文件不会挂载到容器中,因此必须在 gcloud run deploy 命令行中设置这些变量。
区域选择 应根据关联项目所在的区域进行选择。可在此处查看可用区域列表。
⚠️ 安全警告 - SSE 模式:
-
--allow-unauthenticated标志会使你的服务可公开访问 -
由于这是一个使用你的 API 密钥的单用户服务,你必须实施额外的安全措施:
-
在 REST 模式下部署(推荐用于 Cloud Run)时,上述安全注意事项不适用,因为此模式下的每个请求都必须携带 Authorization Bearer Token
Authorization: Bearer <<your_dev_to_api_key_here>>,从而立即限制破坏性访问。
有关详细的安全配置说明,请参阅 GCP_DEPLOYMENT.md。
⚠️ 错误处理
服务器返回标准的 MCP 错误响应:
{
"status": "error",
"message": "Error description",
"code": 401
}
常见错误代码:
- 401:身份验证失败(缺少或无效的 API 密钥)
- 404:找不到资源
- 422:参数无效
- 500:服务器错误
🔒 安全注意事项
- 服务器使用环境变量配置 API 密钥,以提供适当的安全隔离
- 每个客户端连接都使用各自配置的 API 密钥
- 所有 API 凭据均由服务器端处理
- 在生产环境中使用 HTTPS
- 在云部署中使用安全的密钥管理方式管理 API 密钥
🤝 参与贡献
欢迎贡献!请随时提交 Pull Request。
🙏 致谢
📬 联系方式
如有疑问、建议或需要支持,请提交 issue。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。