Skip to main content

smg_mcp/
lib.rs

1//! Model Context Protocol (MCP) client implementation.
2//!
3//! ## Modules
4//!
5//! - [`core`]: MCP client infrastructure (manager, config, connections)
6//! - [`inventory`]: Tool storage and indexing
7//! - [`approval`]: Approval system for tool execution
8//!
9//! ## Shared Types
10//!
11//! - [`ToolAnnotations`]: Tool behavior hints (read_only, destructive, etc.)
12//! - [`TenantContext`]: Per-tenant isolation and configuration
13
14// Shared types (used across modules)
15pub mod annotations;
16pub mod error;
17pub mod tenant;
18pub mod transform;
19
20// Subsystems
21pub mod approval;
22pub mod core;
23pub mod inventory;
24pub mod responses_bridge;
25
26// Backward-compatible re-exports (old module paths)
27// These allow `mcp::config::*` to continue working
28pub use core::{config, pool as connection_pool};
29// Re-export from core
30pub use core::{
31    ArgMappingConfig, BuiltinToolType, ConfigValidationError, HandlerRequestContext,
32    LatencySnapshot, McpConfig, McpMetrics, McpOrchestrator, McpRequestContext, McpServerBinding,
33    McpServerConfig, McpToolSession, McpTransport, MetricsSnapshot, PolicyConfig,
34    PolicyDecisionConfig, PoolKey, RefreshRequest, ResponseFormatConfig, ServerPolicyConfig,
35    SmgClientHandler, Tool, ToolCallResult, ToolConfig, ToolExecutionInput, ToolExecutionOutput,
36    TrustLevelConfig, DEFAULT_SERVER_LABEL,
37};
38
39// Re-export shared types
40pub use annotations::{AnnotationType, ToolAnnotations};
41// Re-export from approval
42pub use approval::{
43    ApprovalDecision, ApprovalKey, ApprovalManager, ApprovalMode, ApprovalOutcome, ApprovalParams,
44    AuditEntry, AuditLog, DecisionResult, DecisionSource, McpApprovalRequest, McpApprovalResponse,
45    PolicyDecision, PolicyEngine, PolicyRule, RuleCondition, RulePattern, ServerPolicy, TrustLevel,
46};
47pub use error::{ApprovalError, McpError, McpResult};
48// Re-export from inventory
49pub use inventory::{
50    AliasTarget, ArgMapping, QualifiedToolName, ToolCategory, ToolEntry, ToolInventory,
51};
52pub use responses_bridge::{
53    build_chat_function_tools, build_chat_function_tools_with_names, build_function_tools_json,
54    build_function_tools_json_with_names, build_mcp_list_tools_item, build_mcp_list_tools_json,
55    build_mcp_tool_infos, build_response_tools, build_response_tools_with_names,
56};
57pub use tenant::{SessionId, TenantContext, TenantId};
58// Re-export from transform
59pub use transform::{mcp_response_item_id, ResponseFormat, ResponseTransformer};