Skip to main content
Glama

MCP News Collector

by whdghk1907
README.mdβ€’7.1 kB
# πŸ“° MCP News Collector > **ν•œκ΅­ μ£Όμ‹μ‹œμž₯ λ‰΄μŠ€ μ‹€μ‹œκ°„ μˆ˜μ§‘ 및 뢄석을 μœ„ν•œ MCP μ„œλ²„** [![Python](https://img.shields.io/badge/Python-3.11+-blue.svg)](https://python.org) [![FastAPI](https://img.shields.io/badge/FastAPI-0.104+-green.svg)](https://fastapi.tiangolo.com) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Tests](https://img.shields.io/badge/Tests-Passing-brightgreen.svg)](tests/) ## 🎯 ν”„λ‘œμ νŠΈ κ°œμš” MCP News CollectorλŠ” ν•œκ΅­ μ£Όμ‹μ‹œμž₯ κ΄€λ ¨ λ‰΄μŠ€λ₯Ό μ‹€μ‹œκ°„μœΌλ‘œ μˆ˜μ§‘, λΆ„μ„ν•˜μ—¬ 투자 μΈμ‚¬μ΄νŠΈλ₯Ό μ œκ³΅ν•˜λŠ” MCP(Model Context Protocol) μ„œλ²„μž…λ‹ˆλ‹€. ### ✨ μ£Όμš” κΈ°λŠ₯ - πŸ”„ **μ‹€μ‹œκ°„ λ‰΄μŠ€ μˆ˜μ§‘**: 넀이버, λ‹€μŒ, RSS ν”Όλ“œ λ“± λ‹€μ–‘ν•œ μ†ŒμŠ€ - 🧠 **AI 기반 뢄석**: 감정 뢄석, μ‹œμž₯ 영ν–₯도 예츑, 루머 탐지 - πŸ“Š **μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§**: WebSocket 기반 μ‹€μ‹œκ°„ 데이터 슀트리밍 - 🌐 **REST API**: FastAPI 기반 RESTful μ—”λ“œν¬μΈνŠΈ - πŸ”§ **MCP 톡합**: Claude λ“± AI μ–΄μ‹œμŠ€ν„΄νŠΈμ™€ μ›ν™œν•œ 연동 ### πŸ—οΈ μ•„ν‚€ν…μ²˜ ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Data Sources β”‚ β”‚ MCP Server β”‚ β”‚ AI Assistant β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ β€’ 넀이버 λ‰΄μŠ€ │────▢│ β€’ μˆ˜μ§‘ μ—”μ§„ │◀───│ β€’ Claude β”‚ β”‚ β€’ λ‹€μŒ λ‰΄μŠ€ β”‚ β”‚ β€’ 뢄석 μ—”μ§„ β”‚ β”‚ β€’ ChatGPT β”‚ β”‚ β€’ RSS ν”Όλ“œ β”‚ β”‚ β€’ REST API β”‚ β”‚ β€’ 기타 β”‚ β”‚ β€’ λΉ…μΉ΄μΈμ¦ˆ β”‚ β”‚ β€’ WebSocket β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` ## πŸš€ λΉ λ₯Έ μ‹œμž‘ ### 사전 μš”κ΅¬μ‚¬ν•­ - Python 3.11+ - PostgreSQL 13+ - Redis 6+ ### μ„€μΉ˜ ```bash # 1. μ €μž₯μ†Œ 클둠 git clone https://github.com/YOUR_USERNAME/mcp-news-collector.git cd mcp-news-collector # 2. κ°€μƒν™˜κ²½ 생성 및 ν™œμ„±ν™” python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # 3. μ˜μ‘΄μ„± μ„€μΉ˜ pip install -e . # 4. ν™˜κ²½λ³€μˆ˜ μ„€μ • cp .env.example .env # .env νŒŒμΌμ„ νŽΈμ§‘ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€ 및 API μ„€μ • # 5. λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ alembic upgrade head # 6. μ„œλ²„ μ‹€ν–‰ python -m src.server.main ``` ### MCP ν΄λΌμ΄μ–ΈνŠΈ μ—°κ²° ```python from mcp import Client # MCP μ„œλ²„ μ—°κ²° client = Client("stdio", ["python", "-m", "src.server.main"]) # λ‰΄μŠ€ μˆ˜μ§‘ result = await client.call_tool("get_recent_news", { "keyword": "μ‚Όμ„±μ „μž", "limit": 10 }) ``` ## πŸ“– API λ¬Έμ„œ ### MCP Tools | Tool | μ„€λͺ… | νŒŒλΌλ―Έν„° | |------|------|----------| | `get_recent_news` | 졜근 λ‰΄μŠ€ 쑰회 | keyword, source, limit, hours | | `analyze_news_sentiment` | λ‰΄μŠ€ 감정 뢄석 | news_id, text, detail_level | | `analyze_news_impact` | μ‹œμž₯ 영ν–₯도 뢄석 | news_id, company, timeframe | | `detect_market_rumors` | 루머 탐지 | news_id, threshold | | `monitor_news_stream` | μ‹€μ‹œκ°„ λ‰΄μŠ€ λͺ¨λ‹ˆν„°λ§ | topics, filters | ### REST API API λ¬Έμ„œλŠ” μ„œλ²„ μ‹€ν–‰ ν›„ λ‹€μŒ URLμ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€: - Swagger UI: `http://localhost:8000/api/docs` - ReDoc: `http://localhost:8000/api/redoc` #### μ£Όμš” μ—”λ“œν¬μΈνŠΈ ```bash # λ‰΄μŠ€ 쑰회 GET /api/v1/news?query=μ‚Όμ„±μ „μž&limit=10 # 감정 뢄석 POST /api/v1/analysis/sentiment { "news_ids": ["news_1", "news_2"], "options": {"include_confidence": true} } # μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§ μƒνƒœ GET /api/v1/monitoring/status ``` ## πŸ§ͺ ν…ŒμŠ€νŠΈ ```bash # 전체 ν…ŒμŠ€νŠΈ μ‹€ν–‰ pytest # νŠΉμ • λͺ¨λ“ˆ ν…ŒμŠ€νŠΈ pytest tests/unit/test_sentiment_analyzer.py # 컀버리지 확인 pytest --cov=src --cov-report=html ``` ### ν…ŒμŠ€νŠΈ ν˜„ν™© - **전체 ν…ŒμŠ€νŠΈ**: 169개 톡과 - **컀버리지**: - 감정 뢄석기: 92% - μ‹œμž₯ 영ν–₯ 뢄석기: 85% - μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§: 76% - 루머 탐지: 89% - λ‰΄μŠ€ μš”μ•½: 90% ## πŸ“Š 개발 ν˜„ν™© ### Phase 별 μ§„ν–‰ 상황 - βœ… **Phase 1**: 기초 인프라 ꡬ좕 (μ™„λ£Œ) - βœ… **Phase 2**: 핡심 μˆ˜μ§‘ μ‹œμŠ€ν…œ (μ™„λ£Œ) - βœ… **Phase 3**: 뢄석 μ—”μ§„ κ΅¬ν˜„ (μ™„λ£Œ) - πŸ”„ **Phase 4**: API 및 톡합 μ‹œμŠ€ν…œ (75% μ™„λ£Œ) - ⏳ **Phase 5**: μ΅œμ ν™” 및 배포 (μ˜ˆμ •) μžμ„Έν•œ 개발 κ³„νšμ€ [detailed-development-plan.md](detailed-development-plan.md)λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. ## πŸ—οΈ ν”„λ‘œμ νŠΈ ꡬ쑰 ``` mcp-news-collector/ β”œβ”€β”€ src/ # 메인 μ†ŒμŠ€ μ½”λ“œ β”‚ β”œβ”€β”€ analysis/ # 뢄석 μ—”μ§„ (감정, 영ν–₯도, 루머 탐지 λ“±) β”‚ β”œβ”€β”€ collectors/ # λ‰΄μŠ€ μˆ˜μ§‘κΈ° (넀이버, λ‹€μŒ, RSS) β”‚ β”œβ”€β”€ monitoring/ # μ‹€μ‹œκ°„ λͺ¨λ‹ˆν„°λ§ μ‹œμŠ€ν…œ β”‚ β”œβ”€β”€ server/ # MCP μ„œλ²„ 및 REST API β”‚ └── utils/ # 곡톡 μœ ν‹Έλ¦¬ν‹° β”œβ”€β”€ tests/ # ν…ŒμŠ€νŠΈ μ½”λ“œ β”‚ β”œβ”€β”€ unit/ # λ‹¨μœ„ ν…ŒμŠ€νŠΈ β”‚ └── integration/ # 톡합 ν…ŒμŠ€νŠΈ β”œβ”€β”€ docs/ # λ¬Έμ„œ β”œβ”€β”€ configs/ # μ„€μ • 파일 └── scripts/ # μœ ν‹Έλ¦¬ν‹° 슀크립트 ``` ## πŸ”§ 개발 도ꡬ ### μ½”λ“œ ν’ˆμ§ˆ ```bash # μ½”λ“œ ν¬λ§·νŒ… black src/ tests/ # νƒ€μž… 체킹 mypy src/ # λ¦°νŒ… pylint src/ # λ³΄μ•ˆ μŠ€μΊ” bandit -r src/ ``` ### TDD 개발 ν”„λ‘œμ„ΈμŠ€ 이 ν”„λ‘œμ νŠΈλŠ” **μ—„κ²©ν•œ TDD(Test-Driven Development)** 방법둠을 λ”°λ¦…λ‹ˆλ‹€: 1. **Red**: μ‹€νŒ¨ν•˜λŠ” ν…ŒμŠ€νŠΈ μž‘μ„± 2. **Green**: ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όμ‹œν‚€λŠ” μ΅œμ†Œν•œμ˜ μ½”λ“œ μž‘μ„± 3. **Refactor**: μ½”λ“œ κ°œμ„  및 μ΅œμ ν™” ## 🀝 κΈ°μ—¬ν•˜κΈ° 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ### 개발 κ°€μ΄λ“œλΌμΈ - λͺ¨λ“  μƒˆλ‘œμš΄ κΈ°λŠ₯은 ν…ŒμŠ€νŠΈμ™€ ν•¨κ»˜ 개발 - μ½”λ“œ 컀버리지 80% 이상 μœ μ§€ - νƒ€μž… 힌트 μ‚¬μš© ν•„μˆ˜ - λ¬Έμ„œν™” μ² μ €νžˆ ## πŸ“„ λΌμ΄μ„ μŠ€ 이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€ ν•˜μ— λ°°ν¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ [LICENSE](LICENSE) νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”. ## πŸ“ž 문의 - **개발자**: [Your Name](mailto:your.email@example.com) - **이슈 트래컀**: [GitHub Issues](https://github.com/YOUR_USERNAME/mcp-news-collector/issues) - **ν”„λ‘œμ νŠΈ μœ„ν‚€**: [GitHub Wiki](https://github.com/YOUR_USERNAME/mcp-news-collector/wiki) ## πŸ™ κ°μ‚¬μ˜ 말 - [MCP (Model Context Protocol)](https://github.com/anthropics/mcp) - Anthropic - [FastAPI](https://fastapi.tiangolo.com/) - SebastiΓ‘n Ramirez - [KoBERT](https://github.com/SKTBrain/KoBERT) - SKT Brain --- ⭐ 이 ν”„λ‘œμ νŠΈκ°€ 도움이 λ˜μ…¨λ‹€λ©΄ Starλ₯Ό λˆŒλŸ¬μ£Όμ„Έμš”!

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/whdghk1907/mcp-news-collector'

If you have feedback or need assistance with the MCP directory API, please join our Discord server