File tree Expand file tree Collapse file tree 4 files changed +18
-0
lines changed Expand file tree Collapse file tree 4 files changed +18
-0
lines changed Original file line number Diff line number Diff line change @@ -20,6 +20,7 @@ rmcp = { workspace = true, features = [
20
20
" reqwest" ,
21
21
" transport-child-process" ,
22
22
" transport-sse-client" ,
23
+ " transport-streamable-http-client"
23
24
] }
24
25
anyhow = " 1.0"
25
26
serde_json = " 1"
Original file line number Diff line number Diff line change @@ -14,6 +14,9 @@ pub struct McpServerConfig {
14
14
#[ derive( Debug , Serialize , Deserialize , Clone ) ]
15
15
#[ serde( tag = "protocol" , rename_all = "lowercase" ) ]
16
16
pub enum McpServerTransportConfig {
17
+ Streamable {
18
+ url : String ,
19
+ } ,
17
20
Sse {
18
21
url : String ,
19
22
} ,
@@ -60,6 +63,11 @@ impl McpConfig {
60
63
impl McpServerTransportConfig {
61
64
pub async fn start ( & self ) -> anyhow:: Result < RunningService < RoleClient , ( ) > > {
62
65
let client = match self {
66
+ McpServerTransportConfig :: Streamable { url } => {
67
+ let transport =
68
+ rmcp:: transport:: StreamableHttpClientTransport :: from_uri ( url. to_string ( ) ) ;
69
+ ( ) . serve ( transport) . await ?
70
+ }
63
71
McpServerTransportConfig :: Sse { url } => {
64
72
let transport = rmcp:: transport:: SseClientTransport :: start ( url. to_string ( ) ) . await ?;
65
73
( ) . serve ( transport) . await ?
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ rmcp = { workspace = true, features = [
18
18
" client" ,
19
19
" transport-child-process" ,
20
20
" transport-sse-client" ,
21
+ " transport-streamable-http-client" ,
21
22
" reqwest"
22
23
], no-default-features = true }
23
24
clap = { version = " 4.0" , features = [" derive" ] }
Original file line number Diff line number Diff line change @@ -29,6 +29,9 @@ pub struct McpServerConfig {
29
29
#[ derive( Debug , Serialize , Deserialize , Clone ) ]
30
30
#[ serde( tag = "protocol" , rename_all = "lowercase" ) ]
31
31
pub enum McpServerTransportConfig {
32
+ Streamable {
33
+ url : String ,
34
+ } ,
32
35
Sse {
33
36
url : String ,
34
37
} ,
@@ -44,6 +47,11 @@ pub enum McpServerTransportConfig {
44
47
impl McpServerTransportConfig {
45
48
pub async fn start ( & self ) -> Result < RunningService < RoleClient , ( ) > > {
46
49
let client = match self {
50
+ McpServerTransportConfig :: Streamable { url } => {
51
+ let transport =
52
+ rmcp:: transport:: StreamableHttpClientTransport :: from_uri ( url. to_string ( ) ) ;
53
+ ( ) . serve ( transport) . await ?
54
+ }
47
55
McpServerTransportConfig :: Sse { url } => {
48
56
let transport =
49
57
rmcp:: transport:: sse_client:: SseClientTransport :: start ( url. to_owned ( ) ) . await ?;
You can’t perform that action at this time.
0 commit comments