书籍目录API示例

一个教学应用,展示如何将常见的堆栈(FastAPI + SQLAlchemy + React)升级为包含MCP服务器,同时重用相同的服务层。

  • by jonatasvieiracoutinho
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 jonatasvieiracoutinho/exemplo_api_mcp

使用说明

MCP API 示例 - 图书目录

教学应用程序,演示如何通过重复使用相同的服务层来演变一个常见的堆栈(FastAPI + SQLAlchemy + React)以包含一个MCP服务器。存储库是为了引导学习而存在的:您可以上传传统的 REST API 和前端,并在同一后端上启用 MCP Server,将相同的分类账操作暴露给代理。

重要
此工程不包含身份验证、 TLS、 速率限制或任何其他硬化控制 。仅在本地/学习环境中骑行。要进行生产,请按照 docs/checklist-segulara.md.

这个项目是为了谁?

  • 想要在其架构中已经包含 MCP 的应用程序的教学示例的开发人员。
  • 教师需要简单的课堂/演示材料。
  • 谁想要学习如何扩展MCP与新的工具/路径。

堆栈和教学重点

  • 后端REST:FastAPI、SQLAlchemy、SQLite。
  • MCP服务器FastMCP 展示与 FastMCP 相关的工具 book_service.
  • 前端:React+Vite+Axios。
  • 独特的商业雷格拉: backend/services/book_service.py 集中验证和 REST 和 MCP 消耗的 CRUD 流。

高层建筑

Frontend (React)  -->  FastAPI /api/books  -->  book_service  -->  SQLAlchemy/SQLite
Cliente MCP       -->  FastMCP Server     -->  book_service  -->  SQLAlchemy/SQLite

细节在 docs/建筑.md (美国 docs/Diagrama.png).

如何快速学习

  1. 莱亚 docs/visao-geral.md 了解目标和层次。
  2. 查看 docs/backend.md 查找路线,计划和服务。
  3. Estude docs/mcp_server.md显示 MCP 服务器如何生成和使用相同的服务。
  4. 跟随旋转工程 docs/配置和执行.md.
  5. 浏览前端(在下面描述的文件) docs/frontend.md与MCP流相比较。

如何运行(摘要)

  1. 配置相应的 Python 环境( conda、 venv 或 uv) docs/配置和执行.md.
  2. 激活环境并安装 pip install -r requirements.txt.
  3. 上传 REST 后端: python run_api.py (ou start_backend.bat / ./start_backend.sh).
  4. 上传前端 :
    cd frontend
    npm install
    npm run dev  # ou start_frontend.bat / ./start_frontend.sh
    
  5. 罗德岛MCP服务器: python run_mcp_server.py (ou start_mcp_server.bat / ./start_mcp_server.sh;porta 8765,传输可流式传输的http)。

快速参考

区域 关键文件
API REST backend/api/main.py, backend/api/endpoints.py, backend/api/schemas.py
Servicos backend/services/book_service.py
坚持 backend/database/models.py, backend/database/crud.py, backend/database/connection.py
MCP backend/mcp/server.py, backend/mcp/mcp_tools.py, backend/mcp/config_mcp.json
前端 frontend/src/pages/BooksPage.tsx, frontend/src/components/*, frontend/src/api/*

细节在 docs/backend.md, docs/mcp_server.md e docs/frontend.md.

API HTTP最小值

终点哭泣 http://localhost:8000/api:

  • GET /books?limit=100&offset=0 — 图书列表(按创作顺序排序)。
  • GET /books/search?query=texto 按标题/作者/出版商搜索。
  • GET /books/{id} 细节。
  • POST /books 身体(body) BookCreate).
  • PUT /books/{id} 全面更新。
  • PATCH /books/{id} 部分更新。
  • DELETE /books/{id} --移除。

完整的文档 + 示例 docs/api-http.md.

安全与生产

此代码是故意开放的,以方便研究。要将任何部分带入现实世界,您必须:

  1. Proteger com HTTPS (API REST,前端,MCP服务器)通过代理/网关com TLS。
  2. 添加身份验证 根据公司政策(OAuth2/OIDC,API Gateway等)。
  3. 应用速率限制/WAF 和 CORS 限制.
  4. 将秘密/密钥移动到 Key Vaults (Azure密钥库、AWS密钥管理器、HashiCorp密钥库)。
  5. 启用日志/审计和可观察性.
  6. 计划银行备份/加密.

详情和清单: docs/checklist-segulara.md.

建议的下一步

  • 在路由和 MCP 服务器上添加身份验证/授权。
  • 创建自动化测试(Pytest用于后端,React测试库用于前端)。
  • 在前端中包含更丰富的分页/用户体验。
  • 进化 book_service 查看新的字段或规则,并观察 REST 和 MCP 如何共同受益。

浏览文档

好研究!任何疑问打开一个问题或调整这里描述的计划。


作者 : Jonatas Vieira Coutinho jonatasvieiracoutinho@gmail.com