a2a-server-config

A2A Server Configuration

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "a2a-server-config" with this command: npx skills add vanman2024/ai-dev-marketplace/vanman2024-ai-dev-marketplace-a2a-server-config

A2A Server Configuration

Provides complete patterns and templates for configuring Agent-to-Agent (A2A) servers with different transport mechanisms (HTTP, STDIO, SSE, WebSocket) following MCP (Model Context Protocol) standards.

Security: API Key Handling

CRITICAL: When generating any configuration files or code:

NEVER hardcode actual API keys or secrets

NEVER include real credentials in examples

NEVER commit sensitive values to git

ALWAYS use placeholders: your_service_key_here

ALWAYS create .env.example with placeholders only

ALWAYS add .env* to .gitignore (except .env.example )

ALWAYS read from environment variables in code

ALWAYS document where to obtain keys

Placeholder format: {service}_{env}_your_key_here

Instructions

Phase 1: Analyze Requirements

Determine server configuration needs:

Transport Type

  • HTTP: Remote access, REST-like communication, CORS support

  • STDIO: Local process communication, pipe-based I/O

  • SSE (Server-Sent Events): Real-time streaming, one-way server push

  • WebSocket: Bidirectional real-time communication

Framework Detection

  • Python: FastAPI, Flask, Starlette

  • TypeScript: Express, Fastify, Node.js native http

  • Detect from package.json or requirements.txt

Configuration Needs

  • Port and host settings

  • CORS configuration

  • Authentication requirements

  • Environment variables

Phase 2: Select and Load Templates

Based on requirements, use templates from templates/ :

Python Templates:

  • templates/python-http-server.py

  • FastAPI HTTP server

  • templates/python-stdio-server.py

  • STDIO transport

  • templates/python-sse-server.py

  • SSE streaming

  • templates/python-websocket-server.py

  • WebSocket bidirectional

TypeScript Templates:

  • templates/typescript-http-server.ts

  • Express HTTP server

  • templates/typescript-stdio-server.ts

  • STDIO transport

  • templates/typescript-sse-server.ts

  • SSE streaming

  • templates/typescript-websocket-server.ts

  • WebSocket bidirectional

Phase 3: Configure Transport

Apply configuration based on transport type:

HTTP Configuration:

Python (FastAPI)

if name == "main": import uvicorn uvicorn.run( "main:app", host="0.0.0.0", port=8000, reload=True )

// TypeScript (Express) const PORT = process.env.PORT || 8000; app.listen(PORT, () => { console.log(Server running on port ${PORT}); });

STDIO Configuration:

Python

mcp.run(transport="stdio")

// TypeScript server.connect(new StdioServerTransport());

SSE Configuration:

Python

@app.get("/events") async def events(): return EventSourceResponse(event_generator())

WebSocket Configuration:

Python

@app.websocket("/ws") async def websocket_endpoint(websocket: WebSocket): await websocket.accept()

Phase 4: Add CORS and Security

For HTTP/SSE/WebSocket servers:

Python

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware( CORSMiddleware, allow_origins=[""], # Configure appropriately allow_credentials=True, allow_methods=[""], allow_headers=["*"], )

// TypeScript import cors from 'cors'; app.use(cors({ origin: process.env.ALLOWED_ORIGINS?.split(',') || '*', credentials: true }));

Phase 5: Environment Configuration

Create .env.example with placeholders:

Server Configuration

PORT=8000 HOST=0.0.0.0 ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5173

API Keys (NEVER commit real values)

ANTHROPIC_API_KEY=your_anthropic_key_here OPENAI_API_KEY=your_openai_key_here

Transport Settings

TRANSPORT_TYPE=http ENABLE_CORS=true

Phase 6: Validation

Run validation script:

bash scripts/validate-config.sh <server-file>

Checks:

  • No hardcoded API keys

  • Environment variable usage

  • CORS configuration

  • Transport setup validity

  • .gitignore includes .env files

Scripts

  • scripts/validate-config.sh

  • Validate server configuration

  • scripts/generate-server.sh

  • Generate server from template

  • scripts/test-transport.sh

  • Test transport connectivity

Templates

Python:

  • templates/python-http-server.py

  • HTTP server with FastAPI

  • templates/python-stdio-server.py

  • STDIO transport

  • templates/python-sse-server.py

  • SSE streaming server

  • templates/python-websocket-server.py

  • WebSocket server

TypeScript:

  • templates/typescript-http-server.ts

  • HTTP server with Express

  • templates/typescript-stdio-server.ts

  • STDIO transport

  • templates/typescript-sse-server.ts

  • SSE streaming server

  • templates/typescript-websocket-server.ts

  • WebSocket server

Examples

  • examples/http-fastapi-example.md

  • Complete HTTP server with FastAPI

  • examples/stdio-simple-example.md

  • Basic STDIO server

  • examples/sse-streaming-example.md

  • SSE streaming configuration

  • examples/websocket-bidirectional-example.md

  • WebSocket bidirectional communication

Requirements

  • Framework-specific dependencies (FastAPI/Express/etc.)

  • CORS middleware for HTTP/SSE/WebSocket

  • Environment variable management (python-dotenv/dotenv)

  • No hardcoded API keys or secrets

  • .gitignore protection for sensitive files

Use Cases

Setting up HTTP server for remote A2A communication

  • Load http template

  • Configure CORS

  • Set environment variables

  • Validate configuration

Configuring STDIO for local agent communication

  • Load stdio template

  • Configure process pipes

  • Test connectivity

Implementing SSE for real-time agent updates

  • Load sse template

  • Configure event streams

  • Set up CORS

  • Test streaming

Setting up WebSocket for bidirectional agent chat

  • Load websocket template

  • Configure connection handling

  • Set up authentication

  • Test bidirectional flow

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

document-parsers

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

stt-integration

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

model-routing-patterns

No summary provided by upstream source.

Repository SourceNeeds Review