Skip to content

Commit 1377276

Browse files
committed
更新readme
1 parent e6f4051 commit 1377276

File tree

1 file changed

+78
-6
lines changed
  • framework/fel/java/plugins/tool-mcp-server

1 file changed

+78
-6
lines changed

framework/fel/java/plugins/tool-mcp-server/README.md

Lines changed: 78 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,50 @@
1-
# FitMcpStreamableServerTransportProvider类维护文档
1+
# MCP Server 插件维护文档
22

33
## 文档概述
44

5-
本文档用于记录 `FitMcpStreamableServerTransportProvider` 类的设计、实现细节以及维护更新指南。该类是基于 MCP SDK 中的
6-
`HttpServletStreamableServerTransportProvider` 类改造而来,用于在 FIT 框架中提供 MCP(Model Context Protocol)服务端的传输层实现。
7-
8-
**原始参考类**: MCP SDK 中的 `HttpServletStreamableServerTransportProvider`
5+
本文档用于记录 MCP Server 插件的设计、实现细节以及维护更新指南。该插件基于 MCP SDK 改造而来,用于在 FIT 框架中提供 MCP(Model Context Protocol)服务端的传输层实现。
96

107
**创建时间**: 2025-11-04
118

129
---
1310

14-
## 类的作用和职责
11+
## 架构概览
12+
13+
### DefaultMcpServer 的双 Bean 管理
14+
15+
`DefaultMcpServer` 是 MCP Server 的核心实现类,它同时管理两个 MCP 同步服务器 Bean:
16+
17+
1. **McpSyncSseServer** - 用于 SSE (Server-Sent Events) 传输
18+
2. **McpSyncStreamableServer** - 用于 Streamable 传输
19+
20+
这两个 Bean 分别由 `McpSseServerConfig``McpStreamableServerConfig` 配置类创建,并通过 `@Fit(alias = "...")` 注解进行区分注入:
21+
22+
```java
23+
// McpSseServerConfig.java
24+
@Bean("McpSyncSseServer")
25+
public McpSyncServer mcpSyncSseServer(...) { ... }
26+
27+
// McpStreamableServerConfig.java
28+
@Bean("McpSyncStreamableServer")
29+
public McpSyncServer mcpSyncStreamableServer(...) { ... }
30+
31+
// DefaultMcpServer.java
32+
public DefaultMcpServer(ToolExecuteService toolExecuteService,
33+
@Fit(alias = "McpSyncSseServer") McpSyncServer mcpSyncSseServer,
34+
@Fit(alias = "McpSyncStreamableServer") McpSyncServer mcpSyncStreamableServer) {
35+
...
36+
}
37+
```
38+
39+
`DefaultMcpServer` 实现了 `McpServer``ToolChangedObserver` 接口,负责:
40+
- 统一管理两个传输类型的工具注册和移除
41+
- 确保两个 MCP 同步服务器保持工具列表同步
42+
- 处理工具执行请求并返回结果
43+
- 通知工具变更观察者
44+
45+
---
46+
47+
## FitMcpStreamableServerTransportProvider 类的作用和职责
1548

1649
`FitMcpStreamableServerTransportProvider` 是 MCP 服务端传输层的核心实现类,负责:
1750

@@ -307,6 +340,45 @@ if(!this.response.isActive()){
307340
}
308341
```
309342

343+
---
344+
345+
## FitMcpSseServerTransportProvider 简要说明
346+
347+
`FitMcpSseServerTransportProvider` 是基于 MCP SDK 中的 `HttpServletSseServerTransportProvider` 改造而来的 FIT 框架实现,用于提供 MCP SSE 传输层。
348+
349+
### 与 Streamable 的主要区别
350+
351+
`FitMcpSseServerTransportProvider` 的实现与 `FitMcpStreamableServerTransportProvider` 非常相似,主要区别在于:
352+
353+
1. **端点路径**
354+
- SSE: `/mcp/sse` (GET) 和 `/mcp/message` (POST)
355+
- Streamable: `/mcp/streamable` (GET/POST/DELETE)
356+
357+
2. **协议版本支持**
358+
- SSE: 仅支持 `MCP_2024_11_05`
359+
- Streamable: 支持 `MCP_2024_11_05``MCP_2025_03_26``MCP_2025_06_18`
360+
361+
3. **请求处理**
362+
- SSE: GET 请求用于建立 SSE 连接,POST 请求用于发送 JSON-RPC 消息
363+
- Streamable: GET 请求用于建立 SSE 连接或重放消息,POST 请求处理初始化和其他 JSON-RPC 消息,DELETE 请求用于删除会话
364+
365+
4. **会话管理**
366+
- SSE: 使用 `McpServerSession`,会话通过 GET 请求建立
367+
- Streamable: 使用 `McpStreamableServerSession`,会话通过 POST 初始化请求建立
368+
369+
### 核心改造点
370+
371+
与 Streamable 版本类似,SSE 版本也进行了以下 FIT 框架改造:
372+
373+
- 使用 `HttpClassicServerRequest``HttpClassicServerResponse` 替代 Servlet API
374+
- 使用 `Choir<TextEvent>``Emitter<TextEvent>` 实现 SSE 事件流
375+
- 使用 FIT 的 HTTP 注解 (`@GetMapping`, `@PostMapping`) 处理请求
376+
- 使用 `Entity.createText()``Entity.createObject()` 创建响应
377+
378+
详细的实现细节可以参考 `FitMcpStreamableServerTransportProvider` 的相关章节。
379+
380+
---
381+
310382
## 参考资源
311383

312384
### MCP 协议文档

0 commit comments

Comments
 (0)