About Agent As MCP Server MAF
Agent As MCP Server MAF is an MCP server in the Science category: 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.
Install
git clone https://github.com/chanirban/agent-as-mcp-server-MAFThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Agent As MCP Server MAF
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Agent as MCP Server (Microsoft Agent Framework)
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:
- a test ping client (
mcp-ping.py), and - a ChatAgent orchestration client (
client-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.
Prerequisites
- Python 3.10+
- Recommended: a virtual environment
- Packages:
pip install --pre agent-framework mcp anyio azure-identity python-dotenv
Environment Configuration
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.
How to Run
1) Quick local ping (STDIO client/server)
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": "...", ... }
2) Orchestrated ChatAgent using the MCP server
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).
Troubleshooting
- Invalid JSON / EOF when running the server alone — you launched the server without a client. Use
mcp-ping.py(they start the server and speak MCP). - Token/credential errors — provide
AZURE_OPENAI_API_KEYorAZURE_USE_CLI=1withaz login. For AAD chains,DefaultAzureCredentialmust be able to find an identity. - Tool arg mismatch — the agent-as-tool typically expects a single
taskstring. Ensure clients send{"task":"your prompt"}.
How it Works (STDIO)
- Server:
stdio_server()exposes async stdin/stdout streams;server.run()handles JSON‑RPC (initialize/list_tools/call_tool). - Client:
stdio_client()launches the server process and returns streams;ClientSessiondrives the JSON‑RPC calls.
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.