Разработка с Claude API

Запросы, потоковые ответы, tool use, структурированный вывод и стоимость.

92 уроков, первые 3 бесплатно. Полный доступ: 1490 руб.

Уроки курса

  1. Welcome to the course
  2. Overview of Claude models
  3. Accessing the API
  4. Getting an API key
  5. Making a request
  6. Multi-Turn conversations
  7. Chat exercise
  8. System prompts
  9. System prompts exercise
  10. Temperature
  11. Course satisfaction survey
  12. Response streaming
  13. Structured data
  14. Structured data exercise
  15. Quiz on accessing Claude with the API
  16. Prompt evaluation
  17. A typical eval workflow
  18. Generating test datasets
  19. Running the eval
  20. Model based grading
  21. Code based grading
  22. Exercise on prompt evals
  23. Quiz on prompt evaluation
  24. Prompt engineering
  25. Being clear and direct
  26. Being specific
  27. Structure with XML tags
  28. Providing examples
  29. Exercise on prompting
  30. Quiz on prompt engineering techniques
  31. Introducing tool use
  32. Project overview
  33. Tool functions
  34. Tool schemas
  35. Handling message blocks
  36. Sending tool results
  37. Multi-turn conversations with tools
  38. Implementing multiple turns
  39. Using multiple tools
  40. Fine grained tool calling
  41. The text edit tool
  42. The web search tool
  43. Quiz on tool use with Claude
  44. Introducing Retrieval Augmented Generation
  45. Text chunking strategies
  46. Text embeddings
  47. The full RAG flow
  48. Implementing the RAG flow
  49. BM25 lexical search
  50. A Multi-Index RAG pipeline
  51. Extended thinking
  52. Image support
  53. PDF support
  54. Citations
  55. Prompt caching
  56. Rules of prompt caching
  57. Prompt caching in action
  58. Code execution and the Files API
  59. Quiz on features of Claude
  60. Introducing MCP
  61. MCP clients
  62. Project setup
  63. Defining tools with MCP
  64. The server inspector
  65. Implementing a client
  66. Defining resources
  67. Accessing resources
  68. Defining prompts
  69. Prompts in the client
  70. MCP review
  71. Quiz on Model Context Protocol
  72. Anthropic apps
  73. Claude Code setup
  74. Claude Code in action
  75. Enhancements with MCP servers
  76. Agents and workflows
  77. Parallelization workflows
  78. Chaining workflows
  79. Routing workflows
  80. Agents and tools
  81. Environment inspection
  82. Workflows vs agents
  83. Quiz on Agents and Workflows
  84. Final Assessment
  85. Course Wrap Up
  86. What You'll Learn
  87. What You'll Learn
  88. What You'll Learn
  89. What You'll Learn
  90. What You'll Learn
  91. What You'll Learn
  92. What You'll Learn

Введение: Расширяя возможности Claude с помощью MCP

В современном мире искусственного интеллекта большие языковые модели (LLM), такие как Claude, обладают невероятными способностями к пониманию и генерации текста. Однако их внутренняя "знания" ограничены данными, на которых они были обучены. Чтобы Claude мог взаимодействовать с реальным миром, выполнять действия или получать актуальную информацию из внешних источников, ему необходим механизм для использования внешних инструментов и сервисов. Именно здесь в игру вступает MCP (Modular Communication Protocol) и его ключевой компонент — клиент MCP.

MCP предоставляет стандартизированный способ для Claude (через ваше приложение) взаимодействовать с внешними системами, будь то базы данных, API сторонних сервисов или даже внутренние инструменты вашей компании. Клиент MCP является тем самым "переводчиком" и "посредником", который делает это взаимодействие возможным и бесшовным.

Что такое клиент MCP?

Представьте, что ваш сервер — это мозг, который управляет вашим приложением, а Claude — это невероятно умный помощник, способный понимать и генерировать текст. Но что, если Claude нужно выполнить действие в реальном мире, например, получить актуальные данные из внешней базы данных или отправить электронное письмо? Именно здесь в игру вступает клиент MCP.

Клиент MCP (Modular Communication Protocol) — это, по сути, мост связи между вашим сервером и серверами MCP. Думайте о нем как о вашей точке доступа ко всем инструментам и сервисам, которые может предоставить сервер MCP. Когда вашему приложению необходимо использовать внешние инструменты или службы, клиент MCP берет на себя всю сложную работу по передаче сообщений и соблюдению протоколов, позволяя вам сосредоточиться на логике вашего приложения. Он абстрагирует детали того, как именно происходит взаимодействие с внешними системами, предоставляя унифицированный интерфейс. Таким образом, клиент MCP становится незаменимым компонентом для создания интеллектуальных агентов, способных не только рассуждать, но и действовать.

Гибкость коммуникации: Транспортная Независимость

Одной из ключевых особенностей MCP является его "транспортная независимость" (transport agnostic). Это означает, что клиент и сервер MCP могут общаться друг с другом, используя различные методы связи, не привязываясь к какому-то одному конкретному "транспорту" для передачи данных. Такая гибкость делает MCP очень адаптивным к различным архитектурам систем.

Наиболее распространенная и простая настройка предполагает запуск как клиента MCP, так и сервера MCP на одной и той же машине. В этом случае они обычно обмениваются данными через стандартные потоки ввода/вывода (standard input/output), что является эффективным и низкозатратным способом локального взаимодействия. Это идеально подходит для небольших приложений или для разработки, где все компоненты находятся в одном окружении.

