Microsoft Foundry (Azure AI Foundry) + Neo4j 集成
概述
Microsoft Foundry(前身为 Azure AI Foundry,于 2025 年 11 月更名)是微软的企业级 AI 平台。它是唯一一个同时提供 Claude 和 GPT 模型,并具备企业级治理、原生 MCP + A2A 协议支持以及全面身份管理的云平台。
核心功能
-
原生 MCP + A2A 协议支持
-
提供 Claude 和 GPT 模型
-
企业身份认证 (Azure AD/Entra ID)
-
记忆、可观测性、评估
-
策略控制与治理
-
跨云灵活性
官方资源
扩展点
1. MCP 集成(原生)
Microsoft Foundry 对 MCP 拥有顶级支持,并提供三种 OAuth 设置类型:
-
动态发现 (Dynamic Discovery) - 通过 DCR 自动发现端点
-
动态无发现 (Dynamic without discovery) - 使用 DCR 手动配置端点
-
手动 (Manual) - 完全手动设置 OAuth 2.0
配置
{
"mcp_servers": {
"neo4j": {
"url": "https://your-neo4j-mcp-server.com/mcp",
"auth": {
"type": "oauth2",
"authorization_url": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_url": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"scope": "api://your-app-id/.default"
}
}
}
}
MCP 身份验证
✅ API 密钥 - 支持作为标头或查询参数
✅ Azure AD 客户端凭据 (主要)
-
完整的 OAuth 2.0 客户端凭据流
-
使用客户端 ID/密钥进行应用注册
✅ M2M OIDC - Azure AD/Entra ID
-
动态客户端注册 (DCR)
-
手动 OAuth 配置
-
支持多个身份提供商
其他机制
-
Azure 资源的托管身份 (Managed Identity)
-
服务主体 (Service Principals)
-
用于额外验证层的 APIM
-
云部署的 CORS 配置
行业研究智能体示例
实施
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from neo4j import GraphDatabase
import os
# Azure AI Foundry setup
credential = DefaultAzureCredential()
project_client = AIProjectClient(
endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
credential=credential
)
# Neo4j setup
driver = GraphDatabase.driver(
"neo4j+s://demo.neo4jlabs.com:7687",
auth=("companies", "companies")
)
# Define Neo4j tools
def query_company(company_name: str) -> dict:
"""Query company information from Neo4j."""
query = """
MATCH (o:Organization {name: $company})
RETURN o.name as name,
[(o)-[:LOCATED_IN]->(loc:Location) | loc.name] as locations,
[(o)-[:IN_INDUSTRY]->(ind:Industry) | ind.name] as industries,
[(o)<-[:WORKS_FOR]-(p:Person) | {name: p.name, title: p.title}][..5] as leadership
LIMIT 1
"""
records, summary, keys = driver.execute_query(
query,
company=company_name,
database_="companies"
)
return records[0].data() if records else {}
def search_news(company_name: str, query: str) -> list:
"""Search news articles about a company."""
query_str = """
MATCH (o:Organization {name: $company})<-[:MENTIONS]-(a:Article)
RETURN a.title as title, a.date as date
ORDER BY a.date DESC
LIMIT 5
"""
records, summary, keys = driver.execute_query(
query_str,
company=company_name,
database_="companies"
)
return [r.data() for r in records]
# Create agent with tools
agent = project_client.agents.create_agent(
model="gpt-4",
name="investment_researcher",
instructions="""You are an investment research analyst.
Use the available tools to research companies and generate reports.""",
tools=[
{"type": "function", "function": query_company},
{"type": "function", "function": search_news}
]
)
# Or use MCP server
mcp_tools = project_client.mcp.get_tools("neo4j")
agent = project_client.agents.create_agent(
model="claude-3-5-sonnet-20241022", # Foundry supports both Claude and GPT
name="investment_researcher",
tools=mcp_tools
)
# Execute research
thread = project_client.agents.create_thread()
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="Research Google's recent activities and generate a report"
)
run = project_client.agents.create_run(
thread_id=thread.id,
agent_id=agent.id
)
# Wait for completion and get results
result = project_client.agents.get_run(thread.id, run.id)
messages = project_client.agents.list_messages(thread.id)
挑战与差距
资源
-
Microsoft Foundry:https://learn.microsoft.com/en-us/azure/ai-foundry/
-
MCP 指南:https://learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-add-existing-server-to-agent
-
Neo4j MCP 服务器:https://github.com/neo4j/mcp
-
演示数据库: neo4j+s://demo.neo4jlabs.com:7687 (companies/companies)