一个基于 Spring AI MCP Server 的 CSDN 文章发布服务,支持通过 AI 自动发布 Markdown 文章到 CSDN 平台。
- ✅ 发布文章到 CSDN 平台
- ✅ 支持 Markdown 格式内容
- ✅ 支持文章标签设置
- ✅ 支持文章分类设置
- ✅ 基于 Spring AI MCP Server 标准协议
- ✅ 支持 stdio 和 SSE 两种模式
- Java 17
- Spring Boot 3.4.3
- Spring AI 1.0.0-M6
- Retrofit 2.9.0 - HTTP 客户端
- Flexmark 0.64.8 - Markdown 解析器
- Lombok
- FastJSON 2.0.28
mcp-server-csdn/
├── src/
│ └── main/
│ ├── java/
│ │ └── cn/bugstack/mcp/server/csdn/
│ │ ├── domain/ # 领域层
│ │ │ ├── adapter/ # 端口接口
│ │ │ ├── model/ # 领域模型
│ │ │ └── service/ # 领域服务
│ │ ├── infrastructure/ # 基础设施层
│ │ │ └── adapter/ # 适配器实现
│ │ ├── gateway/ # 网关层
│ │ │ └── dto/ # 数据传输对象
│ │ ├── types/ # 类型定义
│ │ │ ├── properties/ # 配置属性
│ │ │ └── utils/ # 工具类
│ │ └── McpServerApplication.java
│ └── resources/
│ └── application.yml
├── Dockerfile
├── build.sh
└── push.sh
- JDK 17+
- Maven 3.6+
在 src/main/resources/application.yml 中配置 CSDN Cookie:
csdn:
api:
categories: Java场景面试宝典 # 文章分类
cookie: your-csdn-cookie-here # CSDN 登录 Cookie
spring:
application:
name: mcp-server-csdn
ai:
mcp:
server:
name: ${spring.application.name}
version: 1.0.0如何获取 CSDN Cookie:
- 登录 CSDN 网站
- 打开浏览器开发者工具(F12)
- 在 Network 标签中找到任意请求
- 复制请求头中的
Cookie值
mvn clean packagestdio 模式(默认):
java -jar target/mcp-server-csdn-app.jarSSE 模式:
修改 application.yml,注释掉 web-application-type: none,然后运行:
java -jar target/mcp-server-csdn-app.jar服务将在 http://localhost:8101 启动。
# 构建镜像
docker build -t mcp-server-csdn:1.0.0 .
# 运行容器
docker run -d \
-p 8101:8101 \
-v $(pwd)/data:/app/data \
mcp-server-csdn:1.0.0通过 @Tool 注解暴露的工具方法,AI 可以调用 saveArticle 方法发布文章。
请求参数:
title: 文章标题markdowncontent: Markdown 格式的文章内容tags: 文章标签(多个标签用逗号分隔)
返回信息:
- 文章发布结果
- 文章链接(如果成功)
项目采用 DDD(领域驱动设计)架构:
- 领域层(Domain): 包含业务逻辑和领域模型
- 基础设施层(Infrastructure): 实现外部接口适配
- 网关层(Gateway): 处理外部 API 调用
数据流转:
AI → @Tool 方法 → CSDNArticleService → ICSDNPort → CSDNPort → ICSDNService → CSDN API
当作为 MCP Server 运行时,AI 可以通过以下方式调用:
{
"method": "tools/call",
"params": {
"name": "saveArticle",
"arguments": {
"title": "Spring Boot 入门教程",
"markdowncontent": "# Spring Boot 入门\n\n这是一篇关于 Spring Boot 的教程...",
"tags": "Spring Boot,Java,后端"
}
}
}- McpServerApplication: Spring Boot 主启动类
- CSDNArticleService: 领域服务,提供
saveArticle工具方法 - CSDNPort: 适配器实现,连接领域层和网关层
- ICSDNService: Retrofit 接口,定义 CSDN API 调用
- MarkdownConverter: Markdown 转换工具
- 在
CSDNArticleService中添加新的@Tool注解方法 - 在
ICSDNPort接口中定义新的端口方法 - 在
CSDNPort中实现适配逻辑 - 在
ICSDNService中添加对应的 API 接口 - 重新构建并运行
日志文件位置:data/log/mcp-server-csdn.log
- Cookie 会过期,需要定期更新
- 发布文章需要遵守 CSDN 社区规范
- 建议在测试环境先验证功能
本项目采用 MIT 许可证。
Daniel G