模型上下文协议服务器

一个轻量级的MCP服务器,将Azure AI Foundry Agent作为MCP工具暴露出来,供MCP兼容客户端调用。

  • by hatasaki
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 hatasaki/FoundryAgent-MCP-Stub

使用说明

FoundryAgent-MCP-Stub 翻译为中文是:“Foundry代理-MCP-存根”

概述

这个仓库提供了一个轻量级的MCP(模型上下文协议)服务器,该服务器将Azure AI Foundry代理作为MCP暴露出来 工具.
一旦部署,任何兼容MCP的客户端都可以调用已注册的Foundry代理,将其作为可流式处理的HTTP MCP服务器。

特点/特性

  • 最小化、自包含的Python实现(单文件 server.py)。
  • 无状态REST API,用于将请求转发到Azure AI Foundry代理。
  • 除了官方的 Azure AI Foundry Python SDK 之外,没有其他外部依赖。

MCP工具信息

MCP(多路复用器/控制器/某种特定系统或协议的缩写,具体含义需根据上下文确定) 工具名称 和 描述 直接源自相应的 Azure AI Foundry 代理 元数据。
请确保您的代理的(信息/状态/等,具体根据上下文补充) 名字 并且 描述 这些名称是有意义的,因为客户将依靠它们来正确发现和调用工具。

暴露出来的工具看起来是这样的:

{
    "name": "<agent name>",          // Spaces are replaced with underscores
    "description": "<agent description>",
    "inputSchema": {
        "type": "object",
        "required": ["query"],
        "properties": {
            "query": {
                "type": "string",
                "description": "query for the tool",
            }
        }
    }
}

先决条件

  1. Python 3.9及以上版本 (已预装在开发容器中)
  2. 访问 Azure AI Foundry 代理
    • 铸造厂 终端点URL
    • 铸造厂 代理ID
    • API密钥 用于验证入站请求(您管理的任意不透明字符串)

配置

服务器完全通过环境变量进行配置:

变量 描述
AZURE_AI_ENDPOINT 目标AI Foundry的HTTPS终端节点(例如。 https://<your-resource>.services.ai.azure.com/api/projects/<your-project>)
AZURE_AI_AGENT_ID 您希望公开的代理的标识符
API_KEY 客户必须在(请求中)发送的值 x-api-key HTTP 头部
PORT (可选) 要绑定的TCP端口(默认 3000)

在本地导出这些变量或通过(某种方式)传递它们 docker run ‑e 在进行集装箱化时。

快速入门(本地)

# 0 ) Login valid Azure account to access Azure AI Foundry
az login

# 1 ) Clone & install runtime dependencies
pip install -r requirements.txt

# 2 ) Configure environment (replace with your real values)
export AZURE_AI_ENDPOINT="https://xxx.services.ai.azure.com/api/projects/yyy"
export AZURE_AI_AGENT_ID="agent-123456"
export API_KEY="replace-me"

# 3 ) Launch the service
python server.py  # listens on http://localhost:3000/mcp

在Azure容器应用上运行

A. Dockerfile 已包含,并且GitHub Actions工作流会自动构建并发布容器镜像到 GitHub 容器注册表 (GHCR) as ghcr.io/hatasaki/foundryagent-mcp-stub:latest您可以直接将这个预构建的镜像部署到 Azure 容器应用——无需本地环境 docker build / docker push 所需。

# 0) Sign in and select the correct subscription
az login
az account set --subscription <SUBSCRIPTION_ID>

# (Set environment variables for reuse)
export RESOURCE_GROUP="<your-resource-group>"  
export YOUR_REGION="<your-region>"

# 1) Deploy (initial) the latest image published to GHCR

az containerapp up \
  --name foundry-mcp-server \
  --resource-group $RESOURCE_GROUP \
  --location $YOUR_REGION \
  --image ghcr.io/hatasaki/foundryagent-mcp-stub:latest \
  --target-port 3000 \
  --ingress external \
  --env-vars AZURE_AI_ENDPOINT=$AZURE_AI_ENDPOINT \
             AZURE_AI_AGENT_ID=$AZURE_AI_AGENT_ID \
             PORT=3000

# 1.1) create secret
az containerapp secret set \
  --name foundry-mcp-server \
  --resource-group $RESOURCE_GROUP \
  --secrets api-key=$API_KEY

# 1.2) set API_KEY to refer secret(secretref:)
az containerapp update \
  --name foundry-mcp-server \
  --resource-group $RESOURCE_GROUP \
  --set-env-vars API_KEY=secretref:api-key

# 1.3) enable managed identity
az containerapp identity assign \
  --name foundry-mcp-server \
  --resource-group $RESOURCE_GROUP \
  --system-assigned

# 2) Grant the managed identity access to Azure AI Foundry (one-time)
PRINCIPAL_ID=$(az containerapp show \
  --name foundry-mcp-server \
  --resource-group $RESOURCE_GROUP \
  --query "identity.principalId" -o tsv)

az role assignment create \
  --assignee $PRINCIPAL_ID \
  --role "Azure AI User" \
  --scope $(az resource show --name <AI_Foundry_Name> --resource-group <FOUNDRY_RESOURCE_GROUP> --resource-type Microsoft.CognitiveServices/accounts --query id --output tsv)

# 3) Verify and check your container app's ingress url
az containerapp show --name foundry-mcp-server --resource-group $RESOURCE_GROUP -o table

# 4) Add MCP Client (Such as VSCode, MCP Client for Azure) to connect
VSCode mcp.json sample:
{
  "servers": {
    "Foundry MCP server": {
      "type": "http",
      "url": "https://foundry-mcp-server.xxx.<region>.azurecontainerapps.io/mcp",
      "headers": {
        "x-api-key": "<your api key>"
      }
    }
  }
}

免责声明

这款软件是提供的 按现状处理(或保持原样) 用于测试、评估和演示目的 仅它是 不是 已准备好投入生产,并配备有 不提供保修 任何类型的(软件/项目等)。使用即表示您自行承担风险。该项目是 不是 由微软正式认可。

做出贡献

这个项目采用了 微软开源行为准则如需更多信息,请参阅 行为准则常见问题解答 或联系 opencode@microsoft.com(这个邮箱地址本身在中文中没有特定的翻译,直接表示为“opencode@微软.com”或保持原样,因为它是专有名词,即电子邮箱地址) 如有任何其他问题或意见。

许可证

这个项目遵循MIT许可证授权。详见 许可证 文件中详述。