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.
Что такое 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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bmihestean/delivery-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server