kookmin-stock
Агент Kookmin MCP Stock
Задание университета Kookmin · "Повышение эффективности с помощью Hermes + самописного MCP-сервера"
Мы докажем, как меняется качество работы, с помощью 3 экспериментов, подключив самописный MCP-сервер к агенту Hermes для рекомендации корейских акций, созданному в прошлом задании.
🎯 Что внутри
Результат | Путь | Описание |
MCP-сервер (нормальный) |
| FastMCP stdio, 6 типов инструментов |
MCP-сервер (сломанная версия) |
| Неверное описание / тайм-аут / пустой ответ |
30-секундное демо |
| Последовательность для записи |
Сравнение результатов эксперимента ② |
| Сравнение NO MCP / GOOD / BROKEN |
Сравнение паттернов эксперимента ③ |
| Single / Planner+Executor / Parallel |
Материалы презентации (spec) |
| Вставьте в другой ИИ для создания PPT |
Результаты |
| Автоматически созданные таблицы, CSV, логи |
⚙️ Установка
Python 3.10+ (тестовая среда 3.13).
python -m venv .venv
source .venv/bin/activate
pip install -e .▶️ Запуск
# 1) MCP 서버 검증 (서버는 stdio라 호스트가 붙어야 의미 있음 — Ctrl+C로 종료)
python -m mcp_stock.server
# 2) 30초 동작 데모 (실제로 돌려서 녹화)
python -m experiments.exp1_demo
# 또는 ./demo/record_demo.sh
# 3) 실험 ② 성공/실패 비교 → results/exp2_* 자동 생성
python -m experiments.exp2_quality
# 4) 실험 ③ Orchestration 토큰 비교 → results/exp3_* 자동 생성
python -m experiments.exp3_orchestration🎥 Запись 30-секундного демо
Действия по тайм-кодам описаны в demo/demo_script.md.
Самый простой путь:
./demo/record_demo.sh # QuickTime/Cmd+Shift+5 로 화면 녹화하면서 실행
./demo/record_demo.sh --asciinema # 텍스트 캡처 (asciinema 필요)🧪 Эксперимент ① — MCP-сервер (6 типов инструментов)
Инструмент | Ввод | Вывод |
| 'today' / YYYY-MM-DD |
|
| KOSPI/KOSDAQ, 1..50 | Топ N акций |
| Код или название на корейском | close / changePct / volume / per / pbr |
| Ключевое слово или название акции | Заголовок + |
| Код или название на корейском | per / pbr / eps / bps / roe |
| KOSPI/KOSDAQ | scoreBreakdown + обоснование |
Данные: Парсинг Naver Finance как единственный источник (src/mcp_stock/sources/naver.py). Бесплатно, ключи не нужны.
Индексы: JSON
polling.finance.naver.com/api/realtime/domestic/index/{KOSPI|KOSDAQ}Лидеры роста: HTML
finance.naver.com/sise/sise_rise.naver?sosok={0|1}Детали акции / PER·EPS·PBR·дивиденды:
finance.naver.com/item/main.naver?code=...(стабильные теги emphasis, такие какid="_per")Новости по акциям:
finance.naver.com/item/news_news.naver?code=...Безопасная работа через автоматический fallback-снимок при нерабочих днях или изменениях на страницах Naver.
🧪 Эксперимент ② — Сравнение качества результатов (успех/провал инструментов)
exp2_quality.py запускает один и тот же вопрос пользователя в трех средах и автоматически создает таблицы и логи ошибок.
(a) NO MCP — 0 инструментов. LLM отвечает только на основе обучающих данных → галлюцинации, отсутствие доказательств.
(b) GOOD MCP — Нормальный самописный сервер. 12 вызовов инструментов, цитирование 4 ключевых слов с позитивными новостями.
(c) BROKEN MCP — Согласно определению
server_broken.py:Описание
get_top_gainersошибочно указано как "лидеры падения" → модель выбирает неверноget_recent_newsвызываетTimeoutErrorпослеtime.sleep(5)get_fundamentalsвозвращает пустой dict
Результаты:
results/exp2_quality_table.md— Сравнительная таблицаresults/exp2_failure_logs.md— Трейс неудачных вызовов + текст ответаresults/exp2_summary.json— Исходная статистика
🧪 Эксперимент ③ — 3 паттерна оркестрации
Паттерн | Описание | Характеристики токенов | Характеристики времени отклика |
Single | Накопление результатов инструментов в одном цикле | Входные токены ↑↑ | Самый медленный |
Planner + Executor | Планировщик составляет последовательность, исполнитель только резюмирует | Входные токены ↓ | Средний |
Parallel sub-agents | Параллельный запуск sub-агентов KOSPI / KOSDAQ / NEWS | Входные токены ↓↓ | Самый быстрый |
Результаты:
results/exp3_benchmark.csv— Широкий CSV для построения гистограммresults/exp3_pattern_table.md— Таблица + рефлексияresults/exp3_summary.json— Полный трейс по паттернам
🤖 Интеграция с LLM — Hermes / другие хосты
Этот репозиторий создан так, чтобы токены и трейсы можно было получить через детерминированное моделирование даже без API-ключа LLM. Для подключения к реальным Hermes / Claude Desktop / Cursor:
1) Использование в качестве хоста Hermes (запуск экспериментов ②③ на реальной LLM)
Достаточно заполнить _callHermes() в src/experiments/runner/hermes_runner.py.
# TODO(user): replace this body with the real Hermes call.
import httpx
response = httpx.post(self.endpoint, headers=..., json=...)
return response.json()После настройки переменных окружения HERMES_ENDPOINT, HERMES_API_KEY замените экземпляр AgentRunner на HermesRunner().
2) Использование только инструментов в Claude Desktop / Cursor
Добавьте в claude_desktop_config.json для Claude Desktop или в настройки MCP для Cursor:
{
"mcpServers": {
"kookmin-stock": {
"command": "python",
"args": ["-m", "mcp_stock.server"],
"cwd": "/path/to/Kookmin-University-MCP",
"env": { "PYTHONPATH": "/path/to/Kookmin-University-MCP/src" }
}
}
}📑 Создание PPT
Просто вставьте slides/slides.md в другой ИИ. Пример промпта:
Следующий markdown — это спецификация 12 слайдов для 5-минутной презентации. Создай слайды PowerPoint по заголовкам
# Slide N. Блоки### Visualпо возможности представь в виде диаграмм mermaid или таблиц, а### Speaker Notesпомести в область заметок к слайду.
📤 Порядок сдачи
Обновите результаты с помощью
python -m experiments.exp2_quality && python -m experiments.exp3_orchestrationЗапишите 30-секундное демо через
./demo/record_demo.sh→demo/demo.movСделайте GitHub push (укажите URL репозитория в README и на 6-м слайде)
Отправьте URL GitHub + слайды + видео демо на email
kts123@kookmin.ac.kr(дедлайн 14.05 23:59:59)
📁 Дерево каталогов
.
├── README.md
├── pyproject.toml / requirements.txt
├── demo/
│ ├── demo_script.md
│ └── record_demo.sh
├── results/ # 자동 생성
├── slides/slides.md
└── src/
├── mcp_stock/
│ ├── server.py
│ ├── server_broken.py
│ ├── data/ticker_map.py
│ ├── sources/naver.py # 네이버 금융 크롤러 (단일 데이터 소스)
│ └── tools/{market, quote, news, fundamentals, recommend}.py
├── experiments/
│ ├── exp1_demo.py
│ ├── exp2_quality.py
│ ├── exp3_orchestration.py
│ └── runner/{agent_base, mock_runner, hermes_runner}.py
└── utils/{logger, token_counter}.py🛟 Устранение неполадок
Симптом | Причина | Решение |
| Акции нет на странице Naver или изменилась структура | Используется автоматический fallback-снимок — работает нормально |
| Сеть офлайн | Все инструменты безопасно работают через fallback-снимок |
Искажение корейского текста | Шрифт терминала | Рекомендуются D2 Coding / Pretendard / SF Mono |
Вызов в выходной/нерабочий день | Нерабочий день | API опроса возвращает цену закрытия последнего дня |
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/JooSeunghyeon/Kookmin-University-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server