自动发文 MCP Server

自动发文 MCP Server

MCP 自动发文服务 (MCP zìdòng fāwén fúwù)

gulihua10010

研究与数据
访问服务器

README

自动发文 MCP Server

简介

本项目实现通过AI生成一篇文章,然后自动发文到CSDN、掘金、博客园。关于MCP协议,详见MCP官方文档

依赖MCP Java SDK开发,任意支持MCP协议的智能体助手(如ClaudeCursor以及千帆AppBuilder等)都可以快速接入。

以下会给更出详细的适配说明。

工具列表

搜索面经 searchExperienceQuestion

  • 从牛客搜索用户发表的面经
  • 输出: 面经内容

查询资讯 searchNews

  • 从网上查询最新的科技资讯话题内容
  • 输出: 资讯标题、资讯内容

发布文章到CSDN publishArticle2Csdn

  • 输入: 文章标题、内容、描述
  • 输出: 文章id、文章链接

发布文章到掘金 publishArticle2Juejin

  • 输入: 文章标题、内容、描述
  • 输出: 文章id、文章链接

发布文章到博客园 publishArticle2Cnblog

  • 输入: 文章标题、内容、描述
  • 输出: 文章id、文章链接

环境参数

JUEJIN_COOKIE

掘金账号的Cookie,主要的请求头Cookie的sessionid字段

CSDN_COOKIE

CSDN账号的Cookie,主要是请求头Cookie的SESSION字段、UserName字段,UserInfo字段、UserToken字段 请求头签名:x-ca-key、x-ca-nonce、x-ca-signature、x-ca-signature-headers、accept、content-type 写死就行了

CNBLOG_COOKIE

博客园账号的Cookie,主要是请求头Cookie的.CNBlogsCookie字段、AspNetCore.Antiforgery.xxxxxxxx字段,.Cnblogs.AspNetCore.Cookies字段

CNBLOG_TOKEN

博客园请求头x-xsrf-token字段

快速开始

使用发文 MCP Server主要通过Java SDK 的形式

Java 接入

前提需要Java 17 运行时环境

安装

git clone https://github.com/yuyuanweb/mcp--server-article

构建

cd mcp--server-article
mvn clean package

使用

  1. 打开Cherry Studio设置,点击MCP 服务器cherry1.png

  2. 点击编辑 JSON,将以下配置添加到配置文件中。

{
  "mcpServers": {
    "articleServer": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dlogging.pattern.console=",
        "-jar",
        "/Users/gulihua/IdeaProjects/mcp-server-article/target/mcp-server-0.0.1-SNAPSHOT.jar"
      ],
      "env": {
        "JUEJIN_COOKIE": "掘金的cookie",
        "CNBLOG_COOKIE": "博客园的cookie",
        "CNBLOG_TOKEN": "博客园的x-xsrf-token",
        "CSDN_COOKIE": "CSDN的cookie"
      }
    }
  }
}

cherry2.png

  1. 在设置-模型服务里选择一个模型,输入API密钥,选择模型设置,勾选下工具函数调用功能。 cherry3.png
  2. 在输入框下面勾选开启MCP服务。 cherry4.png
  3. 配置完成,然后查询牛客的用户真实面经,AI生成文章,然后发布到CSDN、掘金、博客园。 cherry5.png

代码调用

  1. 引入依赖
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter</artifactId>
            <version>1.0.0-M6.1</version>
        </dependency>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
      <version>1.0.0-M6</version>
    </dependency>
  1. 配置MCP服务器 需要在application.yml中配置MCP服务器的一些参数:
spring:
  ai:
    mcp:
      client:
        stdio:
          # 指定MCP服务器配置文件
          servers-configuration: classpath:/mcp-servers-config.json
  mandatory-file-encoding: UTF-8

其中mcp-servers-config.json的配置如下:

{
  "mcpServers": {
    "articleServer": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dlogging.pattern.console=",
        "-jar",
        "/Users/gulihua/IdeaProjects/mcp-server-article/target/mcp-server-0.0.1-SNAPSHOT.jar"
      ],
      "env": {
        "JUEJIN_COOKIE": "掘金的cookie",
        "CNBLOG_COOKIE": "博客园的cookie",
        "CNBLOG_TOKEN": "博客园的x-xsrf-token",
        "CSDN_COOKIE": "CSDN的cookie"
      }
    }
  }
}

客户端我们使用阿里巴巴的通义千问模型,所以引入spring-ai-alibaba-starter依赖,如果你使用的是其他的模型,也可以使用对应的依赖项,比如openAI引入spring-ai-openai-spring-boot-starter 这个依赖就行了。 配置大模型的密钥等信息:

spring:
  ai:
    dashscope:
      api-key: ${通义千问的key}
      chat:
        options:
          model: qwen-max

通义千问的key可以直接去官网 去申请,模型我们用的是通义千问-Max。 3) 初始化聊天客户端

@Bean
public ChatClient initChatClient(ChatClient.Builder chatClientBuilder,
                                 ToolCallbackProvider mcpTools) {
    return chatClientBuilder
    .defaultTools(mcpTools)
    .build();
}
  1. 接口调用
    @PostMapping(value = "/ai/answer/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> generateStreamAsString(@RequestBody AskRequest request) {

        Flux<String> content = chatClient.prompt()
                .user(request.getContent())
                .stream()
                .content();
        return content
                .concatWith(Flux.just("[complete]"));

    }

# 自动发文 MCP Server

## 简介

