博客管理服务器

一个基于MCP协议的博客文章管理和创建服务器,支持搜索和创建博客文章。

  • by SCIAM-FR
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 SCIAM-FR/server-mcp

使用说明

博客MCP服务器

MCP(模型上下文协议)服务器,用于通过搜索和创建管理博客文章。

📖 MCP服务器的设计

本项目是使用MCP服务器的示例实现 SDK Java (无框架Spring ou autre)。

架构MCP

模型上下文协议(MCP)定义了 沙发建筑 明确划分责任:

1. 客户端/服务器层

  • McpServer :管理协议操作
  • McpSession :管理同步和异步交互
  • 支持编程模型 同步器 (McpSyncServer)et 异步 (McpAsyncServer)

2. 运输层

  • JSON-RPC消息序列化的抽象
  • 运输标准 :通过stdin/stdout进行通信(本项目中使用)
  • 备选方案:HTTP SSE、流式HTTP分布式体系结构

3. 协议层

SDK支持以下MCP功能:

  • 工具 :发现和执行工具(此处使用)
  • 资源 :使用URI和订阅进行资源管理
  • 提示词 :用于IA交互的提示模板
  • 完成 :完成建议
  • 日志记录 :日志系统
  • 进展 :监控操作进度

概念原则

此服务器说明 良好做法 du SDK Java MCP:

  1. 无框架依赖性的模块化

    • 模块利用率 mcp-core 唯一
    • 不依赖Spring或其他web框架
    • 默认情况下包括STDIO传输
  2. 收件人姓名首字母

    // 1. Créer le transport
    StdioServerTransportProvider transport =
        new StdioServerTransportProvider(McpJsonMapper.getDefault());
    
    // 2. Créer le serveur avec capabilities
    McpSyncServer server = McpServer.sync(transport)
        .serverInfo("blog-mcp-server", "1.0.0")
        .capabilities(ServerCapabilities.builder()
            .tools(true)
            .build())
        .build();
    
  3. 工具注册

    • 使用JSON模式为参数定义工具
    • 业务逻辑处理程序
    • 错误管理 CallToolResult
  4. 能力谈判

    • 协议版本兼容性检查
    • 初始化期间的功能交换
    • 类型安全错误验证和管理

Java SDK?

  • 简单性 :没有复杂的框架配置
  • 轻 :最小依赖性
  • 便携性 :JAR独立可执行文件
  • 理解 :学习MCP协议的清晰代码
  • 演出 :通过stdio进行本地流程的直接通信

参考

📚 官方文件: MCP Java SDK概述

🚀 构建

mvn clean package

可执行JAR将在中生成 target/mcp-server-1.0-SNAPSHOT-executable.jar

⚙️ Claude桌面的配置

选项1:通过Claude配置文件进行配置

将此配置添加到Claude桌面配置文件:

在macOS上 : ~/Library/Application Support/Claude/claude_desktop_config.json

在Windows上 : %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "blog-mcp-server": {
      "command": "java",
      "args": [
        "-jar",
        "/<absolute_path>/mcp-server/target/mcp-server-1.0-SNAPSHOT-executable.jar"
      ]
    }
  }
}

⚠️ 重要 :将绝对路径替换为JAR的实际路径。

选项2:脚本配置

创建脚本 run-server.sh :

#!/bin/bash
java -jar /<absolute_path>/mcp-server/target/mcp-server-1.0-SNAPSHOT-executable.jar

然后在Claude配置中:

{
  "mcpServers": {
    "blog-mcp-server": {
      "command": "/chemin/vers/run-server.sh"
    }
  }
}

🛠️ 可用工具

1. search_articles

按关键字和/或类型搜索博客文章。

设置 :

  • query (字符串,可选):要搜索的关键字
  • type (string,optionel):键入d’article(TECHNICAL 哦 SCIENTIFIC)

例子 :

{
  "query": "Java",
  "type": "TECHNICAL"
}

2. create_article

创建新的博客文章。

设置 :

  • title (字符串,必填):文章标题
  • content (字符串,必需):文章内容
  • type (字符串,必需):项目类型(TECHNICAL 哦 SCIENTIFIC)

例子 :

{
  "title": "Introduction à Spring Boot",
  "content": "Spring Boot est un framework...",
  "type": "TECHNICAL"
}

🧪 测试手册

要手动测试服务器:

java -jar target/mcp-server-1.0-SNAPSHOT-executable.jar

服务器根据MCP协议通过stdin/stdout进行通信。

📝 示例数据

服务器从3个预加载项目开始:

  1. “Java MCP服务器简介”(技术)
  2. “理解机器学习算法”(科学)
  3. “使用Spring Boot创建RESTful API”(技术)

🔧 故障排除

错误“无法连接到MCP服务器”

  1. 检查JAR是否已生成 :

    ls -l target/mcp-server-1.0-SNAPSHOT-executable.jar
    
  2. 检查JAR是否可以运行 :

    java -jar target/mcp-server-1.0-SNAPSHOT-executable.jar
    

    服务器应显示: Serveur MCP Blog démarré et en attente de connexions

  3. 检查Claude配置中的路径 :

    • 道路必须是 绝对
    • 检查执行权限
    • 验证Java是否在路径中
  4. 检查Claude桌面日志 :

    • 在macOS上: ~/Library/Logs/Claude/
    • 查找MCP服务器错误
  5. 重新启动Claude桌面 更改配置后

📄 版本

  • Java:21
  • MCP SDK:0.16.0
  • Maven:3.x

🏗️ 建筑

src/main/java/com/rickenbazolo/mcp/
├── BlogMcpServer.java      # Serveur MCP principal
├── Article.java            # Modèle Article (record)
└── ArticleRepository.java  # Repository en mémoire