This repository demonstrates how to build, expose, and interact with an agent as an MCP (Model Context Protocol) server using the Microsoft Agent Framework with Azure OpenAI.
{
"mcpServers": {
"agent-as-mcp-server-maf": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
This repository demonstrates how to build, expose, and interact with an agent as an MCP (Model Context Protocol) server using the Microsoft Agent Framework with Azure OpenAI.
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
License not specified.
Is it maintained?
Last commit 164 days ago. 12 stars.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Dynamic problem-solving through sequential thought chains
A Model Context Protocol server for searching and analyzing arXiv papers
An open-source AI agent that brings the power of Gemini directly into your terminal.
The official Python SDK for Model Context Protocol servers and clients
MCP Security Weekly
Get CVE alerts and security updates for Agent As Mcp Server MAF and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
This repo demonstrates how to expose an agent as an MCP server using the Microsoft Agent Framework (MAF), and how to connect to it from:
mcp-ping.py), andclient-local-mcp.py) that uses the local MCP server as a tool.It uses the STDIO transport for MCP, which means the client launches the server as a subprocess and the two sides exchange JSON‑RPC messages over stdin/stdout.
Files
agent-as-mcp-svr.py— MCP server that exposes the agent viaagent.as_mcp_server()andstdio_server().mcp-ping.py— Minimal client that launches the server withstdio_client(), lists tools, and calls the agent tool.client-local-mcp.py— ChatAgent orchestration example usingMCPStdioToolto connect to the local server.
pip install --pre agent-framework mcp anyio azure-identity python-dotenv
If you use Azure OpenAI (recommended):
export AZURE_OPENAI_ENDPOINT="https://<your-endpoint>.cognitiveservices.azure.com/"
export AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME="gpt-4o" # responses / agent usage
export AZURE_OPENAI_CHAT_DEPLOYMENT_NAME="gpt-4o" # optional for chat client
export AZURE_OPENAI_API_VERSION="2025-03-01-preview" # or 'preview'
# One of:
export AZURE_OPENAI_API_KEY="<your-key>" # simplest
# OR AAD-based:
# (unset REQUESTS_CA_BUNDLE SSL_CERT_FILE; az login)
# export AZURE_USE_CLI=1
Corporate CA bundle users: ensure
REQUESTS_CA_BUNDLE(and optionallySSL_CERT_FILE) point to a valid PEM path. Foraz login, you may need to temporarily unset those vars.
This starts the server as a subprocess and calls the agent tool:
python mcp-ping.py
Expected output (abridged):
TOOLS: ['RestaurantAgent']
== RestaurantAgent input schema ==
{ ... JSON schema ... }
== Health Check (JSON) ==
{ "status": "ok", "endpoint": "...", ... }
This lets a ChatAgent use the local MCP server as a tool:
python client-local-mcp.py
It will run a sequence of prompts (health check, menu list, dietary filter, pricing, happy hour).
mcp-ping.py (they start the server and speak MCP).AZURE_OPENAI_API_KEY or AZURE_USE_CLI=1 with az login. For AAD chains, DefaultAzureCredential must be able to find an identity.task string. Ensure clients send {"task":"your prompt"}.stdio_server() exposes async stdin/stdout streams; server.run() handles JSON‑RPC (initialize/list_tools/call_tool).stdio_client() launches the server process and returns streams; ClientSession drives the JSON‑RPC calls.