mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Added example with MCP and authentication (#1389)
Co-authored-by: Eric Zhu <ekzhu@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
Unverified
parent
350cdfc1cd
commit
29cb87b805
@@ -0,0 +1,19 @@
|
||||
# MCP (Model Context Protocol) Examples
|
||||
|
||||
This folder contains examples demonstrating how to work with MCP using Agent Framework.
|
||||
|
||||
## What is MCP?
|
||||
|
||||
The Model Context Protocol (MCP) is an open standard for connecting AI agents to data sources and tools. It enables secure, controlled access to local and remote resources through a standardized protocol.
|
||||
|
||||
## Examples
|
||||
|
||||
| Sample | File | Description |
|
||||
|--------|------|-------------|
|
||||
| **Agent as MCP Server** | [`agent_as_mcp_server.py`](agent_as_mcp_server.py) | Shows how to expose an Agent Framework agent as an MCP server that other AI applications can connect to |
|
||||
| **API Key Authentication** | [`mcp_api_key_auth.py`](mcp_api_key_auth.py) | Demonstrates API key authentication with MCP servers |
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- `OPENAI_API_KEY` environment variable
|
||||
- `OPENAI_RESPONSES_MODEL_ID` environment variable
|
||||
@@ -0,0 +1,52 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
import os
|
||||
|
||||
from agent_framework import ChatAgent, MCPStreamableHTTPTool
|
||||
from agent_framework.openai import OpenAIResponsesClient
|
||||
|
||||
"""
|
||||
MCP Authentication Example
|
||||
|
||||
This example demonstrates how to authenticate with MCP servers using API key headers.
|
||||
|
||||
For more authentication examples including OAuth 2.0 flows, see:
|
||||
- https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/clients/simple-auth-client
|
||||
- https://github.com/modelcontextprotocol/python-sdk/tree/main/examples/servers/simple-auth
|
||||
"""
|
||||
|
||||
|
||||
async def api_key_auth_example() -> None:
|
||||
"""Example of using API key authentication with MCP server."""
|
||||
# Configuration
|
||||
mcp_server_url = os.getenv("MCP_SERVER_URL", "your-mcp-server-url")
|
||||
api_key = os.getenv("MCP_API_KEY")
|
||||
|
||||
# Create authentication headers
|
||||
# Common patterns:
|
||||
# - Bearer token: "Authorization": f"Bearer {api_key}"
|
||||
# - API key header: "X-API-Key": api_key
|
||||
# - Custom header: "Authorization": f"ApiKey {api_key}"
|
||||
auth_headers = {
|
||||
"Authorization": f"Bearer {api_key}",
|
||||
}
|
||||
|
||||
# Create MCP tool with authentication headers
|
||||
async with (
|
||||
MCPStreamableHTTPTool(
|
||||
name="MCP tool",
|
||||
description="MCP tool description",
|
||||
url=mcp_server_url,
|
||||
headers=auth_headers, # Authentication headers
|
||||
) as mcp_tool,
|
||||
ChatAgent(
|
||||
chat_client=OpenAIResponsesClient(),
|
||||
name="Agent",
|
||||
instructions="You are a helpful assistant.",
|
||||
tools=mcp_tool,
|
||||
) as agent,
|
||||
):
|
||||
query = "What tools are available to you?"
|
||||
print(f"User: {query}")
|
||||
result = await agent.run(query)
|
||||
print(f"Agent: {result.text}")
|
||||
Reference in New Issue
Block a user