IBM's Azure Foundry Enterprise Kit

Contributing

Overview

Contributions to the Azure Foundry Enterprise Kit are welcome from internal teams and authorized partners. All contributions must align with Azure AI Foundry patterns, use the azure-ai-projects SDK 2.0, and follow the Foundry Toolbox MCP integration model. This guide covers the development workflow, coding standards, and review process.

Development Setup

# Clone and install
git clone https://github.com/your-org/azure-foundry-enterprise-kit.git
cd azure-foundry-enterprise-kit

# Python environment
python -m venv .venv
source .venv/bin/activate
pip install -e ".[adapters,dev]"

# Run tests
pytest tests/ -v --cov

# Lint
ruff check .
mypy trust-extensions/ adapters/

Project Structure

  • adapters/ — MCP adapters (Python, FastAPI)
  • agent-templates/ — Agent blueprints (YAML manifests + prompts)
  • eval-packs/ — Evaluators and datasets
  • infra/bicep/ — Infrastructure as Code
  • policy-packs/ — Declarative governance policies
  • sdk-starters/ — Python and TypeScript SDK clients
  • trust-extensions/ — Decision Ledger, Scorecard, Cert Pipeline
  • observability/ — Monitoring workbooks and KQL queries
  • tests/ — Test suite (pytest)
  • website/ — Documentation website (Next.js + Carbon)

Coding Standards

Python

  • Python 3.11+ required
  • Ruff for linting (line length: 120)
  • MyPy for type checking (strict mode for trust-extensions)
  • Pytest for testing (coverage gate: 60%)
  • Async-first for all adapters and trust extensions
  • Use azure-ai-projects SDK 2.0 for all Foundry interactions
  • Use azure-identity (DefaultAzureCredential) for authentication

TypeScript

  • TypeScript 5.x strict mode
  • ESLint with Next.js config for website
  • Azure AI Projects SDK patterns

Bicep

  • Subscription-scoped deployments
  • Module-per-resource pattern (10 modules in infra/bicep/modules/)
  • Parameter files per environment (dev, staging, prod)
  • No hardcoded secrets — Azure Key Vault references only
  • Private endpoints and VNet integration for all data-plane services
  • Managed identity for all service-to-service authentication

Pull Request Process

  1. Create a feature branch from main
  2. Make changes following coding standards
  3. Add/update tests for any new functionality
  4. Run pytest tests/ -v --cov and ensure coverage gate passes
  5. Run ruff check . and fix any issues
  6. Update documentation if behavior changes
  7. Submit PR with clear description
  8. Address review feedback

Adding a New Adapter

  1. Create directory under adapters/<system-name>/
  2. Implement FastAPI app with /mcp/tools, /mcp/call, /health
  3. Define MCP_TOOL_SCHEMAS list and _TOOL_HANDLERS dict
  4. Implement Azure Cache for Redis-backed token caching, secrets from Azure Key Vault
  5. Register adapter in Foundry Toolbox with appropriate MCP Auth pattern
  6. Add tests in tests/test_adapters.py
  7. Update docs/ADAPTERS.md and website docs

Adding a New Trust Extension

  1. Create module in trust-extensions/
  2. Follow async patterns from existing extensions
  3. Add Azure Cosmos DB schema if persistence needed
  4. Wire telemetry to Azure Application Insights
  5. Register in trust-extensions/__init__.py
  6. Add tests and documentation