pub struct JsonRpcRequest {
pub jsonrpc: String,
pub id: RequestId,
pub method: String,
pub params: Option<Value>,
}Expand description
JSON-RPC 2.0 request message.
Represents a request from client to server that expects a response. All MCP operations (except notifications) use this message type.
Fields§
§jsonrpc: StringJSON-RPC version (always “2.0”)
id: RequestIdUnique identifier for request/response correlation
method: StringMethod name being invoked
params: Option<Value>Parameters for the method (can be object or array)
Implementations§
Source§impl JsonRpcRequest
impl JsonRpcRequest
Sourcepub fn new(
id: impl Into<RequestId>,
method: impl Into<String>,
params: Value,
) -> Self
pub fn new( id: impl Into<RequestId>, method: impl Into<String>, params: Value, ) -> Self
Create a new JSON-RPC request with the given ID, method, and parameters.
§Examples
use mcp_probe_core::messages::core::JsonRpcRequest;
use serde_json::json;
let request = JsonRpcRequest::new(
"1".to_string(),
"initialize".to_string(),
json!({"protocolVersion": "2024-11-05"}),
);Sourcepub fn without_params(
id: impl Into<RequestId>,
method: impl Into<String>,
) -> Self
pub fn without_params( id: impl Into<RequestId>, method: impl Into<String>, ) -> Self
Create a new JSON-RPC request without parameters.
§Examples
use mcp_probe_core::messages::core::JsonRpcRequest;
let request = JsonRpcRequest::without_params("1", "tools/list");Sourcepub fn with_random_id(method: impl Into<String>, params: Value) -> Self
pub fn with_random_id(method: impl Into<String>, params: Value) -> Self
Generate a new request with a random UUID as the ID.
This is useful when you don’t need to track specific request IDs.
Sourcepub fn has_params(&self) -> bool
pub fn has_params(&self) -> bool
Check if this request has parameters.
Sourcepub fn params_as<T>(&self) -> Result<T, Error>where
T: for<'de> Deserialize<'de>,
pub fn params_as<T>(&self) -> Result<T, Error>where
T: for<'de> Deserialize<'de>,
Get the parameters as a specific type.
§Examples
use mcp_probe_core::messages::core::JsonRpcRequest;
use serde_json::json;
use serde::{Deserialize, Serialize};
#[derive(Deserialize, Serialize)]
struct InitParams {
#[serde(rename = "protocolVersion")]
protocol_version: String,
}
let request = JsonRpcRequest::new(
"1",
"initialize",
json!({"protocolVersion": "2024-11-05"})
);
let params: InitParams = request.params_as().unwrap();
assert_eq!(params.protocol_version, "2024-11-05");Trait Implementations§
Source§impl Clone for JsonRpcRequest
impl Clone for JsonRpcRequest
Source§fn clone(&self) -> JsonRpcRequest
fn clone(&self) -> JsonRpcRequest
Returns a duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for JsonRpcRequest
impl Debug for JsonRpcRequest
Source§impl<'de> Deserialize<'de> for JsonRpcRequest
impl<'de> Deserialize<'de> for JsonRpcRequest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl From<JsonRpcRequest> for JsonRpcMessage
impl From<JsonRpcRequest> for JsonRpcMessage
Source§fn from(req: JsonRpcRequest) -> Self
fn from(req: JsonRpcRequest) -> Self
Converts to this type from the input type.
Source§impl PartialEq for JsonRpcRequest
impl PartialEq for JsonRpcRequest
Source§impl Serialize for JsonRpcRequest
impl Serialize for JsonRpcRequest
impl Eq for JsonRpcRequest
impl StructuralPartialEq for JsonRpcRequest
Auto Trait Implementations§
impl Freeze for JsonRpcRequest
impl RefUnwindSafe for JsonRpcRequest
impl Send for JsonRpcRequest
impl Sync for JsonRpcRequest
impl Unpin for JsonRpcRequest
impl UnwindSafe for JsonRpcRequest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.