AI 시그널 데이터용 MCP 서버 구축 및 이를 무력화시킨 Cloudflare 403 에러
요약
AI 시그널 데이터를 수집하고 에이전트가 활용할 수 있도록 MCP(Micro-Controller Program) 서버를 구축하는 방법을 소개합니다. 이 과정에서 일반 API 호출로는 CDN의 User-Agent 필터링에 막히는 403 오류 문제를 발견했습니다. 이를 해결하기 위해 사용자 정의 User-Agent와 상세한 오류 메시지를 포함하도록 개선했습니다.
핵심 포인트
- MCP 서버를 통해 AI 시그널 데이터를 구조화하여 에이전트가 활용 가능하게 함.
- CDN의 User-Agent 필터링으로 인한 403 오류는 일반 API 호출로는 우회하기 어려움.
- 사용자 정의 User-Agent와 상세한 오류 메시지를 포함하는 것이 핵심 해결책임.
저는 코딩 에이전트가 채팅창에 링크를 붙여넣지 않고도 '오늘 AI 분야에서 무슨 일이 일어나고 있는지?'라는 질문에 답하도록 만들고 싶었습니다. 그래서 제가 수집하는 AI 시그널 데이터를 위한 작은 MCP 서버를 작성했습니다. 이 과정에서 시간을 절약할 수 있는 두 가지 점을 발견했습니다.
1. MCP 서버 (단일 파일, stdlib만 사용, API 키 불필요)
읽기 전용인 다섯 가지 도구들입니다:
| Tool | Returns |
|---|---|
daily_signals | 오늘의 시그널 — 출처별(GitHub, Hugging Face, YouTube, 실리콘 밸리 뉴스) 하나씩, 각각 원본 링크 포함 |
| ... | |
모든 순위가 매겨진 행에는 에이전트가 지어내지 않고 숫자를 인용할 수 있도록 citation 문자열이 포함됩니다. 번호를 도출할 수 없는 행은 이유와 함께 unranked로 반환됩니다 — 저는 그럴듯해 보이는 추측보다는 '순위 없음'을 반환하는 편이 낫다고 생각합니다. |
설치는 하나의 파일과 설정 블록으로 이루어집니다:
{
"mcpServers": {
"signals": {
...
Repo: https://github.com/jiangzhangcc-glitch/signals-api-mcp (MIT, Python 3.9+, 의존성 없음)
2. 함정: 서버가 결코 보지 못하는 403 에러
제 첫 번째 버전은 일반 urllib.request.urlopen(url)로 API를 호출했습니다. 모든 도구가 HTTP 403으로 실패했습니다. API 자체는 문제가 없었습니다 — 그 앞에 있는 CDN이 요청이 원본에 도달하기 전에 순수한 Python-urllib/… User-Agent (그리고 빈 User-Agent)을 거부했기 때문입니다.
문제는 이렇습니다: 요청이 엣지(edge)에서 차단되었기 때문에, 원본 서버에는 그 기록이 없습니다. 만약 사용자가 자신의 접근 로그만 본다면
서버는 이제 모든 요청에 SignalsAPI-MCP/1.0 (+https://…)를 전송하며, 403 오류의 경우 단순 상태 코드 대신 발생 가능한 원인을 명시하는 오류 메시지를 반환합니다.
데이터 출처
저는 공개 소스(GitHub 트렌딩, Hugging Face, YouTube, arXiv, 아레나 보드, 기술 뉴스, 하드웨어/칩)에서 데이터를 수집하고, 중복을 제거하며, 이를 기록하는 작은 일일 파이프라인을 운영합니다. 가장 최신 일일 변화량은 공개되어 있으며, 기계가 읽을 수 있는 데이터셋도 함께 제공됩니다:
- 오늘의 시그널: https://data.jiangzhang.ca/signals4/api/today.json
- 일일 데이터셋 미러: https://github.com/jiangzhangcc-glitch/ai-signals-daily (CC BY 4.0)
- 에이전트를 위한 사이트 요약: https://data.jiangzhang.ca/llms.txt
무료 등급은 네 가지 핵심 소스에서 하루 한 번의 업데이트를 제공합니다. 만약 여덟 개의 소스가 필요하고, 하루에 네 번 업데이트가 필요하며, 전체 기록을 API로 사용해야 한다면 유료 피드를 이용할 수 있습니다 — 이는 레포지토리 README에서 연결됩니다. MCP 서버의 모든 것은 무료로 유지됩니다.
만약 이 데이터를 활용하여 무언가를 구축하신다면, 무엇이 작동하지 않는지 진심으로 알고 싶습니다 — 위 403 오류는 제가 사용자로서 제 자신의 서버를 사용했기 때문에야 비로소 드러난 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기