mcprotocol_rs/server_features/
resources.rs

1use async_trait::async_trait;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5use crate::Result;
6
7/// Represents a resource
8#[derive(Debug, Clone, Serialize, Deserialize)]
9pub struct Resource {
10    /// Unique identifier for the resource
11    pub id: String,
12    /// Resource type (e.g., "file", "git", "database")
13    pub type_: String,
14    /// Resource metadata
15    pub metadata: Value,
16    /// Optional content
17    pub content: Option<Value>,
18}
19
20/// Resource manager trait
21#[async_trait]
22pub trait ResourceManager: Send + Sync {
23    /// Lists available resources
24    async fn list_resources(&self) -> Result<Vec<Resource>>;
25
26    /// Gets a specific resource by ID
27    async fn get_resource(&self, id: &str) -> Result<Resource>;
28
29    /// Creates a new resource
30    async fn create_resource(&self, resource: Resource) -> Result<()>;
31
32    /// Updates an existing resource
33    async fn update_resource(&self, id: &str, resource: Resource) -> Result<()>;
34
35    /// Deletes a resource
36    async fn delete_resource(&self, id: &str) -> Result<()>;
37}