Skip to main content
Glama
MCP_API.md11.8 kB
# MCP API - Документация ## Обзор MCP (Model Context Protocol) - это протокол для стандартизации взаимодействия между LLM-моделями и приложениями, предоставляющими контекст и инструменты для этих моделей. Данная документация описывает API-интерфейсы сервера MCP и способы их использования. ## Основные концепции MCP оперирует следующими основными концепциями: 1. **Ресурсы (Resources)** - источники данных, доступные для LLM-моделей 2. **Инструменты (Tools)** - функции, которые могут быть вызваны LLM-моделями 3. **Промпты (Prompts)** - шаблоны для формирования запросов к моделям 4. **Сэмплирование (Sampling)** - процесс генерации контента моделью ## API Endpoints ### RESTful API #### Инструменты (Tools) - `GET /tools` - Получить список всех доступных инструментов - `GET /tools/{name}` - Получить информацию о конкретном инструменте - `POST /tools/{name}` - Выполнить инструмент с заданными параметрами Пример запроса для выполнения инструмента: ```bash curl -X POST "http://localhost:8000/tools/text_processor" \ -H "Content-Type: application/json" \ -d '{ "operation": "statistics", "text": "Это пример текста для анализа. Он содержит несколько предложений. Статистика будет рассчитана для этого текста.", "stat_options": ["chars", "words", "sentences", "readability"] }' ``` #### Ресурсы (Resources) - `GET /resources` - Получить список всех доступных ресурсов - `GET /resources/{uri}` - Получить ресурс по URI - `POST /resources` - Создать новый ресурс Пример создания ресурса: ```bash curl -X POST "http://localhost:8000/resources" \ -H "Content-Type: application/json" \ -d '{ "uri": "example://document1", "name": "Пример документа", "description": "Документ для тестирования API ресурсов", "mime_type": "text/plain", "content": "Это содержимое тестового документа" }' ``` #### Промпты (Prompts) - `GET /prompts` - Получить список всех доступных промптов - `GET /prompts/{name}` - Получить информацию о конкретном промпте - `POST /prompts/{name}` - Выполнить промпт с заданными аргументами Пример выполнения промпта: ```bash curl -X POST "http://localhost:8000/prompts/code_review" \ -H "Content-Type: application/json" \ -d '{ "language": "python", "code": "def factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)" }' ``` #### Сэмплирование (Sampling) - `POST /sampling` - Выполнить сэмплирование с заданными параметрами Пример запроса сэмплирования: ```bash curl -X POST "http://localhost:8000/sampling" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": {"type": "text", "text": "Что такое MCP?"} } ], "max_tokens": 100, "temperature": 0.7 }' ``` ### GraphQL API Доступ к GraphQL API осуществляется через эндпоинт `/graphql`. API предоставляет возможность выполнять запросы и мутации. #### Запросы (Queries) - `getTools` - Получить список всех инструментов - `getTool(name: String!)` - Получить информацию о конкретном инструменте - `getResources` - Получить список всех ресурсов - `getResource(uri: String!)` - Получить ресурс по URI - `getPrompts` - Получить список всех промптов - `getPrompt(name: String!)` - Получить информацию о конкретном промпте Пример GraphQL запроса: ```graphql query { getTools { name description input_schema } } ``` #### Мутации (Mutations) - `executeTool(input: ToolInput!)` - Выполнить инструмент - `executePrompt(input: PromptInput!)` - Выполнить промпт - `createResource(input: ResourceInput!)` - Создать ресурс Пример GraphQL мутации: ```graphql mutation { executeTool(input: { name: "text_processor", parameters: { operation: "find_keywords", text: "MCP является стандартным протоколом для взаимодействия между LLM-моделями и приложениями, предоставляющими контекст и инструменты для этих моделей." } }) { content { type text } is_error } } ``` ### WebSocket API Для реализации двусторонней связи и поддержки потоковой передачи данных, MCP предоставляет WebSocket API через эндпоинт `/ws`. #### Сообщения WebSocket 1. **Инициализация соединения** ```json {"type": "initialize", "id": "unique-request-id"} ``` 2. **Выполнение инструмента** ```json { "type": "tool_request", "id": "unique-request-id", "data": { "name": "text_processor", "parameters": { "operation": "summarize", "text": "Длинный текст для суммаризации..." } } } ``` 3. **Запрос ресурса** ```json { "type": "resource_request", "id": "unique-request-id", "data": { "uri": "example://document1" } } ``` 4. **Выполнение промпта** ```json { "type": "prompt_request", "id": "unique-request-id", "data": { "name": "code_review", "arguments": { "language": "python", "code": "def example():\n pass" } } } ``` 5. **Сэмплирование** ```json { "type": "sampling_request", "id": "unique-request-id", "data": { "messages": [ { "role": "user", "content": {"type": "text", "text": "Что такое MCP?"} } ], "max_tokens": 100, "temperature": 0.7 } } ``` ## Примеры использования инструментов ### Text Processor Инструмент `text_processor` предоставляет различные операции для обработки текста: #### Статистика текста ```bash curl -X POST "http://localhost:8000/tools/text_processor" \ -H "Content-Type: application/json" \ -d '{ "operation": "statistics", "text": "Пример текста для анализа. Этот текст содержит несколько предложений. Мы используем его для демонстрации функций инструмента.", "stat_options": ["chars", "words", "sentences", "paragraphs", "readability"] }' ``` #### Извлечение сущностей ```bash curl -X POST "http://localhost:8000/tools/text_processor" \ -H "Content-Type: application/json" \ -d '{ "operation": "extract_entities", "text": "Свяжитесь с нами по email: example@email.com или посетите наш сайт https://example.com. Вы также можете позвонить по телефону +7 (123) 456-7890.", "entity_types": ["emails", "urls", "phone_numbers"] }' ``` #### Суммаризация текста ```bash curl -X POST "http://localhost:8000/tools/text_processor" \ -H "Content-Type: application/json" \ -d '{ "operation": "summarize", "text": "Длинный текст, который требуется суммаризировать..." }' ``` ## Модели данных ### Tool (Инструмент) ```json { "name": "text_processor", "description": "Обработка и анализ текста: форматирование, подсчет статистики и другие операции", "input_schema": { "type": "object", "properties": { "operation": { "type": "string", "enum": ["format", "statistics", "extract_entities", "summarize", "find_keywords"], "description": "Операция для выполнения" }, "text": { "type": "string", "description": "Текст для обработки" }, "...": "..." }, "required": ["operation", "text"] } } ``` ### Resource (Ресурс) ```json { "uri": "example://document1", "name": "Пример документа", "description": "Документ для тестирования API ресурсов", "mimeType": "text/plain" } ``` ### Message (Сообщение) ```json { "role": "user", "content": { "type": "text", "text": "Что такое MCP?" } } ``` ## Коды ошибок - `400 Bad Request` - Некорректные параметры запроса - `404 Not Found` - Ресурс, инструмент или промпт не найден - `500 Internal Server Error` - Внутренняя ошибка сервера - WebSocket коды ошибок: - `-32000` - Общая ошибка - `-32601` - Метод не найден ## Требования к безопасности - Все запросы к API должны проходить валидацию параметров - При необходимости следует использовать аутентификацию и авторизацию - Инструменты, требующие пользовательского подтверждения (requires_user_approval = true), должны быть явно подтверждены перед выполнением - Доступ к файловой системе через инструменты должен быть ограничен безопасными директориями ## Версионирование API Текущая версия API: 1.0.0 При обновлении API следует придерживаться семантического версионирования (SemVer): - Увеличение первого номера (MAJOR) при несовместимых изменениях API - Увеличение второго номера (MINOR) при добавлении функциональности с обратной совместимостью - Увеличение третьего номера (PATCH) при исправлении ошибок с обратной совместимостью

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eagurin/myaiserv'

If you have feedback or need assistance with the MCP directory API, please join our Discord server