一个示例项目,演示如何在 FastAPI 服务中接入 Nacos 配置中心与服务发现,同时挂载 MCP(Model Context Protocol)工具链。项目使用 PDM 管理依赖,目标 Python 3.13。
- 自定义 FastAPI lifespan:挂载 MCP 工具并将服务注册到 Nacos。
- 监听 Nacos 配置,支持 YAML/JSON 解析与内存快照缓存。
- 基于 Loguru 的结构化日志,配合
src/utils下的 trace ID 工具。 - 预置 PDM 脚本:
dev、start、lint、fmt、typecheck、test等。
app/ FastAPI 入口、Nacos 交互、配置加载
src/utils/ 通用的日志与链路追踪工具
logs/ 本地日志输出目录(镜像构建时会忽略)
nacos-data/ Nacos 本地快照(镜像构建时会忽略)
- Python 3.13
- 已安装 PDM
- Nacos 3.x(测试使用 3.0.3),并确保
NACOS_SERVER_ADDR、NACOS_USERNAME、NACOS_NAMESPACE等可用 - 可选:Docker 24+,用于容器部署
- 将仓库根目录的
nacos-fastapi-mcp-example.yaml上传到 Nacos 配置中心:- Data ID:
nacos-fastapi-mcp-example.yaml - Group:
DEFAULT_GROUP - Namespace:与
.env中NACOS_NAMESPACE保持一致
- Data ID:
- 根据业务需要修改 YAML 内的具体配置(如数据库、特性开关等)。
- 确保服务部署环境能够访问 Nacos 的 HTTP/GRPC 端口。
- 复制环境变量模板并按需修改:
cp .env.example .env
- 安装依赖:
pdm install
- 开发模式(自动重载):
pdm run dev
- 类生产模式(单进程,以
.env为准):pdm run start
对外接口:
GET /health— 健康检查。GET /config/nacos— 当前 Nacos 配置快照。
仓库提供 Dockerfile,.env 已由 .dockerignore 排除,需要在运行容器时显式注入。
构建镜像:
docker build -t nacos-fastapi-mcp-example:v0.1.0 .启动容器(映射端口并加载 .env):
docker run -d \
--name nacos-fastapi-mcp-example \
--env-file .env \
-p 8000:8000 \
nacos-fastapi-mcp-example:v0.1.0如果使用了其他端口或想持久化日志,可根据需要调整端口映射或挂载卷。
.env.example默认开启 Nacos 注册;若本地调试只想跑 FastAPI,可关闭MCP_REGISTER_ENABLED或调低APP_WORKERS。- 日志默认写入
logs/,在 Docker 环境中请配置卷或修改APP_LOG_PATH。
英文文档请查看 README.md。