AI Foundry MCP 服务器

AI Foundry MCP 服务器为Azure AI Foundry提供项目管理和模型部署功能,支持本地开发和生产环境部署。

  • by karpikpl
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 karpikpl/foundry-apim-mcp-server

使用说明

AI Foundry APIM MCP服务器

用于Azure AI Foundry的MCP(模型上下文协议)服务器,将项目管理、模型部署、代理和聊天操作作为工具公开。支持本地开发(Azure CLI身份验证)和生产(OAuth令牌传递)。

快速开始

# Install
git clone <repo-url>
cd foundry-apim-mcp-server
uv sync

# Login to Azure (default auth mode)
az login

# Start the server
uv run foundry-mcp-server

服务器启动于 http://localhost:8000/mcp (流式HTTP传输)。

来自您的MCP客户:

1. list_projects()                          # discover available projects
2. connect(account_name="...", project_name="...")  # connect to one
3. list_models()                            # see deployed models
4. create_agent(name="my-agent", ...)       # create an agent
5. chat(agent_name="my-agent", message="Hello!")    # chat with it

项目标签筛选器

重要提示: 默认情况下, list_projects 仅返回具有以下条件的项目 TechConnect Azure中的标签。 没有此标签的项目将被自动跳过。

要更改或禁用此筛选器,请编辑 PROJECT_TAG_FILTER 在 foundry_apim_mcp_server/foundry_client.py:

PROJECT_TAG_FILTER = "TechConnect"  # set to None to disable filtering

工具

工具 说明
list_projects 发现Azure订阅中的所有AI Foundry帐户和项目(无需连接)
connect 通过account_name+project_name(推荐)或直接端点URL连接到项目
list_connections 列出网关连接,可选类型筛选器(ModelGateway, ApiManagement, AzureOpenAI, AzureAISearch, AzureBlob, CosmosDB, GroundingWithBingSearch)
list_models 列出具有可选发布者/名称筛选器的模型部署
list_agents 列出连接项目中的代理
create_agent 使用模型、网关连接和可选的MCP工具创建或更新代理
delete_agent 按名称删除代理
chat 向代理发送消息并获得响应(通过MCP工具批准处理)
direct_chat 直接调用模型,无需代理抽象

提示

指导LLM完成多步骤任务的预配置工作流:

提示 描述
setup_and_explore 连接到项目并探索连接、模型和代理
create_and_test_agent 创建一个具有网关连接的代理并对其进行测试
compare_gateways 通过创建测试代理来比较不同的网关连接

认证

受控于 AUTH_MODE 环境变量:

模式 AUTH_MODE value 它是如何工作的
DefaultAzureCredential (默认) default_credential 使用Azure CLI、托管身份、VS代码凭据等。
令牌传递 passthrough 将OAuth承载令牌从MCP客户端转发到Foundry

本地开发 --只需登录一次,不需要其他配置:

az login
uv run foundry-mcp-server

生产/远程 --MCP客户端必须发送Azure Entra ID承载令牌:

AUTH_MODE=passthrough uv run foundry-mcp-server

环境变量

所有变量都是可选的。复制 .env.example 到 .env 开始:

cp .env.example .env
变量 描述 默认值
AZURE_AI_FOUNDRY_CONNECTION_STRING AI Foundry项目端点。如果您使用,则不需要 connect 在运行时。 —
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME 的默认模型部署 create_agent / direct_chat (例如。 gpt-5-mini) —
AUTH_MODE default_credential 或 passthrough default_credential
AZURE_TENANT_ID DefaultAzureCredential --的租户ID提示
AZURE_BEARER_TOKEN 手动持票人代币(仅适用于 passthrough 开发期间的模式) --
MCP_HOST 将服务器绑定到的主机 127.0.0.1
MCP_PORT 运行服务器的端口 8000

先决条件

  • Python 3.11+
  • 紫外线 (推荐)或pip
  • Azure命令行界面(az login)用于默认身份验证模式
  • Azure AI Foundry项目

