🚀 开发到MCP服务器
 ](https://www.docker.com/) 
______________________________________________________________________
用于Dev.to API的模型上下文协议(MCP)服务器的实现,提供在Dev.to上搜索、浏览、阅读和创建内容的功能。
______________________________________________________________________
✨ 特性
| 特性 | 描述 |
|---|---|
| 🔍 浏览最新文章 | 从Dev.to获取最新文章 |
| 🌟 浏览热门文章 | 获取最受欢迎的文章 |
| 🏷️ 按标签浏览 | 获取具有特定标签的文章 |
| 📚 按标题浏览 | 获取具有特定标题的文章 |
| 📖 阅读文章 | 获取特定文章的详细信息 |
| 👤 用户资料 | 获取Dev.to用户的相关信息 |
| 🔎 搜索文章 | 使用关键字搜索文章 |
| 👤 按用户搜索文章 | 按特定用户搜索所有文章 |
| 📝 按ID获取文章 | 获取特定文章的详细信息 |
| 📝 按标题获取文章 | 获取特定文章的详细信息 |
| 🧠 分析文章 | 分析特定文章(基于提示,摘要输出) |
| 🧠 分析用户配置文件 | 分析特定用户配置文件(基于提示的摘要输出) |
| 📝 创建文章 | 创建和发布新文章 |
| ✏️ 更新文章 | 更新现有文章 |
| 📝 按标题更新文章 | 按标题更新现有文章(解析为ID) |
| 📜 列出我的文章 | 列出你自己发表的文章 |
| 📝 列出我的文章草稿 | 列出你自己的文章草稿 |
| 📝 列出我的未发表文章 | 列出你自己的未发表的文章 |
| 📝 列出我的预定文章 | 列出您自己的预定文章 |
| 🧑💻 按ID发布文章 | 按ID发布自己的文章 |
| 📝 按标题发布文章 | 按标题发布您自己的文章 |
| 🧑💻 按ID取消发布文章 | 按ID取消发表您自己的文章 |
| 📝 按标题取消文章发布 | 按标题取消发布您自己的文章 |
| 📝 删除文章 | 删除您自己的文章 |
______________________________________________________________________
🧠 分析工具
| 特性 | 描述 |
|---|---|
| 🧠 分析文章 | 分析特定文章(基于提示,摘要输出) |
| 🧠 分析用户配置文件 | 分析特定用户配置文件(基于提示的摘要输出) |
注: 分析工具提供自然语言摘要和见解,而不是原始数据转储。
______________________________________________________________________
📝 许可证
该项目根据 GNU Affero通用公共许可证v3.0(AGPLv3).
商业用途警告
如果你想以任何形式将此代码作为货币化服务使用或部署给他人,即使你没有特别要求支付代码费用,你也需要联系我获得许可(这意味着 _你_ Smithery/Glama或任何类似服务)-只有在支付适当的许可费后才能授予。不,你可能不会对代码本身的使用收费,你可能会提供基础设施,但你会使用 _我的_ 代码以方便 _你的_ 服务。这是一种内在的依赖性 必须 获得许可。
对于其他人,无论你是企业还是个人,我希望这对你有用。享受。
______________________________________________________________________
⚙️ 服务器配置
可以使用以下环境变量配置服务器:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
PORT | 运行服务器的端口 | 8000 |
LOG_LEVEL | 日志记录级别(信息、调试等) | INFO |
______________________________________________________________________
🔐 客户端身份验证
每个客户端都需要为经过身份验证的操作提供自己的Dev.to API密钥。这是通过在客户端的MCP服务器配置中提供API密钥作为环境变量来安全地完成的。
注: 钥匙应按以下方式提供 DEVTO_API_KEY 在MCP客户端配置的环境部分。______________________________________________________________________
🚀 入门指南
🐳 使用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 | 用于LLM/代理集成,使用模型上下文协议(MCP) |
| 🟦 REST/OpenAPI | 用于直接HTTP访问、OpenAPI工具运行器和OpenAI兼容工具 |
🚦 切换模式
在您的 .env 文件:
SERVER_MODE=sse # For SSE/MCP (default)
# or
SERVER_MODE=rest # For REST API & OpenAPI toolserver🔑 REST模式下的身份验证
- 在中提供Dev.to API密钥
Authorization标头作为Bearer令牌:
Authorization: Bearer YOUR_DEVTO_API_KEY- 无需设置
DEVTO_API_KEY在……里面.env对于REST模式。
📖 OpenAPI和Swagger用户界面
- 交互式文档: 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工具服务器或LLM/代理工具提供商—所有这些都来自一个代码库!
- 与OpenAI、LangChain和任何兼容OpenAPI的客户端即插即用
- 开箱即用的精美交互式文档
______________________________________________________________________
🖥️ 客户端配置
Claude桌面配置
在Claude Desktop中添加MCP服务器 config.json:
{
"mcpServers": {
"devto": {
"url": "http://localhost:8000/sse"
}
}
}光标配置
在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:
- 跟随 谷歌云运行快速入门 设置您的环境
- 将Dev.to API密钥设置为秘密:
gcloud secrets create devto-api-key --data-file=- >" \
--set-env-vars="DEVTO_API_KEY=>" \
--set-env-vars="SERVER_MODE=sse" \
--set-env-vars="DEVTO_API_BASE_URL=>" \
--format="json"环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
LOG_LEVEL | 日志记录级别(信息、调试等) | INFO |
DEVTO_API_KEY | Dev.to API密钥 | None |
DEVTO_API_BASE_URL | Dev.to API基础URL | https://dev.to/api |
SERVER_MODE | 要部署的服务器模式 | sse |
必须在gcloud run-deploy的命令行上设置这些变量,因为.env文件未装载到容器中。
使用OpenAPI工具在REST模式下进行替代部署:
gcloud run deploy devtomcp \
--source . \
--platform managed \
--allow-unauthenticated \
--region [REGION] \
--set-env-vars="LOG_LEVEL=>" \
--set-env-vars="SERVER_MODE=rest" \
--set-env-vars="DEVTO_API_BASE_URL=>" \
--format="json"环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
LOG_LEVEL | 日志记录级别(信息、调试等) | INFO |
SERVER_MODE | 要部署的服务器模式 | rest |
DEVTO_API_BASE_URL | Dev.to API基础URL | https://dev.to/api |
必须在gcloud run-deploy的命令行上设置这些变量,因为.env文件未装载到容器中。
区域选择 应根据关联项目的区域选择区域。可以找到可用区域列表 这里.
⚠️ 安全警告-SSE模式:
- 这
--allow-unauthenticated标志使您的服务器可公开访问
- 由于这是一个带有API密钥的单用户服务器,因此您必须实施其他安全措施:
- 使用 云运行身份验证 - 设置 身份感知代理(IAP) - 配置 VPC服务控制 - 使用 入口控制
- 在REST模式下部署时(建议用于云运行),上述安全考虑不适用,因为在此模式下对服务器的每个请求都需要由授权承载令牌来满足
Authorization: Bearer >立即限制破坏性访问。
看 GCP_部署.md 有关详细的安全配置说明。
______________________________________________________________________
⚠️ 错误处理
服务器返回标准MCP错误响应:
{
"status": "error",
"message": "Error description",
"code": 401
}常见错误代码:
- 401:身份验证失败(API密钥丢失或无效)
- 404:未找到资源
- 422:无效参数
- 500:服务器错误
______________________________________________________________________
🔒 安全考虑
- 服务器使用环境变量来配置API密钥,从而提供适当的安全隔离
- 每个客户端连接都使用自己配置的API密钥
- 所有API凭证处理都在服务器端进行
- 在生产环境中使用HTTPS
- 在云部署中对API密钥使用安全的秘密管理
______________________________________________________________________
🤝 贡献
欢迎投稿!请随时提交拉取请求。
______________________________________________________________________
🙏 致谢
______________________________________________________________________
📬 联系
如有疑问、建议或支持,请打开问题。
