{"title":"Claude + MCP: собираем агента на Anthropic","url":"https://verapointmedia.com/guides/ai-agent-claude-mcp-agent/","markdownUrl":"https://verapointmedia.com/guides/ai-agent-claude-mcp-agent.md","language":"ru","category":"guides","publishedAt":"2026-05-25T10:00:00.000Z","updatedAt":"2026-05-25T10:00:00.000Z","references":["https://console.anthropic.com/","https://modelcontextprotocol.io/","https://docs.anthropic.com/en/api/messages","https://www.anthropic.com/engineering/building-effective-agents"],"rights":"Public user-requested reading, summarization and citation allowed. Model training requires separate permission.","contentMarkdown":"# Claude + MCP: собираем агента на Anthropic\n\n- Site: VeraPoint News\n- Section: Гайды\n- Date: 2026-05-25\n- Canonical: https://verapointmedia.com/guides/ai-agent-claude-mcp-agent/\n- Markdown: https://verapointmedia.com/guides/ai-agent-claude-mcp-agent.md\n- Summary: 💡 В прошлом гайде мы сделали агента на OpenAI. Теперь разберёмся со стеком Anthropic — создателями Claude. У них другой подход: вместо готовой библиотеки они предлагают протокол MCP. Что это такое, зачем нужно и как с...\n- Target queries: claude mcp туториал; mcp протокол что это; создать mcp сервер python; claude api агент пример кода; антропик агент mcp инструкция\n- Tags: #ai-agents #guide #tutorial #python #anthropic #claude #mcp #practical #russian\n- Image: https://verapointmedia.com/static/content-assets/guides/ai-agent-claude-mcp-agent/cover.webp\n\n## Sources\n\n- https://console.anthropic.com/\n- https://modelcontextprotocol.io/\n- https://docs.anthropic.com/en/api/messages\n- https://www.anthropic.com/engineering/building-effective-agents\n\n---\n\n## Короткий ответ\n\n💡 В прошлом гайде мы сделали агента на OpenAI. Теперь разберёмся со стеком Anthropic — создателями Claude. У них другой подход: вместо готовой библиотеки они предлагают протокол MCP. Что это такое, зачем нужно и как с этим работать — разбираемся по шагам.\n\n![](https://verapointmedia.com/static/content-assets/guides/ai-agent-claude-mcp-agent/slide-01.webp)\n\n\n---\n\n## Что такое MCP — объясняю на пальцах\n\nMCP расшифровывается как **Model Context Protocol**. Звучит страшно, но на деле всё просто.\n\n**Протокол** — это, как мы уже говорили, правила общения. Как два человека договариваются, на каком языке разговаривать.\n\n**MCP — это единый язык, на котором AI-агенты общаются с внешними сервисами.**\n\nДо MCP было так: хочешь подключить агента к Google Календарю — пиши свой код. Хочешь к Slack — ещё код. К базе данных — снова код. Каждый раз уникальный, под конкретную задачу.\n\nС MCP всё иначе. Вы один раз пишете **MCP-сервер** — небольшую программу-переходник, которая умеет делать что-то одно (например, работать с заметками). И **любой** AI-агент, который поддерживает MCP, может этим сервером пользоваться.\n\n**Метафора:** MCP — это USB-C порт для AI-агентов. Раньше у каждого устройства был свой кабель. Теперь один стандарт — и подключай что хочешь.\n\n### Три части MCP\n\nЕсть три понятия, которые нужно запомнить:\n\n1. **MCP-клиент** — это сам AI-агент (например, Claude или ваша программа, которая общается с Claude). Он спрашивает: «Что ты умеешь?»\n\n2. **MCP-сервер** — это программа-посредник. Он отвечает: «Я умею читать заметки, писать заметки, искать по ним». И когда агент просит — сервер делает.\n\n3. **Инструменты (tools)** — это конкретные действия, которые сервер умеет выполнять. «Прочитать файл», «Отправить письмо», «Узнать погоду».\n\n---\n\n\n![](https://verapointmedia.com/static/content-assets/guides/ai-agent-claude-mcp-agent/slide-02.webp)\n\n## Шаг 1. Получаем API-ключ Claude\n\nНам понадобится ключ Anthropic — он нужен, чтобы программа могла общаться с моделью Claude.\n\n1. Зайдите на [console.anthropic.com](https://console.anthropic.com/)\n2. Зарегистрируйтесь или войдите\n3. Перейдите в раздел **API Keys**\n4. Нажмите «Create Key» и скопируйте ключ\n\nТеперь сохраните его в переменную окружения. В терминале:\n\n```bash\nexport ANTHROPIC_API_KEY=\"ваш_ключ\"\n```\n\nЕсли вы на Windows:\n\n```cmd\nset ANTHROPIC_API_KEY=ваш_ключ\n```\n\n**Как это работает:** переменная окружения — это как записочка, которую ваша программа может прочитать в любой момент. «Где лежит ключ?» — «В переменной ANTHROPIC_API_KEY». Так вы не храните ключ прямо в коде (это небезопасно).\n\n---\n\n## Шаг 2. Устанавливаем библиотеки\n\nНам понадобятся две библиотеки. Откройте терминал и выполните:\n\n```bash\npip install anthropic mcp\n```\n\n- `anthropic` — официальная библиотека Anthropic для работы с Claude\n- `mcp` — библиотека для создания и подключения MCP-серверов\n\n---\n\n## Шаг 3. Пишем MCP-сервер (наш первый!)\n\nСервер — это самостоятельная программа. Она работает в фоне и ждёт, когда к ней обратится агент.\n\nДавайте напишем простой сервер для заметок. Он будет уметь:\n- Добавлять заметку\n- Показывать список заметок\n\nСоздайте файл `notes_server.py`:\n\n```python\nfrom mcp.server.fastmcp import FastMCP\n\nmcp = FastMCP(\"NotesServer\")\n\nnotes = []\n\n@mcp.tool()\ndef add_note(content: str) -> str:\n    \"\"\"Добавляет новую заметку. Принимает текст заметки.\"\"\"\n    notes.append(content)\n    return f\"Заметка добавлена! Всего заметок: {len(notes)}\"\n\n@mcp.tool()\ndef get_notes() -> list:\n    \"\"\"Возвращает список всех заметок.\"\"\"\n    return notes\n\nif __name__ == \"__main__\":\n    mcp.run()\n```\n\n**Разберём код:**\n\n- `FastMCP(\"NotesServer\")` — создаём сервер. Имя может быть любым.\n- `@mcp.tool()` — это **декоратор**. По-русски — «пометка». Мы говорим: «функция ниже — это инструмент, покажи его агенту».\n- `def add_note(content: str) -> str:` — функция, которая принимает текст и возвращает текст.\n- `\"\"\"Добавляет заметку...\"\"\"` — описание. Модель Claude читает это описание, чтобы понять, когда вызывать этот инструмент. Чем точнее описание, тем лучше.\n- `notes` — просто список в памяти. При перезапуске сервера заметки исчезнут, но для примера хватит.\n\n---\n\n\n![](https://verapointmedia.com/static/content-assets/guides/ai-agent-claude-mcp-agent/slide-03.webp)\n\n## Шаг 4. Пишем агента, который вызывает сервер\n\nТеперь создадим файл `claude_agent.py` — это будет наш AI-агент. Он будет обращаться к Claude, а Claude будет решать, когда вызвать инструмент из нашего сервера.\n\n```python\nimport os\nfrom anthropic import Anthropic\n\nclient = Anthropic(api_key=os.environ.get(\"ANTHROPIC_API_KEY\"))\n\ntools = [\n    {\n        \"name\": \"add_note\",\n        \"description\": \"Добавляет новую заметку. Принимает текст заметки.\",\n        \"input_schema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"content\": {\n                    \"type\": \"string\",\n                    \"description\": \"Текст заметки для сохранения\"\n                }\n            },\n            \"required\": [\"content\"]\n        }\n    },\n    {\n        \"name\": \"get_notes\",\n        \"description\": \"Возвращает список всех сохранённых заметок.\",\n        \"input_schema\": {\n            \"type\": \"object\",\n            \"properties\": {},\n            \"required\": []\n        }\n    }\n]\n\ndef ask_claude(user_input):\n    \"\"\"Отправляет запрос Claude и возвращает ответ.\"\"\"\n    \n    # Шаг 1: отправляем запрос\n    response = client.messages.create(\n        model=\"claude-3-5-sonnet-20241022\",\n        max_tokens=1024,\n        tools=tools,\n        messages=[{\"role\": \"user\", \"content\": user_input}]\n    )\n\n    # Шаг 2: проверяем, хочет ли Claude использовать инструмент\n    if response.stop_reason == \"tool_use\":\n        # Находим блок с запросом на использование инструмента\n        for block in response.content:\n            if block.type == \"tool_use\":\n                print(f\"🔧 Агент вызывает: {block.name}\")\n                print(f\"   С данными: {block.input}\")\n                \n                # Здесь в реальности мы бы вызвали наш MCP-сервер\n                # Для примера — просто имитируем ответ\n                tool_result = f\"Инструмент {block.name} выполнен!\"\n\n        # Шаг 3: отправляем результат обратно Claude\n        final = client.messages.create(\n            model=\"claude-3-5-sonnet-20241022\",\n            max_tokens=1024,\n            tools=tools,\n            messages=[\n                {\"role\": \"user\", \"content\": user_input},\n                {\"role\": \"assistant\", \"content\": response.content},\n                {\n                    \"role\": \"user\",\n                    \"content\": [{\n                        \"type\": \"tool_result\",\n                        \"tool_use_id\": block.id,\n                        \"content\": tool_result\n                    }]\n                }\n            ]\n        )\n        return final.content[0].text\n\n    return response.content[0].text\n\nif __name__ == \"__main__\":\n    result = ask_claude(\"Запиши заметку: купить хлеб и молоко\")\n    print(f\"🤖 {result}\")\n```\n\n**Что здесь происходит шаг за шагом:**\n\n1. Мы подключаемся к Claude через библиотеку `anthropic`\n2. Описываем, какие инструменты есть у агента (название, описание, что принимает на вход)\n3. Отправляем запрос пользователя\n4. Claude может ответить двумя способами:\n   - **Обычный текст** — если ответ готов\n   - **Запрос на использование инструмента (tool_use)** — если Claude понял, что для ответа нужно вызвать функцию\n5. Если Claude хочет вызвать инструмент — мы имитируем выполнение (в реальности тут был бы вызов MCP-сервера) и отправляем результат обратно\n6. Claude получает результат и формулирует окончательный ответ\n\n---\n\n## Шаг 5. Как всё вместе работает (схема)\n\n```\nВы: \"Запиши заметку: купить хлеб\"\n  ↓\n    Агент → Claude: \"Пользователь хочет записать заметку\"\n  ↓\n    Claude: \"Мне нужно вызвать инструмент add_note с текстом 'купить хлеб'\"\n  ↓\n    Агент → MCP-сервер: \"Выполни add_note('купить хлеб')\"\n    Сервер: \"Готово! Заметка добавлена.\"\n  ↓\n    Агент → Claude: \"Результат: заметка сохранена\"\n  ↓\n    Claude: \"Готово! Я записал заметку.\"\n  ↓\nВы: \"Готово! Я записал заметку.\"\n```\n\n---\n\n## Что делать дальше\n\nВ этом гайде мы прошли весь путь: от установки до первого вызова инструмента. Но это пока игрушечный пример — заметки хранятся в памяти и исчезают при перезапуске.\n\nВ продакшне к MCP-серверу можно подключить настоящие сервисы:\n- Google Календарь (читать и создавать события)\n- Базу данных (хранить данные постоянно)\n- Slack (отправлять сообщения)\n- Файловую систему (читать и писать файлы)\n\nВ следующем гайде я расскажу, **как спроектировать AI-агента правильно**: как ставить цели, выбирать инструменты, ставить границы и не забыть про безопасность.\n\n👉 [Читать: Как спроектировать AI-агента →](https://t.me/verapavlova_ai)\n\nПропустили предыдущие гайды?\n\n👉 [Что такое AI-агент →](https://verapointmedia.com/guides/ai-agent-what-is/)\n👉 [Типы AI-агентов →](https://verapointmedia.com/guides/ai-agent-types/)\n👉 [Сравнение AI-фреймворков →](https://verapointmedia.com/guides/ai-agent-frameworks-comparison/)\n👉 [OpenAI SDK: первый агент →](https://verapointmedia.com/guides/ai-agent-openai-sdk-first-agent/)\n\n---\n\n\n![](https://verapointmedia.com/static/content-assets/guides/ai-agent-claude-mcp-agent/slide-04.webp)\n\n## Источники\n\n- [Anthropic Console — получить API-ключ](https://console.anthropic.com/)\n- [Model Context Protocol — официальная документация](https://modelcontextprotocol.io/)\n- [Anthropic API Reference](https://docs.anthropic.com/en/api/messages)\n- [Building Effective Agents](https://www.anthropic.com/engineering/building-effective-agents)\n\n---\n\n*Подписывайтесь на канал — каждый день новый гайд по AI-агентам.*\n\n#aiagents #guide #tutorial #claude #mcp #anthropic\n\nСмежные материалы:\n- [AI-агенты](/topics/ai-agents/)\n- [MCP простыми словами](https://verapointmedia.com/guides/mcp-prostymi-slovami/)\n- [Как бизнесу использовать AI-агентов без самообмана](https://verapointmedia.com/guides/kak-biznesu-ispolzovat-ai-agentov-bez-samoobmana/)\n## Частые вопросы\n\n### Что важно понять про тему «Claude + MCP: собираем агента на Anthropic»?\n\nНе путать красивую демонстрацию с рабочей системой: важны цель, шаги, инструменты, ограничения и проверка результата.\n\n### Чем это отличается от обычного чат-бота?\n\nЧат-бот в основном отвечает на запрос. Агентный подход работает как процесс: он может читать контекст, вызывать инструменты и вести задачу по шагам.\n\n### Когда такой подход реально нужен?\n\nКогда задача повторяется, состоит из нескольких действий и её можно проверить по понятному критерию качества.\n\n### С чего лучше начать новичку?\n\nС одного небольшого сценария, где можно ограничить права, увидеть промежуточные шаги и быстро понять, где агент помогает, а где только создаёт шум.\n"}