项目简介
本项目是微软Azure示例项目的一部分,旨在演示如何在Azure容器应用(ACA)上部署基于Model Context Protocol (MCP) 的AI后端服务。它包含了一个MCP服务器实现和一个简单的MCP客户端(Host)应用,通过TODO列表Agent展示了MCP协议的核心功能之一:工具(Tools)的使用。
主要功能点
- MCP服务器实现: 提供了基于HTTP Streamable和Server-Sent Events (SSE) 两种传输协议的MCP服务器。
- 工具注册与执行: 服务器注册了一组TODO列表相关的工具(添加、列出、完成、删除TODO项),并能接收客户端的调用请求并执行这些工具。
- 数据持久化: 服务器通过Postgres数据库存储TODO列表的数据,使得工具具备状态管理能力。
- MCP客户端 (Host): 提供了一个示例终端应用,作为MCP客户端连接到MCP服务器,并与LLMProvider(OpenAI, Azure OpenAI, GitHub Models)和MCP服务器交互,模拟AI Agent的工作流程。
- LLM集成: 客户端(Host)集成了多种LLM提供商,可以利用从MCP服务器获取的工具来增强LLM的能力。
该项目目前主要实现了MCP协议的**工具(Tools)**部分,**资源(Resources)和Prompt模板(Prompts)**功能在计划中但尚未完全实现。
安装步骤
- 克隆本项目仓库:
git clone https://github.com/Azure-Samples/azure-container-apps-ai-mcp.git cd azure-container-apps-ai-mcp - 安装项目依赖:
npm install --prefix mcp-host npm install --prefix mcp-server-http npm install --prefix mcp-server-sse - 根据需要配置LLM提供商(OpenAI, Azure OpenAI, 或 GitHub Models)。在项目根目录创建'.env'文件,并根据README中的说明添加相应的API Key或Endpoint信息。
- 准备一个PostgreSQL数据库实例。可以使用Docker运行一个本地Postgres容器。
服务器配置 (供MCP客户端连接时参考)
该项目提供了HTTP和SSE两种MCP服务器实现。MCP客户端需要知晓服务器的地址才能连接并获取能力(如工具列表)。对于此示例项目,服务器启动后将运行在特定的网络地址上。示例中的MCP客户端(Host)通过配置服务器的URL来连接。
典型的MCP客户端配置(非本项目Host的代码示例,仅为说明客户端如何配置服务器连接):
{ "servers": { "mcp-todo-http": { "type": "http", "url": "http://localhost:3000/mcp" // MCP HTTP服务器监听的地址和路径 }, "mcp-todo-sse": { "type": "sse", "url": "http://localhost:3001/sse" // MCP SSE服务器监听的地址和路径 } } }
注释:
- 'mcp-todo-http', 'mcp-todo-sse': 服务器的逻辑名称,用于在客户端区分不同的服务器。
- 'type': 服务器使用的传输协议类型,可以是 "http" 或 "sse"。
- 'url': 服务器监听的网络地址,客户端将连接到此URL与服务器通信。在实际部署中,此地址会是部署MCP服务器的机器或容器的网络地址。
本项目示例中的MCP客户端(Host)会自动尝试连接上述默认地址的MCP服务器。
基本使用方法
-
启动MCP服务器和数据库:
- 推荐使用Docker Compose: 在项目根目录运行 'docker compose up -d --build'。这将启动Postgres数据库容器以及HTTP和SSE的MCP服务器容器。
- 手动启动:
- 确保Postgres数据库已运行并可访问。
- 在单独的终端中运行HTTP服务器: 'npm start --prefix mcp-server-http'
- 在单独的终端中运行SSE服务器: 'npm start --prefix mcp-server-sse'
-
启动MCP客户端 (Host):
- 使用Docker Compose: 如果使用了Docker Compose启动服务器,可以通过 'docker exec -it mcp-host bash' 进入host容器,然后在容器内运行 'npm start'。
- 手动启动: 在新的终端中运行: 'npm start --prefix mcp-host'
-
与Agent交互: MCP Host启动后,会在终端显示欢迎信息和可用的工具列表。现在你可以在终端输入指令与TODO列表Agent交互,例如:
- 输入 'add buy groceries' 来添加一个TODO项。
- 输入 'list todos' 来查看所有TODO项。
- 输入 'complete todo with id 1' 来完成某个TODO项(假设ID为1)。
- 输入 'delete todo with id 1' 来删除某个TODO项(假设ID为1)。
Agent会根据你的输入,判断是否需要调用MCP服务器提供的工具来完成任务,并将工具执行结果返回给你。
许可证
本项目采用MIT许可证。详情请参阅仓库中的LICENSE文件。
信息
分类
AI与计算