MyAIServ: AI-Powered FastAPI Server with MCP 🚀
LocalAbout MyAIServ: AI-Powered FastAPI Server with MCP 🚀
MyAIServ is a FastAPI-based MCP server for developers integrating LLMs with applications. It combines MCP tools and resources with GraphQL, WebSockets, search, caching, and monitoring.
Key features
- 01MCP resources, tools, prompts, and sampling
- 02File, weather, text, and image tools
- 03GraphQL and WebSocket APIs
- 04Elasticsearch semantic search
- 05Redis caching and Prometheus metrics
Use cases
- 01Expose file and text operations to LLM applications
- 02Search indexed content semantically
- 03Monitor tool request counts and latency
MCP support
The server implements MCP and provides resources, tools, prompts, and sampling to MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEMCP Server - Model Context Protocol API
MCP Server - это реализация Model Context Protocol (MCP) на базе FastAPI, предоставляющая стандартизированный интерфейс для взаимодействия между LLM-моделями и приложениями.
Особенности
- 🚀 Высокопроизводительный API на базе FastAPI и асинхронных операций
- 🔄 Полная поддержка MCP с ресурсами, инструментами, промптами и сэмплированием
- 📊 Мониторинг и метрики через Prometheus и Grafana
- 🧩 Расширяемость через простые интерфейсы для добавления новых инструментов
- 📝 GraphQL API для гибкой работы с данными
- 💬 WebSocket поддержка для реал-тайм взаимодействия
- 🔍 Семантический поиск через интеграцию с Elasticsearch
- 🗃️ Кэширование через Redis для улучшения производительности
- 📦 Управление зависимостями через Poetry для надежного управления пакетами
Начало работы
Установка
-
Клонировать репозиторий:
git clone https://github.com/yourusername/myaiserv.git cd myaiserv -
Установить Poetry (если еще не установлен):
curl -sSL https://install.python-poetry.org | python3 - -
Установить зависимости через Poetry:
poetry install
Запуск сервера
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
Или через утилиту just:
just run
После запуска API доступен по адресу: http://localhost:8000
Документация API
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- GraphQL Playground: http://localhost:8000/graphql
Структура проекта
myaiserv/
├── app/
│ ├── core/ # Базовые компоненты MCP
│ │ ├── base_mcp.py # Абстрактные классы MCP
│ │ └── base_sampling.py # Базовые классы для сэмплирования
│ ├── models/ # Pydantic модели
│ │ ├── mcp.py # Модели данных MCP
│ │ └── graphql.py # GraphQL схема
│ ├── services/ # Бизнес-логика
│ │ └── mcp_service.py # Сервис MCP
│ ├── storage/ # Хранилище данных
│ ├── tools/ # Инструменты MCP
│ │ ├── example_tool.py # Примеры инструментов
│ │ └── text_processor.py # Инструмент обработки текста
│ ├── utils/ # Утилиты
│ └── main.py # Точка входа FastAPI
├── app/tests/ # Тесты
├── docs/ # Документация
│ └── MCP_API.md # Описание API
├── pyproject.toml # Конфигурация Poetry и инструментов
└── .justfile # Задачи для утилиты just
Доступные инструменты
File System Tool
Инструмент для работы с файловой системой, поддерживающий операции чтения, записи, удаления и листинга файлов.
curl -X POST "http://localhost:8000/tools/file_operations" \
-H "Content-Type: application/json" \
-d '{"operation": "list", "path": "."}'
Weather Tool
Инструмент для получения погодных данных по координатам.
curl -X POST "http://localhost:8000/tools/weather" \
-H "Content-Type: application/json" \
-d '{"latitude": 37.7749, "longitude": -122.4194}'
Text Analysis Tool
Инструмент для анализа текста, включая определение тональности и суммаризацию.
curl -X POST "http://localhost:8000/tools/text_analysis" \
-H "Content-Type: application/json" \
-d '{"text": "Example text for analysis", "analysis_type": "sentiment"}'
Text Processor Tool
Инструмент для обработки текста, включая форматирование, расчет статистики, извлечение сущностей.
curl -X POST "http://localhost:8000/tools/text_processor" \
-H "Content-Type: application/json" \
-d '{"operation": "statistics", "text": "Example text", "stat_options": ["chars", "words"]}'
Image Processing Tool
Инструмент для обработки изображений, поддерживающий изменение размера, обрезку и применение фильтров.
curl -X POST "http://localhost:8000/tools/image_processing" \
-H "Content-Type: application/json" \
-d '{"operation": "resize", "image_data": "base64...", "params": {"width": 800, "height": 600}}'
WebSocket API
Для подключения к WebSocket API:
const socket = new WebSocket("ws://localhost:8000/ws");
socket.onopen = () => {
socket.send(JSON.stringify({
type: "initialize",
id: "my-request-id"
}));
};
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("Received:", data);
};
GraphQL API
Примеры запросов через GraphQL:
# Получение списка всех инструментов
query {
getTools {
name
description
}
}
# Выполнение инструмента
mutation {
executeTool(input: {
name: "text_processor",
parameters: {
operation: "statistics",
text: "Example text for analysis"
}
}) {
content {
type
text
}
is_error
}
}
Запуск тестов
Для запуска тестов используйте Poetry:
poetry run pytest
Или через утилиту just:
just test
Docker
Сборка и запуск через Docker Compose
docker compose up -d
Для запуска отдельных сервисов:
docker compose up -d web redis elasticsearch
Интеграция с LLM
MCP Server предоставляет стандартизированный интерфейс для интеграции с LLM-моделями различных поставщиков:
import httpx
async def query_mcp_with_llm(prompt: str):
async with httpx.AsyncClient() as client:
# Запрос к MCP для получения контекста и инструментов
tools_response = await client.get("http://localhost:8000/tools")
tools = tools_response.json()["tools"]
# Отправка запроса к LLM с включением MCP контекста
llm_response = await client.post(
"https://api.example-llm.com/v1/chat",
json={
"messages": [
{"role": "system", "content": "You have access to the following tools:"},
{"role": "user", "content": prompt}
],
"tools": tools,
"tool_choice": "auto"
}
)
return llm_response.json()
Метрики и мониторинг
MCP Server предоставляет метрики в формате Prometheus по эндпоинту /metrics. Метрики включают:
- Количество запросов к каждому инструменту
- Время выполнения запросов
- Ошибки и исключения
Разработка
Для форматирования кода и проверки линтерами:
just fmt
just lint
Лицензия
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.