Skip to main content
Glama
poqopo

crypto_market_html_mcp

by poqopo
README.md
# Crypto Market HTML Agent

완성된 리서치 JSON과 시장 금액을 결합해 독립 실행 가능한 인터랙티브 HTML을 만드는 MCP 서버입니다.

등록용 이름: `crypto_market_html_mcp`. 라이선스: MIT.

## 시작하기

Python 3.11 이상과 [uv](https://docs.astral.sh/uv/)가 필요합니다.

```sh
git clone https://github.com/poqopo/crypto-market-html.git
cd crypto-market-html
uv sync --python 3.12
uv run python agent.py
```

서버는 stdio MCP를 사용하며 stdout은 프로토콜 전용입니다.

MCP 클라이언트 설정 예:

```json
{
  "mcpServers": {
    "crypto_market_html": {
      "command": "uv",
      "args": ["--directory", "/ABSOLUTE/PATH/crypto-market-html", "run", "python", "agent.py"]
    }
  }
}
```

## 도구와 디자인

| Tool | 역할 |
| --- | --- |
| fetch_market_snapshot | CoinGecko의 USD 가격·시가총액·24h 거래량·등락률·BTC/ETH 도미넌스 수집 |
| build_crypto_market_html | 본문 근거와 시장 데이터를 연결해 단일 HTML 생성 |

입력 `news_digest`는 [Crypto News Research Agent](https://github.com/poqopo/crypto-news-research)의 `analyze_crypto_insights` 결과입니다. 이 에이전트는 새로운 기사 해석을 생성하지 않습니다.

화면 기능:

- BTC·비BTC·ETH 집합 다이어그램 클릭과 코인 필터
- 관측값과 분리된 도미넌스 가정 슬라이더·복원
- 본문·인사이트 검색과 카드/목록 전환
- 근거 문단 강조·원문 위치 링크·기사 상세 패널
- 리서치 JSON 내보내기

BTC와 비BTC의 교집합은 없고 ETH는 비BTC의 부분집합입니다. 원 크기는 면적 비례가 아닌 집합 도식입니다. 슬라이더는 실제 시세나 상단의 관측 비중을 바꾸지 않습니다.

## HTML 데모

```sh
uv run python demo.py
```

`output/report.html`을 브라우저에서 열면 됩니다. 데모 리서치·시세는 2026-09-19의 가상 데이터이며 실제 시장 보고서가 아닙니다. 인사이트는 규칙 기반 초안이라는 표시를 보존합니다.

실시간 시세 모드는 `mode=live`(기본)입니다. 필요할 때 COINGECKO_DEMO_API_KEY를 환경변수로 주입합니다. 연결 실패 시 데모 값으로 자동 대체하지 않습니다.

## Contents

AGENTS.md, HTML 구성 스킬, 보고서 프롬프트, 입력 계약, templates/report.html과 가상 데모 데이터가 포함되어 있습니다.

MCP Prompt: `market_html_brief(date)`. MCP Resource: `market://demo-snapshot`.

## 테스트

```sh
uv run python -m unittest discover -s tests -v
```

실제 MCP 도구 호출로 시장 스냅샷과 기사 근거가 연결된 HTML을 생성합니다.

TDQS

B3.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one fetches market data, the other builds HTML from it. There is no ambiguity or overlap between fetching and rendering.

Naming Consistency5/5

Both tool names follow a consistent verb_noun snake_case pattern (fetch_market_snapshot, build_crypto_market_html), making the naming predictable and readable.

Tool Count3/5

With only 2 tools, the server is on the thin side, but the tools cover the core pipeline of fetching data and generating HTML. The count is borderline for the scope, not excessive.

Completeness4/5

The domain is narrowly focused on generating crypto market HTML. The two tools provide a complete workflow from data retrieval to final output. Minor gaps like data refresh scheduling or multiple template variants exist, but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessNo issues