虚拟MCP服务器
这个项目 FastMCP 使用框架构建的简单的元代理通信协议(MCP)服务器。服务器通过Server-Sent Events(SSE)进行通信。 echo 工具和 dummy 提供工具。
关键技术堆栈
- 快速 API:Web框架(FastMCP的基础)
- 乌维科恩:ASGI服务器(运行FastAPI应用程序)
- FastMCP:构建MCP服务器的框架(版本1.0.0)
- Docker&Docker编写:容器化和服务管理
- python:主开发语言
项目结构
.dummy_mcp_server/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI 애플리케이션 및 MCP 서버 설정, 도구 등록
│ └── tools/
│ ├── __init__.py
│ ├── dummy.py # 'dummy' 도구 구현
│ └── echo.py # 'echo' 도구 구현
├── docker-compose.yml # Docker Compose 설정 파일
├── README.md # 이 파일
└── requirements.txt # Python 의존성 목록`设置和运行
要求
- 码头工人
- Docker Compose
本地运行(使用Docker Compose)
- 存储库克隆 (如果已经在本地,则省略)
- 构建Docker映像并运行容器:
在项目根目录中运行以下命令:此命令将根据需要构建图像并在后台启动容器。
docker-compose up --build -d服务器在Docker容器中 0.0.0.0:8002在中运行。 docker-compose.yml 根据设置,主机的 http://localhost:8002 (或Docker主机IP的8002端口)。
- 检查日志:\\
docker-compose logs -f dummy_mcp_server- 停止服务器:\\
docker-compose downn8n联动指南
dummy-mcp-server要与n8n工作流相关联,请执行以下步骤:
- Docker网络:
- dummy-mcp-server 容器和n8n容器必须在同一Docker网络环境中运行,才能相互通信。 - 当前 docker-compose.yml银 dummy-mcp-server 创建服务,如果未指定单独的网络,则连接到Docker Compose生成的默认网络。n8n容器也连接到此网络,或两个容器共享的外部网络(例如: nginx-n8n-net)。 - 如果n8n和 dummy-mcp-server相同 docker-compose.yml 如果在文件中定义为服务,则Docker Compose会自动将其放置在同一网络中,因此可以通过服务名称(容器名称)相互查找。
- n8n MCP Client节点设置:
- 在n8n工作流中添加“MCP Client”节点。 - SSE 终端:输入以下URL:
http://dummy-mcp-server:8002/sse- dummy-mcp-server: docker-compose.yml在中定义的服务名称。Docker内部DNS将此名称 dummy-mcp-server 解释为容器的IP。(如果n8n在Docker外部运行 dummy-mcp-server如果只有docker在运行, localhost 或者,必须使用Docker主机的IP: http://localhost:8002/sse) - 8002: dummy-mcp-server正在监听的端口。 - /sse: FastMCP 库用于SSE流的默认路径。 - 认证:当前 dummy-mcp-server不使用身份验证,因此将其设置为“None”。 - 要包含的工具:可以设置为“All”,也可以根据需要选择特定工具。
依赖于Python(requirements.txt)
以下是主要依赖项列表(完整列表包括 requirements.txt 请参阅文件:
fastmcp==1.0.0
httpx>=0.27.0
uvicorn
numpy
fastapi==0.109.2
# python-dotenv (주석 처리됨)
# ... 기타 mcp 및 fastapi 의존성提供的工具
服务器 app/main.py在中注册并提供以下两种工具:
dummy工具
- 源文件: app/tools/dummy.py - 说明:这是一个简单的同步工具,可将输入的字符串消息输出到控制台,并返回成功状态下收到的消息。 - 输入参数: - message (str):堆叠工具要接收的字符串。 - 返还: {\"status\": \"success\", \"tool_message\": \"Dummy tool received: [입력된 메시지]\"}
echo工具
- 源文件: app/tools/echo.py - 说明:演示SSE流媒体功能的示例工具。重复输入的消息3次,并在每条消息之间留出1秒的延迟,返回SSE流。 - 输入参数: - message (str):要回声的字符串。 - 返还:流响应后 {\"status\": \"Echo stream completed\"}返回。
关于MCP服务器
- 姓名:虚拟MCP服务器
- 说明:FastMCP 1.0.0,带SSE、回声工具和虚拟工具。
- 主机:
0.0.0.0(在Docker容器中) - 端口:
8002(映射Docker外部和内部的相同端口) - 通信方式:服务器-发送事件(SSE)-基本端点
/sse使用。
