adk-rust-mcp-common
Shared utilities and infrastructure for ADK Rust MCP Media servers.
Overview
This crate provides common functionality used across all MCP servers in the ADK Rust MCP toolkit. It's designed with provider abstraction in mind, enabling support for multiple AI backends.
┌─────────────────────────────────────────────────┐
│ MCP Servers │
├─────────────────────────────────────────────────┤
│ Provider Abstraction │
├──────────┬──────────┬──────────┬────────────────┤
│ Google │ AWS │ Azure │ Local/OSS │
│ Vertex AI│ Bedrock │ OpenAI │ Ollama etc │
└──────────┴──────────┴──────────┴────────────────┘
Currently implemented: Google Cloud (Vertex AI, Cloud TTS, Gemini)
Planned: AWS Bedrock, Azure OpenAI, Local/self-hosted models
Features
- Authentication - Google Cloud ADC and service account support (extensible to other providers)
- Configuration - Environment-based configuration loading
- GCS Client - Google Cloud Storage upload/download operations
- Error Handling - Unified error types across servers
- Transport - MCP transport abstraction (stdio, HTTP, SSE)
- Server Builder - Simplified MCP server construction
- Model Registry - Centralized model definitions and aliases
Installation
Add to your Cargo.toml:
[]
= "0.1"
Optional Features
otel- Enable OpenTelemetry tracing support
[]
= { = "0.1", = ["otel"] }
Usage
Configuration
use Config;
// Load from environment variables
let config = from_env?;
println!;
println!;
Required environment variables:
PROJECT_ID- Google Cloud project ID
Optional:
LOCATION- GCP region (default:us-central1)GCS_BUCKET- Default GCS bucket for outputsPORT- HTTP/SSE server port (default:8080)
Authentication
use AuthProvider;
let auth = new.await?;
let token = auth.get_token.await?;
GCS Operations
use ;
let gcs = with_auth;
// Parse URI
let uri = parse?;
// Upload
gcs.upload.await?;
// Download
let data = gcs.download.await?;
MCP Server Builder
use ;
let server = new;
let transport = args.transport.into_transport;
new
.with_transport
.run
.await?;
Transport Options
All servers support three transport modes:
| Transport | Use Case | Flag |
|---|---|---|
| Stdio | Claude Desktop, Kiro | --transport stdio (default) |
| HTTP | Web apps, ADK agents | --transport http --port 8080 |
| SSE | Real-time streaming | --transport sse --port 8080 |
Model Registry
use ModelRegistry;
// Resolve model aliases
let model = resolve_imagen;
// Returns: Some(ImagenModel { id: "imagen-4.0-generate-preview-06-06", ... })
let model = resolve_veo;
// Returns: Some(VeoModel { id: "veo-3.0-generate-preview", ... })
Error Handling
use Error;
// Validation error
return Err;
// API error
return Err;
// Storage error
return Err;
License
Apache-2.0