mcp-context-engineering
mcp-context-engineering
Небольшой запускаемый проект, демонстрирующий контекстную инженерию для MCP-серверов: сохранение небольшого следа сервера Model Context Protocol в контекстном окне модели, чтобы агенты были дешевле и точнее.
Проблема
Когда MCP-клиент (Claude Desktop, Cursor, SDK-приложение) подключается к MCP-серверу, он тянет каждое объявляемое определение инструмента — имя, описание и полную схему входных данных — в контекст модели. Сервер с 30–60+ инструментами может сжечь более 10 000 токенов на определениях, прежде чем агент вообще что-то сделает. Это приводит к двум проблемам:
Впустую потраченные токены. Вы платите за определения инструментов, которые агент никогда не вызовет.
Снижение точности. Модель отвлекается на нерелевантные инструменты и с большей вероятностью выберет неправильный или выдумает параметры.
Два приёма
Этот проект реализует обе половины решения на каталоге из 33 имитационных инструментов «web-data» (Amazon, LinkedIn, TikTok, GitHub, Zillow, автоматизация браузера, пакетный скрапинг, ...), организованных в логические группы.
Ограничьте набор объявляемых инструментов. Загружайте только те возможности, которые нужны агенту, — либо целой группой (
GROUPS=social), либо выборочно отдельными инструментами (TOOLS=web_data_amazon_product,...). Только эти определения когда-либо попадают в контекст.Оптимизируйте вывод, который возвращают эти инструменты. Удаляйте из соскрапленных страниц Markdown, тратящий токены (жирный/курсив, синтаксис изображений, маркеры заголовков, ограждения кода, URL ссылок), прежде чем они попадут в контекст, сохраняя каждое слово, которое модель реально читает.
Измеренный эффект (из прилагаемого офлайн-отчёта)
Полный каталог = 33 инструмента ≈ 4 556 токенов определений при загрузке без ограничений.
Конфигурация | Инструменты | Токены определений | Экономия по сравнению со всеми |
по умолчанию (только базовые инструменты) | 3 | 506 | 89% |
| 9 | 1,318 | 71% |
| 11 | 1,566 | 66% |
| 14 | 1,973 | 57% |
| 3 | 416 | 91% |
| 6 | 917 | 80% |
| 33 | 4,556 | 0% |
Очистка Markdown на соскрапленной странице: 243 → 149 токенов (~39% меньше).
Числа получены встроенным эвристическим оценщиком токенов; передайте --tiktoken в отчёт для точных подсчётов, если установлен tiktoken. Смысл в соотношениях, которые стабильны.
Паттерн в одной фразе
Ограничьте набор загружаемых инструментов, сократите их вывод и позвольте MCP-серверу делать сложную работу.
Карта кода
mcp-context-engineering/
├── src/mcp_context_engineering/
│ ├── __init__.py # Public API re-exports + version.
│ ├── tool_groups.py # Source of truth for groups: BASE_TOOLS + 8 logical
│ │ # groups (ecommerce, social, business, research,
│ │ # finance, app_stores, browser, advanced_scraping)
│ │ # and helpers (all_tool_names, total_tool_count).
│ ├── tool_catalog.py # Full catalog of 33 ToolSpecs: name, description,
│ │ # JSON input schema, and an OFFLINE mock handler
│ │ # each. Also MARKDOWN_TOOLS (which outputs to strip)
│ │ # and a SAMPLE_MARKDOWN_PAGE for the demo.
│ ├── context_config.py # The scoping brain. Reads PRO_MODE / GROUPS / TOOLS,
│ │ # resolves the exact tool set (resolve_context),
│ │ # and defines named PRESETS.
│ ├── strip_markdown.py # Dependency-free output optimiser: strips Markdown
│ │ # formatting, keeps words + code, links optional.
│ ├── token_utils.py # Lightweight offline token estimator + tool-def
│ │ # token counting (tiktoken optional).
│ └── server.py # The MCP server (official SDK low-level Server,
│ │ # stdio). Advertises only scoped tools; strips
│ │ # Markdown output. build_server() for tests.
├── scripts/
│ ├── run_server.py # Launch the server over stdio (what a client runs).
│ └── token_report.py # Offline demo: prints the savings tables above.
├── examples/
│ ├── claude_desktop_social_agent.json # config: one group
│ ├── claude_desktop_price_monitor.json # config: hand-picked tools
│ └── claude_desktop_pro_mode.json # config: everything (baseline)
├── tests/
│ └── test_context_engineering.py # 23 offline tests (unittest)
├── requirements.txt # Just the official `mcp` SDK (tiktoken optional).
├── .env.example # All config vars, documented.
└── .gitignoreКак части сочетаются
tool_groups.py определяет, какие имена инструментов относятся к какой группе. tool_catalog.py задаёт каждому имени полное определение (описание + схему) и имитационный обработчик. context_config.py читает окружение и решает, какое именно подмножество имён предоставлять. server.py запрашивает у context_config это подмножество, объявляет только эти определения через tools/list и — когда вызывается инструмент MARKDOWN_TOOLS — прогоняет его вывод через strip_markdown.py перед возвратом. token_utils.py обеспечивает работу офлайн-отчёта token_report.py, который количественно оценивает оба выигрыша, не обращаясь к сети.
Поток данных
flowchart TD
subgraph Config["Configuration (env vars)"]
E["PRO_MODE / GROUPS / TOOLS<br/>STRIP_MARKDOWN"]
end
E --> RC["context_config.resolve_context()"]
TG["tool_groups.py<br/>(group -> tool names)"] --> RC
RC -->|"scoped list of tool names"| SRV["server.py (MCP Server)"]
TC["tool_catalog.py<br/>(name -> description, schema, handler)"] --> SRV
subgraph MCP["MCP session (stdio)"]
CLIENT["MCP client / LLM agent"]
SRV
end
SRV -->|"tools/list: ONLY scoped definitions"| CLIENT
CLIENT -->|"tools/call(name, args)"| SRV
SRV -->|"handler() output"| STRIP["strip_markdown.py<br/>(markdown tools only)"]
STRIP -->|"trimmed text"| CLIENT
RC -.offline.-> REPORT["scripts/token_report.py"]
TC -.offline.-> REPORT
TU["token_utils.py"] -.-> REPORT
REPORT -.-> OUT["savings tables"]Быстрый старт
# 1. (optional) create a virtualenv
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
# 2. install the one dependency
pip install -r requirements.txt
# 3. see the token savings - fully offline, no key, no network
python scripts/token_report.py
python scripts/token_report.py --json # machine-readable
# 4. run the tests
python -m unittest discover -s tests -vЗапуск MCP-сервера
Сервер общается по MCP через stdio и настраивается полностью через переменные окружения:
# default: just the small base tool set
python scripts/run_server.py
# a focused social-media agent
GROUPS=social python scripts/run_server.py
# hand-pick exactly the tools a price monitor needs
TOOLS=web_data_amazon_product,web_data_ebay_product,web_data_google_shopping \
python scripts/run_server.py
# the un-scoped baseline (loads everything)
PRO_MODE=true python scripts/run_server.py
# disable output trimming
STRIP_MARKDOWN=false GROUPS=social python scripts/run_server.pyДопустимые идентификаторы групп: ecommerce, social, business, research, finance, app_stores, browser, advanced_scraping. Полный список переменных см. в .env.example.
Подключение к MCP-клиенту
Скопируйте один из файлов в examples/ в конфигурацию серверов вашего клиента (для Claude Desktop это claude_desktop_config.json), замените /ABSOLUTE/PATH на путь к вашей копии репозитория и перезапустите клиент. Три примера показывают ограниченную группу, набор, отобранный вручную, и базовый вариант с загрузкой всего.
Примечания об инструментах
Каждый обработчик инструмента в этом проекте возвращает готовые офлайн-примеры данных. Нигде нет API-ключей и доступа к сети — цель состоит в демонстрации паттерна контекстной инженерии, а не в скрапинге живых сайтов. Чтобы сделать проект реальным, замените обработчики в tool_catalog.py на вызовы настоящего web-data бэкенда и читайте его учётные данные из переменной окружения (заглушка WEB_DATA_API_KEY описана в .env.example).
Основано на / вдохновлено
Model Context Protocol Python SDK — официальный SDK, который использует этот сервер: https://github.com/modelcontextprotocol/python-sdk
Документация и спецификация протокола: https://modelcontextprotocol.io
Bright Data MCP server — MCP-сервер с открытым исходным кодом, который популяризировал ограничение набора инструментов по группам и оптимизацию вывода с очисткой Markdown, воспроизведённые здесь: https://github.com/brightdata/brightdata-mcp
Лицензия
MIT (см. LICENSE, если он присутствует, или считайте пример кода лицензированным по MIT).
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
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Deterministic AI agent microtools, no accounts/API keys. fetch_extract: 98% token cut. 38 tools.
See, price, and control every tool call your AI agents make: policy checks, cost, and audit tools.
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/crzyc0d3r/mcp-context-engineering'
If you have feedback or need assistance with the MCP directory API, please join our Discord server