Однако вы не ограничены этим подходом. Клиенты и серверы MCP также могут устанавливать соединение и обмениваться информацией через различные сетевые протоколы. Это открывает возможности для распределенных систем, где клиент и сервер могут находиться на разных машинах или даже в разных центрах обработки данных, взаимодействуя через TCP/IP, HTTP или другие специализированные протоколы. Такая архитектурная гибкость позволяет интегрировать MCP в самые разнообразные инфраструктуры, от монолитных приложений до сложных микросервисных систем, обеспечивая масштабируемость и надежность.

Основные типы сообщений MCP

После установления соединения клиент и сервер MCP обмениваются определенными типами сообщений, которые строго определены в спецификации MCP. Эти сообщения являются "языком", на котором они общаются, чтобы запрашивать информацию об инструментах и вызывать их. Понимание этих основных типов сообщений критически важно для работы с MCP.

Двумя основными парами сообщений, с которыми вы будете работать, являются:

Эти стандартизированные типы сообщений обеспечивают четкое и предсказуемое взаимодействие, позволяя различным компонентам системы эффективно сотрудничать и масштабироваться.

Пример полного цикла взаимодействия с MCP

Чтобы лучше понять, как все эти части работают вместе, давайте рассмотрим реальный сценарий. Представьте, что пользователь задает вашему приложению вопрос: "Какие репозитории у меня есть?" (например, на GitHub). Вот как будет выглядеть полный поток коммуникации, использующий MCP для взаимодействия с внешним сервисом:

  1. Запрос пользователя к вашему серверу: Процесс начинается, когда пользователь отправляет свой запрос вашему серверу. Ваш сервер получает вопрос "Какие репозитории у меня есть?".
  2. Подготовка к запросу Claude: Ваш сервер понимает, что для ответа на этот вопрос Claude, возможно, потребуется использовать внешний инструмент (в данном случае, инструмент для получения списка репозиториев GitHub). Прежде чем отправить запрос Claude, ваш сервер должен предоставить ему информацию о доступных инструментах.
  3. Запрос списка инструментов: Ваш сервер обращается к клиенту MCP, чтобы получить список доступных инструментов. Клиент MCP, в свою очередь, формирует и отправляет сообщение ListToolsRequest на сервер MCP.
  4. Получение списка инструментов: Сервер MCP обрабатывает запрос и возвращает клиенту MCP сообщение ListToolsResult, содержащее список всех инструментов, которые он может предоставить (например, "получить_репозитории_github" с описанием его функции). Клиент MCP передает этот список вашему серверу.
  5. Первоначальный запрос к Claude: Теперь ваш сервер обладает всей необходимой информацией для формирования первоначального запроса к Claude: как сам вопрос пользователя, так и список доступных инструментов. Он отправляет это Claude.
  6. Claude решает использовать инструмент: Claude анализирует вопрос пользователя и предоставленные инструменты. Он понимает, что для ответа ему необходимо вызвать инструмент "получить_репозитории_github". Claude отвечает вашему серверу запросом на использование инструмента, указывая имя инструмента и необходимые аргументы (например, имя пользователя GitHub, если оно не было указано в вопросе, Claude может запросить его у пользователя).
  7. Выполнение инструмента через MCP: Ваш сервер получает запрос Claude на выполнение инструмента. Он просит клиента MCP выполнить этот инструмент. Клиент MCP формирует сообщение CallToolRequest с именем инструмента и аргументами и отправляет его на сервер MCP.
  8. Сервер MCP взаимодействует с внешним сервисом: Сервер MCP получает CallToolRequest, понимает, что нужно обратиться к GitHub API, и делает фактический запрос к GitHub для получения данных о репозиториях.
  9. Получение результатов инструмента: GitHub возвращает данные о репозиториях серверу MCP. Сервер MCP инкапсулирует эти данные в сообщение CallToolResult и отправляет его обратно клиенту MCP, который затем передает их вашему серверу.
  10. Отправка результатов Claude: Ваш сервер получает результаты выполнения инструмента и отправляет их обратно Claude в последующем сообщении. Теперь у Claude есть вся информация, необходимая для формулирования полного и точного ответа.
  11. Окончательный ответ Claude: Claude обрабатывает полученные данные и формирует отформатированный ответ пользователю (например, "Вот список ваших репозиториев: [список]"). Ваш сервер получает этот ответ и передает его обратно пользователю.

Да, этот поток включает в себя множество шагов, но каждый компонент имеет четко определенную ответственность. Клиент MCP абстрагирует сложность коммуникации с сервером и внешними сервисами, позволяя вам сосредоточиться исключительно на логике вашего приложения и взаимодействии с Claude.

Преимущества использования клиента MCP

Как видно из примера, клиент MCP играет центральную роль в расширении возможностей Claude за пределы его внутренней модели. Он служит надежным и гибким посредником, который позволяет вашему приложению легко интегрировать внешние инструменты и сервисы.

Главное преимущество использования клиента MCP заключается в том, что он берет на себя всю рутину и сложность взаимодействия с серверами MCP и, косвенно, с внешними API. Вам не нужно беспокоиться о низкоуровневых деталях сетевых протоколов, форматировании сообщений или обработке ошибок на этом уровне. Вместо этого вы можете сосредоточиться на проектировании логики вашего приложения, на том, как Claude будет использовать инструменты, и на том, как наилучшим образом отвечать на запросы пользователей. Это значительно упрощает разработку и делает процесс создания мощных, контекстно-осведомленных приложений с Claude более эффективным, позволяя вам создавать по-настоящему интеллектуальные и функциональные решения.