This project is a Model Context Protocol (MCP) server that fetches articles from GeekNews. It is implemented in Python, and performs web scraping using BeautifulSoup.
이 프로젝트는 GeekNews에서 아티클을 가져오는 Model Context Protocol(MCP) 서버입니다. Python으로 구현되었으며, BeautifulSoup을 사용하여 웹 스크래핑을 수행합니다. 서버 부하를 줄이기 위해 하루에 한 번 자동으로 데이터를 파싱하고 캐시에 저장하는 기능을 제공합니다.
![]() | ![]() |
---|---|
![]() | ![]() |
get_articles
도구: GeekNews에서 아티클을 가져오는 기능
get_weekly_news
도구: GeekNews에서 주간 뉴스를 가져오는 기능
Smithery를 이용한 설치
MCP 설정 파일에 서버 정보를 추가
{ "mcpServers": { "geeknews-mcp-server": { "command": "npx", "args": [ "-y", "@smithery/cli@latest", "run", "@the0807/geeknews-mcp-server", "--key", "smithery에서 발급 받은 키" ] } } }
Git Clone
git clone https://github.com/the0807/GeekNews-MCP-Server cd GeekNews-MCP-Server
uv로 환경 세팅
uv sync
가상환경 실행
uv venv source .venv/bin/activate
MCP Inspector로 서버 테스트
uv run mcp mcp dev main.py # 터미널에 나오는 URL(MCP Inspector)로 접속하여 서버 테스트
src/models.py
: 아티클 정보를 저장하는 데이터 클래스 정의src/parser.py
: GeekNews 웹사이트의 HTML을 파싱하여 아티클 정보를 추출src/client.py
: GeekNews 웹사이트에서 데이터를 가져오는 HTTP 클라이언트src/config.py
: 설정과 상수 정의src/cache.py
: 캐시 관리 기능 제공src/scheduler.py
: 주기적인 데이터 갱신 스케줄러src/server.py
: MCP 서버 구현main.py
: 서버 실행 진입점[!Note]
- 이 서버는 GeekNews 웹사이트의 HTML 구조에 의존합니다. 웹사이트 구조가 변경되면 파싱 로직을 업데이트해야 할 수 있습니다.
- 캐시 데이터는 사용자의 홈 디렉토리 아래
.cache/geeknews-mcp
폴더에 저장됩니다.
Discover shared experiences
Shared threads will appear here, showcasing real-world applications and insights from the community. Check back soon for updates!