Разработка с 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

Доступ к ресурсам в MCP: Эффективная передача контекста для Claude

В мире больших языковых моделей (LLM), таких как Claude, предоставление точного и актуального контекста является ключом к получению высококачественных ответов. Традиционно, для доступа к внешней информации модели часто полагаются на вызовы инструментов (tool calls), которые могут добавлять задержки и усложнять процесс. Однако платформа Managed Compute Platform (MCP) от Anthropic предлагает более элегантное и эффективное решение: ресурсы MCP.

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

Что такое ресурсы MCP и почему они важны?

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

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

Механизм запроса ресурсов: Клиент и Сервер

Как это работает на практике? Когда вы определили ресурсы на своем MCP-сервере (например, @report.pdf или @customer_data.json), вашему клиентскому приложению нужен способ запрашивать и использовать их. Клиент MCP действует как мост между вашим основным приложением и MCP-сервером, автоматически обрабатывая всю коммуникацию и парсинг данных.

Процесс довольно прост: когда пользователь хочет сослаться на документ или набор данных (например, вводя "Что нового в @report.pdf?"), ваше приложение использует клиент MCP для получения этого ресурса с сервера. Затем содержимое ресурса напрямую включается в промпт, который отправляется Claude. Для пользователя это выглядит как бесшовное взаимодействие, а для Claude — как получение полной информации без дополнительных запросов.

Реализация чтения ресурсов: Основы

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

async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]
    # Дальнейшая обработка содержимого

Здесь self.session().read_resource(AnyUrl(uri)) — это метод, который фактически выполняет запрос к MCP-серверу. Ответ от сервера обычно представляет собой список, и в большинстве случаев вам потребуется только первый элемент этого списка (result.contents[0]). Этот элемент содержит фактические данные ресурса, а также метаданные, такие как MIME type, который указывает на тип содержимого (например, текст, JSON, PDF).

Для корректной работы этой функции вам потребуются соответствующие импорты в вашем клиенте MCP. Например, для обработки URI может использоваться тип AnyUrl из библиотеки pydantic, а для работы с JSON — стандартный модуль json.

Обработка различных типов контента

Ресурсы могут возвращать различные типы контента, и ваш клиент должен уметь правильно их парсить. MIME type, полученный в метаданных ресурса, служит подсказкой для определения стратегии парсинга:

if isinstance(resource, types.TextResourceContents):
    if resource.mimeType == "application/json":
        return json.loads(resource.text)
    return resource.text

Этот подход гарантирует, что ресурсы в формате JSON будут правильно преобразованы в объекты Python, в то время как обычные текстовые ресурсы будут возвращены как строки. Если ресурс является изображением или другим бинарным файлом, логика обработки будет соответствующим образом адаптирована для работы с бинарными данными. Использование MIME type как ориентира обеспечивает гибкость и надежность при работе с разнообразными данными.

Преимущества и интеграция с вашим приложением

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

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

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

Заключение

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