使用说明
带有SmolAgents和Gradio UI的MCP问候服务器
概述
该项目实现了 模型上下文协议(MCP) 服务器与简单 greet 根据提供的姓名返回个性化问候的工具。服务器是使用 FastMCP 图书馆与 格拉迪奥 用于用户友好交互的web界面和 斯莫尔特工 CodeAgent 用于AI驱动的工具调用。整个应用程序是使用容器化的 码头工人 易于部署和移植。
特性
- MCP服务器:主持人a
greet为给定名称生成问候语(例如,“你好,爱丽丝!欢迎来到MCP服务器。”)的工具。 - Gradio用户界面:一个干净的、基于浏览器的界面,供用户输入姓名和接收问候。
- SmolAgents集成A.
CodeAgent由HuggingFaceTB/SmolLM2-1.7B-Instruct模型,它以编程方式调用greet工具。 - Docker化安装程序:确保跨环境的一致部署。
项目结构
Dockerfile:定义项目的Docker镜像,基于python:3.11-slim,并运行MCP服务器、Gradio UI和SmolAgents代理。server.py:使用以下工具实现MCP服务器greet工具,在端口6275上使用HTTP传输。app.py:在端口7860上运行Gradio web界面,允许用户与greet工具通过浏览器。agent.py:配置aSmolAgentsCodeAgent致电greet使用编程工具SmolLM2-1.7B-Instruct模型。requirements.txt:列出Python依赖项(mcp[cli],gradio==4.44.0,smolagents[transformers]).
先决条件
- 码头工人确保你的系统上安装了Docker。从下载 docker.com 如果需要的话。
- 用于访问Gradio UI和MCP Inspector的现代网络浏览器。
安装说明
-
克隆或创建项目目录
- 为项目创建一个目录并保存以下文件:
Dockerfile,server.py,app.py,agent.py,以及requirements.txt这些可以从项目源获得或基于提供的内容创建。
- 为项目创建一个目录并保存以下文件:
-
构建Docker镜像
- 在项目目录中打开一个终端并运行:
docker build -t mcp-greeting-server . - 这将构建一个名为的Docker镜像
mcp-greeting-server安装了所有依赖项。
- 在项目目录中打开一个终端并运行:
-
运行Docker容器
- 启动容器,暴露必要的端口(MCP Inspector为6274,Gradio UI为7860,MCP服务器为6275):
docker run -i --rm -p 6274:6274 -p 7860:7860 -p 6275:6275 mcp-greeting-server - 这
-i标志启用交互模式,--rm停止后取出容器,以及-p将容器端口映射到主机。
- 启动容器,暴露必要的端口(MCP Inspector为6274,Gradio UI为7860,MCP服务器为6275):
用法
Gradio用户界面
- 打开web浏览器并导航到
http://localhost:7860. - 在文本框中输入姓名(例如“Alice”)并提交以接收个性化问候(例如“Hello,Alice!欢迎使用MCP服务器”)。
- 界面采用柔和的主题风格,打造干净的用户体验。
MCP检查员
- 访问MCP检查员
http://localhost:6274探索和测试greet工具直接。 - 使用基于web的UI输入名称并查看工具的输出。
斯莫尔特工
- 这
smolagentsCodeAgent在容器中自动运行,并向控制台输出“Alice”的示例问候语(例如,“Hello,Alice!欢迎来到MCP服务器。”)。 - 要以编程方式与代理交互,请修改
agent.py以接受不同的输入或将其与另一个界面集成(例如扩展Gradio UI)。
输出示例
- Gradio用户界面:输入“Bob”→ 输出:“你好,Bob!欢迎来到MCP服务器。”
- 斯莫尔特工:控制台日志:“你好,爱丽丝!欢迎来到MCP服务器。”(基于中的默认查询
agent.py).
备注
- MCP服务器在端口6275上使用HTTP传输来支持
smolagents整合,如stdio代理通信的传输不太可靠。 - 这
SmolLM2-1.7B-Instruct模型用于局部推理的效率,但您可以修改agent.py使用由支持的不同模型smolagents. - 要扩展项目,请添加更多工具
server.py或增强Gradio用户界面app.py具有附加功能。
故障排除
- 端口冲突:确保主机上的端口6274、7860和6275未被使用。
- Docker问题:验证Docker是否正在运行,以及您是否有足够的权限(
sudo在Linux上可能需要)。 - 依赖项:如果构建失败,请检查
requirements.txt包括所有必要的包,并且您的Docker环境可以访问互联网。
许可证
本项目按原样提供,用于教育目的。请参阅以下许可证 mcp, gradio,以及 smolagents 根据各自的条款。