MCP客户端配置

VS代码/克劳德桌面

{
  "mcpServers": {
    "ai-foundry": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

使用时 AUTH_MODE=passthrough,添加授权标头:

{
  "mcpServers": {
    "ai-foundry": {
      "url": "http://localhost:8000/mcp",
      "headers": {
        "Authorization": "Bearer <your-entra-id-token>"
      }
    }
  }
}

AI铸造代理(作为MCP工具)

from azure.ai.projects.models import MCPTool

mcp_tool = MCPTool(
    server_label="ai-foundry-mcp",
    server_url="http://localhost:8000/mcp",
    require_approval="never",
)

码头工人

# Build
docker build -t foundry-mcp-server .

# Run with managed identity (e.g. on Azure Container Apps / ACI)
docker run -p 8000:8000 foundry-mcp-server

# Run with token passthrough
docker run -p 8000:8000 -e AUTH_MODE=passthrough foundry-mcp-server

# Run with an .env file
docker run -p 8000:8000 --env-file .env foundry-mcp-server

图像默认为 MCP_HOST=0.0.0.0 因此,它监听容器内的所有接口。

认证流程

此服务器确实 不 使用OBO(代表)流。

它支持两种模式,由 AUTH_MODE 环境变量:

模式 AUTH_MODE 它是如何工作的
DefaultAzureCredential (默认) default_credential 使用标准Azure身份链:托管身份→ Azure命令行界面→ 环境变量→ VS代码凭证。在生产容器中,这通常解决为 管理身份.
令牌传递 passthrough MCP客户端在 Authorization 头球服务器将该相同的令牌转发到Azure AI Foundry API。不涉及代币交换或OBO。

所需的Azure RBAC权限

标识(托管标识或用户主体)必须具有:

权限/角色 范围 为什么
读者 订阅或管理组 list_projects 进行ARM管理平面调用以枚举订阅、认知服务帐户和项目(请参阅下面的操作)
认知服务OpenAI用户 AI Foundry项目资源 需要调用模型部署、创建/管理代理和聊天
认知服务贡献者 (可选) AI Foundry项目资源 仅当您想通过服务器创建或删除代理时才需要

如果你只 connect 到已知的项目端点(跳过 list_projects),the 读者 订阅中的角色不是必需的。

Specific ARM actions required by list_projects

如果使用自定义角色而不是内置角色 读者,授权这些操作:

ARM操作 用于
Microsoft.Resources/subscriptions/read 枚举可访问的订阅
Microsoft.CognitiveServices/accounts/read 列出每个订阅的AI Foundry/认知服务帐户
Microsoft.CognitiveServices/accounts/projects/read 列出每个帐户下的项目

环境变量引用

变量 必填 描述 默认值
AUTH_MODE 没有 default_credential 或 passthrough default_credential
AZURE_AI_FOUNDRY_CONNECTION_STRING 否 AI Foundry项目终结点。如果你打电话,就不需要了 connect 在运行时。 —
AZURE_OPENAI_CHAT_DEPLOYMENT_NAME 否 的默认模型部署 create_agent / direct_chat (例如。 gpt-5-mini) —
AZURE_TENANT_ID 没有 DefaultAzureCredential --的租户ID提示
AZURE_BEARER_TOKEN 否 手动持票人代币(仅适用于 passthrough 开发期间的模式) --
AZURE_CLIENT_ID 否 托管标识的客户端ID(使用用户分配的托管标识时设置) --
MCP_HOST 否 要将服务器绑定到的主机 127.0.0.1 (0.0.0.0 在Docker中)
MCP_PORT 无 运行服务器的端口 8000

发展

uv sync

# Run with auto-reload (FastMCP dev mode)
uv run fastmcp dev foundry_apim_mcp_server/server.py

# Or run directly
uv run python -m foundry_apim_mcp_server.server