delivery-mcp-server
delivery-mcp-server
PH.02 of the AI-Forward Delivery Leader Build Program. Сервер MCP (Model Context Protocol), предоставляющий индексированные программные документы delivery-copilot — SOW, отчеты о статусе, заметки QBR, реестр рисков — в виде инструментов, ресурса и подсказки, которые любой хост MCP (Claude Desktop, Claude Code) может использовать напрямую, с изоляцией по учетным записям, перенесенной напрямую из PH.01.
MCP — это та часть, которую почти ни один кандидат с опытом в delivery/PM на самом деле не создавал: большинство людей использовали MCP-сервер внутри чат-клиента. Этот сервер создан с нуля, и этот README также служит объяснением назначения каждой движущейся части.
Статус
Создано и проверено: 3 инструмента, 1 ресурс, 1 подсказка, все протестированы от начала до конца через реальный MCP Client и через claude mcp add в Claude Code.
Related MCP server: Claude RAG MCP Pipeline
Что такое MCP и почему он построен именно так
MCP стандартизирует то, как хост-приложение (Claude Desktop, Claude Code) взаимодействует с сервером, предоставляющим данные и функциональность — одна интеграция вместо индивидуальной для каждого приложения. Сервер предоставляет три различных примитивных типа, и эта сборка намеренно использует все три, чтобы показать различие на практике, а не просто описать его:
Инструменты — действие, которое модель решает вызвать в середине разговора, выбирая собственные аргументы.
search_delivery_docs— это основной инструмент данного сервера.Ресурсы — данные только для чтения, которые приложение выбирает для загрузки по URI, как браузер загружает страницу — не то, что модель вызывает сама.
delivery://{account}/{filename}— это ресурс данного сервера: получить целый документ, когда вы уже знаете, какой именно вам нужен.Подсказки — шаблон сообщения, который человек вызывает по имени, как слэш-команду.
draft_status_update— это подсказка данного сервера: выберите учетную запись, получите готовую инструкцию, вставленную в разговор.
Разделение на поиск и генерацию — это настоящее архитектурное решение. delivery-copilot/ask.py извлекает фрагменты и вызывает Claude для генерации ответа с цитированием в одном скрипте, потому что ничто другое в этом конвейере не является моделью. Внутри MCP-сервера в цикле уже есть модель — та, что ведет разговор хоста. Поэтому search_delivery_docs выполняет только поиск и возвращает совпавшие фрагменты в виде данных; собственная модель хоста читает их и сама составляет обоснованный ответ, руководствуясь инструкцией по цитированию/отказу, встроенной в docstring инструмента (единственное место, где сервер может оставить инструкции по обоснованию, поскольку он не владеет системным промптом). Одно заслуживающее упоминания следствие: этот сервер ни разу не вызывает Claude. Нет ANTHROPIC_API_KEY, нет платных запросов — это локальное встраивание и векторный поиск, именно то, что уже делает ingest.py. Стоимость генерации полностью ложится на хост.
Изоляция переносится без изменений из PH.01. Каждый инструмент принимает аргумент account и читает только коллекцию Chroma этой учетной записи (delivery_docs__<account>) — снова проверено на этом уровне с помощью одноразовой второй учетной записи: задав ей не связанный вопрос (то, на что могла ответить только meridian-health), она вернула только свою собственную единственную заметку, никогда не содержимое Meridian.
Структура репозитория — почему это не Python-импорт от delivery-copilot
Этот репозиторий зависит от delivery-copilot ровно для одной вещи: артефакта данных в chroma_db/, а не его кода. Никакого межрепозиторного pip install -e, никаких общих модулей:
list_accounts()читаетclient.list_collections()и удаляет префиксdelivery_docs__— вообще не нуждается вdata/raw/.list_documents(account)читает уникальные значенияsource, уже сохраненные в метаданных фрагментов этой коллекции.Ресурс
delivery://восстанавливает документ, объединяя его фрагменты в исходном порядке (извлеченном из идентификаторов фрагментовsource::N, которыеingest.pyуже назначает).
Укажите DELIVERY_DB_PATH на любое собранное хранилище Chroma (по умолчанию: ../delivery-copilot/chroma_db, предполагая, что оба репозитория клонированы как соседние) — и этот сервер работает — действительно самодостаточный с точки зрения кода, независимо клонируемый, что соответствует тому, как ai-fundamentals-rig и delivery-copilot независимы друг от друга.
Стоящая внимания находка (окружение)
mcp[cli] тянет за собой pyjwt[crypto] → cryptography. cryptography перестала поставлять предварительно собранные x86_64 macOS wheels начиная с v46.0.4 (с тех пор только arm64) — установка на этой (действительно Intel) машине пыталась скомпилировать из исходников и не удалась без заголовков Rust/OpenSSL. Зафиксировали cryptography==46.0.3 в requirements.txt, последний релиз с x86_64 wheel, комфортно удовлетворяющий требованию pyjwt cryptography>=3.4.0. Напоминание: "pip install" молча предполагает, что для вашей архитектуры CPU есть wheel — это не всегда так.
Также: текущая мажорная версия MCP Python SDK (v2) требует Python 3.10+; системный Python этой машины был 3.9.6. Установили 3.13 через официальный установщик python.org, рядом с системным интерпретатором, специально для .venv этого репозитория.
Настройка
# needs delivery-copilot's index already built: `python ingest.py` in that repo first
python3.13 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtЗапуск
Ручное тестирование, хост не нужен — вызывает каждый инструмент/ресурс/подсказку через реальный Client в памяти:
python test_server.pyMCP Inspector (интерактивный, открывает локальный веб-интерфейс):
uv run mcp dev server.py # or: pip install uv, then the same commandЗарегистрировать в Claude Code:
claude mcp add delivery-copilot \
-e DELIVERY_DB_PATH=/absolute/path/to/delivery-copilot/chroma_db \
-- /absolute/path/to/delivery-mcp-server/.venv/bin/python /absolute/path/to/delivery-mcp-server/server.py
claude mcp list # confirm it connectsЗатем в чате Claude Code: "Используя MCP-сервер delivery-copilot, кто владеет риском Okta для meridian-health, согласно документам?" — Claude сам вызывает search_delivery_docs и цитирует то, что возвращается.
Что дальше
PH.02 функционально завершен: 3 инструмента, 1 ресурс, 1 подсказка, протестированы локально и вживую через Claude Code. Естественные расширения, не блокирующие: вторая реальная учетная запись, как только она появится (ничто здесь не привязано к meridian-health), и агент статуса/рисков PH.03 может разумно строиться на draft_status_update, а не начинаться с нуля.
This server cannot be deployed
Maintenance
Related MCP Connectors
Ingest, manage, and retrieve documents for RAG-powered AI applications
Agentic search over your Dewey document collections from any MCP-compatible client.
Search your knowledge bases from any AI assistant using hybrid RAG.
Securely search and manage workspace context files for AI agents and teams.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables LLMs to perform semantic search and document management using ChromaDB, supporting natural language queries with intuitive similarity metrics for retrieval augmented generation applications.-
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to search and query personal document collections (PDF, Word, Markdown, text) using semantic search and conversational AI with full context preservation across exchanges.MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude Desktop to search custom knowledge bases using retrieval-augmented generation via a simple MCP tool.MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying enterprise documents (DOCX, PDF, PPTX) using natural language, with hybrid search and MCP integration for Claude Desktop and other agents.MIT