Skip to content

Commit 6d64322

Browse files
MCP server shall be stateful for now since MCP clients do not support widely stateless mode (?)
1 parent 3b615b1 commit 6d64322

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

src/responder/manager.rs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ use actix_web_httpauth::{
1717
},
1818
middleware::HttpAuthentication,
1919
};
20-
use rmcp::transport::streamable_http_server::session::never::NeverSessionManager;
20+
use rmcp::transport::streamable_http_server::session::local::LocalSessionManager;
2121
use rmcp_actix_web::transport::StreamableHttpService;
2222
use std::{sync::Arc, time::Duration};
2323
use tera::Tera;
@@ -52,11 +52,16 @@ pub fn run() {
5252
);
5353

5454
// Prepare MCP services (if enabled)
55+
// Notice: it makes no sense for Vigil to be a stateful MCP server, but \
56+
// unfortunately as of Sept 2025 many MCP client do not seem to support \
57+
// stateless servers yet. Therefore, for the moment, Vigil behaves as a \
58+
// stateful MCP server for wide compatibility. This may be changed to \
59+
// stateless mode and 'NeverSessionManager' in the future.
5560
let mcp_services = if APP_CONF.server.mcp_server == true {
5661
Some((StreamableHttpService::builder()
5762
.service_factory(Arc::new(|| Ok(mcp::Probes::new())))
58-
.session_manager(Arc::new(NeverSessionManager::default()))
59-
.stateful_mode(false)
63+
.session_manager(Arc::new(LocalSessionManager::default()))
64+
.stateful_mode(true)
6065
.sse_keep_alive(MCP_SSE_KEEPALIVE_SECONDS)
6166
.build(),))
6267
} else {

0 commit comments

Comments
 (0)