1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/*#![allow(dead_code)]
use rmcp::{handler::server::{
wrapper::Parameters,
}, schemars, tool, tool_router, ErrorData};
use rmcp::model::{CallToolResult, ErrorCode};
use rmcp::schemars::JsonSchema;
use serde::Deserialize;
use serde_json::json;
use crate::error::public_data_error::PublicDataError;
use crate::model::key_value::KeyValue;
use crate::tool::McpTool;
#[derive(Debug, Deserialize, JsonSchema)]
struct McpCreateKeyValueRequest {
#[schemars(description = "Bucket name")]
bucket: String,
#[schemars(description = "Object name")]
object: String,
#[schemars(description = "Base64 encoded content of the value")]
content: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
struct McpGetKeyValueRequest {
#[schemars(description = "Bucket name")]
bucket: String,
#[schemars(description = "Object name")]
object: String,
}
fn to_error_data(error: PublicDataError) -> ErrorData {
ErrorData::new(ErrorCode::INTERNAL_ERROR, error.to_string(), None)
}
#[tool_router(router = key_value_tool_router, vis = "pub")]
impl McpTool {
#[tool(description = "Create a new key/value pair in a bucket with base64 encoded content")]
async fn create_key_value(
&self,
Parameters(McpCreateKeyValueRequest { bucket, object, content }): Parameters<McpCreateKeyValueRequest>,
) -> Result<CallToolResult, ErrorData> {
let key_value = KeyValue::new(content);
self.key_value_service.create_key_value(
bucket.clone(),
object.clone(),
key_value,
self.evm_wallet.get_ref().clone(),
crate::controller::StoreType::Network,
).await.map_err(to_error_data)?;
Ok(CallToolResult::structured(json!({
"bucket": bucket,
"object": object,
"status": "created"
})))
}
#[tool(description = "Get a key/value pair from a bucket with base64 encoded content")]
async fn get_key_value(
&self,
Parameters(McpGetKeyValueRequest { bucket, object }): Parameters<McpGetKeyValueRequest>,
) -> Result<CallToolResult, ErrorData> {
let key_value = self.key_value_service.get_key_value(bucket, object).await.map_err(to_error_data)?;
Ok(CallToolResult::structured(json!({
"content": key_value.content
})))
}
}
*/