Enables vector search capabilities for AI queries, allowing efficient similarity searches and semantic retrieval of data stored in Elasticsearch indices.
Powers the REST, GraphQL, and WebSocket API interfaces, enabling different methods of interacting with the AI models through standardized endpoints.
Visualizes AI system metrics and performance data, providing dashboards for monitoring model behavior and operational health.
Offers a flexible query language interface for AI interactions, allowing clients to request exactly the data they need from the AI system.
Collects metrics from AI model operations, enabling detailed monitoring of performance, usage patterns, and resource utilization.
Provides caching and real-time data handling for AI operations, enhancing response times and supporting state management across requests.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MyAIServ MCP Serveranalyze the sentiment of this customer review"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server - Model Context Protocol API
MCP Server - это реализация Model Context Protocol (MCP) на базе FastAPI, предоставляющая стандартизированный интерфейс для взаимодействия между LLM-моделями и приложениями.
Особенности
🚀 Высокопроизводительный API на базе FastAPI и асинхронных операций
🔄 Полная поддержка MCP с ресурсами, инструментами, промптами и сэмплированием
📊 Мониторинг и метрики через Prometheus и Grafana
🧩 Расширяемость через простые интерфейсы для добавления новых инструментов
📝 GraphQL API для гибкой работы с данными
💬 WebSocket поддержка для реал-тайм взаимодействия
🔍 Семантический поиск через интеграцию с Elasticsearch
🗃️ Кэширование через Redis для улучшения производительности
📦 Управление зависимостями через Poetry для надежного управления пакетами
Related MCP server: microCMS MCP Server
Начало работы
Установка
Клонировать репозиторий:
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 testDocker
Сборка и запуск через 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