Skip to main content

systemprompt_models/a2a/
mcp_extension.rs

1//! A2A extension descriptor advertising MCP capability.
2//!
3//! Copyright (c) systemprompt.io — Business Source License 1.1.
4//! See <https://systemprompt.io> for licensing details.
5
6use crate::ai::tools::McpTool;
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
10#[serde(rename_all = "camelCase")]
11pub struct McpServerMetadata {
12    pub name: String,
13    pub endpoint: String,
14    pub auth: String,
15    pub status: String,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub version: Option<String>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub tools: Option<Vec<McpTool>>,
20}
21
22#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
23#[serde(rename_all = "camelCase")]
24pub struct McpToolsParams {
25    #[serde(default)]
26    pub supported_protocols: Vec<String>,
27    #[serde(default)]
28    pub servers: Vec<McpServerMetadata>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
32#[serde(rename_all = "camelCase")]
33pub struct MessageMetadata {
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub timestamp: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub source: Option<String>,
38}