Awesome Fastapi MCP Server
Awesome Fastapi — это production-ready реализация Model Context Protocol (MCP), построенная на базе FastAPI. Проект расширяет стандартный MCP улучшенной системой регистрации инструментов, автоматической документацией и полной интеграцией с экосистемой FastAPI (Pydantic, dependency injection, middleware, async/await).
Почему это лучше стандартного MCP
- FastAPI ecosystem: автоматическая OpenAPI-документация, dependency injection, middleware (аутентификация, мониторинг), встроенная валидация через Pydantic, асинхронность.
- Улучшенный реестр инструментов: автоматическая генерация документации в формате MCP и OpenAPI, улучшенные type hints, богатые JSON Schema для входов/выходов, структурированные ошибки, парсинг docstring.
- Дополнительно: CORS, управление жизненным циклом (lifespan), готовность к веб-интеграции.
Установка
Требования: Python 3.10+
git clone https://github.com/yourusername/awesome-mcp-fastapi.git
cd awesome-mcp-fastapi
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .
Запуск сервера
uvicorn src.main:app --reload
После запуска откройте http://localhost:8000/docs — там будет сгенерированная OpenAPI-документация.
Использование: создание инструмента
Пример создания инструмента calculator с помощью декоратора @auto_tool:
from fastapi import FastAPI
from src.utils.tools import auto_tool, bind_app_tools
app = FastAPI()
bind_app_tools(app)
@auto_tool(
name="calculator",
description="Perform basic arithmetic operations",
tags=["math"]
)
@app.post("/api/calculator")
async def calculator(operation: str, a: float, b: float):
"""
Perform basic arithmetic operations.
Parameters:
- operation: add, subtract, multiply, divide
- a: first number
- b: second number
Returns: result or error
"""
if operation == "add":
return {"result": a + b}
elif operation == "subtract":
return {"result": a - b}
elif operation == "multiply":
return {"result": a * b}
elif operation == "divide":
if b == 0:
return {"error": "Cannot divide by zero"}
return {"result": a / b}
else:
return {"error": f"Unknown operation: {operation}"}
LLM (например, Claude) сможет автоматически обнаружить и вызвать этот инструмент через MCP.
Архитектура проекта
src/
├── api/ # Эндпоинты
│ └── v1/ # Версия API 1
├── core/ # Ядро: настройки (settings.py)
├── db/ # Подключение к БД и модели
│ └── models/
├── main.py # Точка входа
└── utils/
└── tools.py # Улучшенный реестр инструментов
Docker
docker build -t awesome-mcp-fastapi .
docker run -p 8000:8000 --env-file .env awesome-mcp-fastapi
Вклад в проект
Принимаются Pull Request'ы. См. LICENSE (MIT).
Документация и демо: awesome-mcp-fastapi
Комментарии
Комментариев пока нет. Будьте первым.