本项目实现了通过 AI 生成一篇文章,然后自动发文到 CSDN、掘金、博客园。关于 MCP 协议,详见 MCP 官方[文档](https://modelcontextprotocol.io/)。

依赖 `MCP Java SDK` 开发,任意支持 MCP 协议的智能体助手(如 `Claude`、`Cursor` 以及 `千帆AppBuilder` 等)都可以快速接入。

以下会给出更详细的适配说明。

## 工具列表

#### 搜索面经 `searchExperienceQuestion`

- 从牛客搜索用户发表的面经
- 输出: `面经内容`

#### 查询资讯 `searchNews`

- 从网上查询最新的科技资讯话题内容
- 输出: `资讯标题、资讯内容`

#### 发布文章到 CSDN `publishArticle2Csdn`

-
- 输入: `文章标题、内容、描述`
- 输出: `文章 id、文章链接`

#### 发布文章到掘金 `publishArticle2Juejin`

-
- 输入: `文章标题、内容、描述`
- 输出: `文章 id、文章链接`

#### 发布文章到博客园 `publishArticle2Cnblog`

-
- 输入: `文章标题、内容、描述`
- 输出: `文章 id、文章链接`

## 环境参数

### JUEJIN_COOKIE
掘金账号的 Cookie,主要的请求头 Cookie 的 sessionid 字段

### CSDN_COOKIE
CSDN 账号的 Cookie,主要是请求头 Cookie 的 SESSION 字段、UserName 字段,UserInfo 字段、UserToken 字段
请求头签名:x-ca-key、x-ca-nonce、x-ca-signature、x-ca-signature-headers、accept、content-type 写死就行了

### CNBLOG_COOKIE
博客园账号的 Cookie,主要是请求头 Cookie 的 .CNBlogsCookie 字段、AspNetCore.Antiforgery.xxxxxxxx 字段,.Cnblogs.AspNetCore.Cookies 字段

### CNBLOG_TOKEN
博客园请求头 x-xsrf-token 字段

## 快速开始

使用发文 MCP Server 主要通过 `Java SDK` 的形式

### Java 接入

> 前提需要 Java 17 运行时环境

#### 安装

``` bash
git clone https://github.com/yuyuanweb/mcp--server-article

构建

cd mcp--server-article
mvn clean package

使用

  1. 打开 Cherry Studio设置,点击 MCP 服务器cherry1.png

  2. 点击 编辑 JSON, 将以下配置添加到配置文件中。

{
  "mcpServers": {
    "articleServer": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dlogging.pattern.console=",
        "-jar",
        "/Users/gulihua/IdeaProjects/mcp-server-article/target/mcp-server-0.0.1-SNAPSHOT.jar"
      ],
      "env": {
        "JUEJIN_COOKIE": "掘金的cookie",
        "CNBLOG_COOKIE": "博客园的cookie",
        "CNBLOG_TOKEN": "博客园的x-xsrf-token",
        "CSDN_COOKIE": "CSDN的cookie"
      }
    }
  }
}

cherry2.png

  1. 在设置-模型服务里选择一个模型,输入 API 密钥,选择模型设置,勾选下工具函数调用功能。 cherry3.png
  2. 在输入框下面勾选开启 MCP 服务。 cherry4.png
  3. 配置完成,然后查询牛客的用户真实面经,AI 生成文章,然后发布到 CSDN、掘金、博客园。 cherry5.png

代码调用

  1. 引入依赖
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-starter</artifactId>
            <version>1.0.0-M6.1</version>
        </dependency>
    <dependency>
      <groupId>org.springframework.ai</groupId>
      <artifactId>spring-ai-mcp-client-spring-boot-starter</artifactId>
      <version>1.0.0-M6</version>
    </dependency>
  1. 配置 MCP 服务器 需要在 application.yml 中配置 MCP 服务器的一些参数:
spring:
  ai:
    mcp:
      client:
        stdio:
          # 指定 MCP 服务器配置文件
          servers-configuration: classpath:/mcp-servers-config.json
  mandatory-file-encoding: UTF-8

其中 mcp-servers-config.json 的配置如下:

{
  "mcpServers": {
    "articleServer": {
      "command": "java",
      "args": [
        "-Dspring.ai.mcp.server.stdio=true",
        "-Dspring.main.web-application-type=none",
        "-Dlogging.pattern.console=",
        "-jar",
        "/Users/gulihua/IdeaProjects/mcp-server-article/target/mcp-server-0.0.1-SNAPSHOT.jar"
      ],
      "env": {
        "JUEJIN_COOKIE": "掘金的cookie",
        "CNBLOG_COOKIE": "博客园的cookie",
        "CNBLOG_TOKEN": "博客园的x-xsrf-token",
        "CSDN_COOKIE": "CSDN的cookie"
      }
    }
  }
}

客户端我们使用阿里巴巴的通义千问模型,所以引入 spring-ai-alibaba-starter 依赖,如果你使用的是其他的模型,也可以使用对应的依赖项,比如 openAI 引入 spring-ai-openai-spring-boot-starter 这个依赖就行了。 配置大模型的密钥等信息:

spring:
  ai:
    dashscope:
      api-key: ${通义千问的key}
      chat:
        options:
          model: qwen-max

通义千问的 key 可以直接去官网 去申请,模型我们用的是通义千问-Max。 3) 初始化聊天客户端

@Bean
public ChatClient initChatClient(ChatClient.Builder chatClientBuilder,
                                 ToolCallbackProvider mcpTools) {
    return chatClientBuilder
    .defaultTools(mcpTools)
    .build();
}
  1. 接口调用
    @PostMapping(value = "/ai/answer/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<String> generateStreamAsString(@RequestBody AskRequest request) {

        Flux<String> content = chatClient.prompt()
                .user(request.getContent())
                .stream()
                .content();
        return content
                .concatWith(Flux.just("[complete]"));

    }

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python