Skip to content

đź§© Build AI-powered MCP Tools with Azure Functions, Durable Agents & Cosmos vector search. Features orchestrated multi-agent workflows using OpenAI.

License

Notifications You must be signed in to change notification settings

Azure-Samples/snippy

Snippy

Open in GitHub Codespaces Open in Dev Containers

Snippy is an Azure Functions-based reference application that demonstrates how to build MCP (Model Context Protocol) tools that integrate with AI assistants like GitHub Copilot. It showcases a modern serverless AI application architecture where Azure Functions serve as both traditional APIs and MCP-compatible tools that AI assistants can discover and use.

Snippy Architecture

The system uses Durable Task Scheduler to orchestrate multi-agent workflows, Cosmos DB with vector indexing for semantic code search, and Azure OpenAI for embeddings and LLM capabilities. The project ships with reproducible azd infrastructure—azd up deploys the entire stack and works with both local Docker-based emulators and Azure cloud services.

Important Security Notice This repository is intended for learning and demonstration purposes. Do not deploy it to production without a thorough security review. At a minimum you should:

  • Swap connection strings for Managed Identity + Azure Key Vault
  • Restrict network access to Azure services via Private Endpoints or service‑tags
  • Enable GitHub secret‑scanning and CI security tools

Features • Lab Tutorial • Getting Started • Guidance


Features

  • MCP Tool Integration – expose Azure Functions as discoverable MCP tools for AI assistants
  • Durable Agents with Microsoft Agent Framework – build stateful AI agents using ChatAgent with automatic conversation history management
  • Multi-Agent Orchestration – coordinate specialized agents (DeepWiki, CodeStyle) using Durable Task Scheduler with fan-out/fan-in patterns
  • Vector Search on Cosmos DB DiskANN – semantic code retrieval using Azure OpenAI embeddings and low-latency vector indexing
  • Monitoring & Observability – track orchestrations in real-time using DTS dashboard (localhost:8082 local, Azure portal for cloud)
  • One-click Deploy – azd up provisions and deploys complete infrastructure including Functions, Cosmos DB, Azure OpenAI, and DTS
  • Codespaces & Dev Containers – fully configured development environment in your browser or local VS Code

Tool Matrix

Tool Name Purpose
save_snippet Save code snippets with vector embeddings for semantic search
get_snippet Retrieve previously saved code snippets by their unique name
code_style Generate language-specific code style guides from saved snippets
deep_wiki Create comprehensive wiki documentation by analyzing code snippets
generate_comprehensive_documentation Orchestrate multi-agent workflow to produce deep wiki and style guide

Lab Tutorial

New to Snippy? Start with our comprehensive hands-on lab tutorial that guides you through building the entire application from scratch:

📚 Snippy Tutorial: Building an AI-Enhanced Code Snippet Manager

The tutorial covers:

  • Step-by-step implementation – Build the complete application with detailed explanations
  • Code review exercises – Understand MCP tools, durable agents, and vector search patterns
  • Local development – Set up and test with Docker-based emulators
  • Azure deployment – Provision and deploy to production with azd
  • Multi-agent orchestration – Monitor complex workflows with DTS dashboard
  • End-to-end testing – Test with REST Client, GitHub Copilot, and MCP tools

Additional Resources:

Whether you're new to Azure Functions, MCP tools, or AI agent development, the lab provides a structured learning path with hands-on experience.

Getting Started

Prerequisites

  • Azure subscription with permissions to create resources
  • azd CLI installed
  • Choose your development environment:
    • GitHub Codespaces (fastest, no local setup required)
    • VS Code Dev Containers (requires Docker Desktop)
    • Local development (requires Python 3.11, Node 18+, Azure Functions Core Tools v4)

Deploy to Azure

Using GitHub Codespaces:

Click the "Open in GitHub Codespaces" badge above, then run:

azd auth login --use-device-code
azd up

Using Dev Containers or Local Environment:

azd init --template Azure-Samples/snippy
azd auth login
azd up

The azd up command will:

  • Prompt for an Azure region (recommend eastus or swedencentral)
  • Provision all resources (Functions, Cosmos DB, Azure OpenAI, DTS)
  • Create an Azure AD app registration for authentication
  • Deploy the application code

When complete, the Function App URL and MCP endpoint will be displayed. See the tutorial for detailed instructions on local development, testing with emulators, and monitoring orchestrations.


Guidance

Region Availability

Azure OpenAI model support varies by region. Verify availability here and choose the same region for all Azure resources. eastus and swedencentral are good default choices.

Security

Snippy uses User-Assigned Managed Identity for secure service-to-service authentication. The infrastructure is configured with:

  • User-Assigned Managed Identity on the Function App with appropriate RBAC roles:
    • Cosmos DB Data Contributor
    • Storage Blob Data Owner and Queue Data Contributor
    • Application Insights Monitoring Metrics Publisher
    • Azure AI Project Developer

For production deployments, we recommend:

  • Restrict inbound traffic with Private Endpoints + VNet integration
  • Enable network security features like service endpoints and firewall rules

Contributing

Standard fork → branch → PR workflow. Use Conventional Commits (feat:, fix:) in commit messages.


License

MIT © Microsoft Corporation

About

đź§© Build AI-powered MCP Tools with Azure Functions, Durable Agents & Cosmos vector search. Features orchestrated multi-agent workflows using OpenAI.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published