
rfc-ai-tooling은 AI 에이전트가 IETF RFC 문서를 읽고 폐기된 규격을 확인하도록 돕는 스킬과 MCP 서버를 제공한다. 제작자 측정에서 특정 절만 읽을 때 전체 RFC를 읽는 것보다 토큰 사용량의 중앙값이 41배 줄었다.
두 도구는 표준 라이브러리만 사용하는 동일한 Python 코어를 바탕으로 문서를 검색하고 읽으며 폐기 여부를 표시한다. RFC 본문을 패키지에 넣지 않고 필요할 때 RFC Editor에서 가져온다.
- 모든 검색 결과에 대체된 RFC인지 표시한다. 예를 들어
!! OBSOLETED BY: RFC 7230, 7231, ...배너를 보여준다. - RFC의 절 제목과 줄 번호를 나열한 뒤 질문에 필요한 절만 읽을 수 있다.
- 기본적으로 제목을 검색한다. 로컬 미러를 동기화하면 약 9,800개 RFC의 전체 텍스트도 검색할 수 있다.
- 페이지 머리말과 꼬리말, 폼 피드를 제거해 텍스트를 정리한다.
- 이름을 지정한 절이 아닌 1,500줄 초과 읽기는 거부하고, 문서 크기와 범위를 좁히는 방법을 알린다.
토큰 절감 수치는 다음 여섯 RFC에서 전체 문서와 해당 절을 읽을 때의 추정 토큰 수를 비교한 결과다. 값은 rfc.py 0.5.0 출력의 바이트 수를 4로 나눠 추정했다.
| RFC와 절 | 전체 RFC | 한 절 |
|---|---|---|
| RFC 9110 HTTP Semantics, §15.5.5 404 Not Found | 125.7k | 177 |
| RFC 9000 QUIC, §19.3 ACK Frames | 100.9k | 1,742 |
| RFC 8446 TLS 1.3, §4.1.2 Client Hello | 78.1k | 1,865 |
| RFC 5321 SMTP, §4.2 SMTP Replies | 52.8k | 4,003 |
| RFC 6749 OAuth 2.0, §5.2 Error Response | 38.0k | 935 |
| RFC 9111 HTTP Caching, §4.2 Freshness | 21.1k | 2,531 |
제작자가 제시한 원자료는 assets/charts/context_sizes.json에 있다.
프로젝트가 해결하려는 문제는 에이전트가 더 이상 유효하지 않은 규격을 자신 있게 인용하는 것이다. 프로젝트 설명에 따르면 RFC 2616은 2014년부터 폐기됐지만, 많은 모델이 HTTP에 관해 답할 때 여전히 가장 먼저 참고한다. 이 도구는 RFC 색인의 폐기 정보를 모든 결과에 붙여 에이전트가 인용하기 전에 대체 규격을 확인하도록 한다.
rfc-ai-tooling은 유지보수가 중단된 mcp-server-ietf를 대체한다. 프로젝트는 두 도구의 차이를 다음과 같이 설명한다.
| 기능 | rfc-ai-tooling | mcp-server-ietf |
|---|---|---|
| RFC 가져오기 | 모델이 rfc-editor.org에서 가져옴 | |
| 폐기된 RFC 표시 | 모든 결과에 표시 | 아니요. 헤더를 읽을 때만 표시 |
| 1000 미만 RFC(IP, TCP 등) | 지원 | 아니요. 색인 파서가 0으로 채워진 번호를 요구 |
| 전체 제목 | 지원 | 첫 번째 마침표에서 잘라 RFC 2616을 "HTTP/1"로 표시 |
| 새 RFC | 색인을 갱신 | 색인을 한 번 다운로드 |
| 한 절 읽기 | 번호나 제목으로 지정 | 줄 범위만 지정 |
| 전체 텍스트 검색 | 다운로드한 색인으로 절별 순위 검색 | 제목만 검색 |
| 설치 | 설정 한 줄 또는 스킬은 설정 불필요 | 저장소를 복제하고 pip install |
설치와 이용 조건
에이전트가 도구를 실행하는 환경에 따라 스킬이나 MCP 서버를 선택한다. Claude Code, Codex CLI, OpenClaw, Cursor, Zed 등 로컬 명령을 실행할 수 있는 클라이언트에는 스킬을 쓸 수 있다. 스킬은 고정된 도구 세 개 대신 셸 전체와 RFC 자료에 대한 rg 검색을 제공한다. 셸이 없는 Claude Desktop에는 로컬에서 MCP 서버를 실행하는 방식을 쓴다. claude.ai 웹, Cowork 등 클라우드 세션에서는 사용자가 호스팅하는 HTTP MCP 서버가 필요하다. 공개 서버는 없으며 만들 계획도 없다고 프로젝트는 밝힌다.
스킬은 skills로 저장소에서 설치한다. pip install은 필요하지 않다.
npx skills add shbernal/rfc-ai-tooling
MCP 서버는 PyPI의 mcp-server-rfc를 사용한다. 처음 실행할 때 uvx가 패키지를 가져온다. 클라이언트의 MCP 설정에 다음 내용을 추가한다.
{
"mcpServers": {
"rfc": {
"command": "uvx",
"args": ["mcp-server-rfc"]
}
}
}
프로젝트 측은 Linux의 Claude Desktop에서 처음부터 끝까지 시험했다고 밝혔다. macOS와 Windows에서도 동작할 것으로 보지만 확인하지 않았다고 덧붙였다. docs/desktop-verification.md는 Claude Desktop이 실제로 도구를 호출했는지 확인하는 방법을 설명한다.
클라우드 세션에서 쓰려면 같은 실행 파일을 HTTP 모드로 호스팅할 수 있다.
mcp-server-rfc --transport http --host 0.0.0.0 --port 8080
mcp/Dockerfile과 mcp/fly.toml을 이용해 컨테이너로 배포할 수도 있다.
docker build -t mcp-server-rfc mcp/ && docker run --rm -p 8080:8080 mcp-server-rfc
배포한 뒤 https://<your-app>/mcp를 claude.ai의 사용자 지정 커넥터로 추가한다. 이 기능을 쓰려면 Pro, Max, Team 또는 Enterprise 요금제가 필요하다.
서버에는 인증이 없다. 자원봉사자가 운영하는 미러 앞에 공개 서버를 두면 누구나 사용할 수 있는 오픈 프록시가 되므로, 인증을 추가하거나 URL을 비공개로 유지해야 한다. 전체 텍스트 검색을 하려면 서버에서 절 색인을 준비해야 한다. 서버에서 sync --index를 실행하지 않으면 검색이 오류를 반환한다. 나머지 기능에는 2MB RFC 색인만 필요하다.
빠르게 사용하려면 스킬이나 MCP 서버를 설치하고, 에이전트에게 “캐시된 응답을 얼마나 오래 유지할 수 있는지 HTTP 규격에서 찾아줘”처럼 질문한다. 답변이 RFC 2616이 아니라 RFC 9111 §4.2처럼 현재 규격의 절을 인용하는지 확인한다. 에이전트는 직접 실행할 때와 같은 순서로 검색하고, 폐기 여부를 확인한 뒤, 절을 나열하고 하나를 읽는다.
전체 텍스트 검색과 데이터 내려받기
제목 검색은 별도 설정 없이 가능하다. 모든 RFC 본문을 검색하려면 절 색인을 한 번 내려받는다. 스킬은 설치 경로가 <skills-dir>일 때 다음 명령을 실행한다. 예를 들어 경로는 ~/.claude/skills일 수 있다.
python3 <skills-dir>/rfc-lookup/scripts/rfc.py sync --index
MCP 서버에서는 다음 명령을 쓴다.
uvx mcp-server-rfc sync --index
두 도구는 같은 디렉터리에 색인을 저장하므로 한 번 내려받으면 양쪽에서 쓸 수 있다. 색인은 모든 RFC를 압축해 담은 SQLite 파일이며, 각 절을 대상으로 FTS5 검색 색인을 둔다. 검색 결과는 BM25 순위에 따라 절을 제시하고 다음에 읽을 위치를 알려준다.
$ rfc search "how long can a cache serve a stale response" --fulltext RFC 9111 — HTTP Caching [INTERNET STANDARD] §4.2.4 Serving Stale Responses (line 784, 17 lines) 790: A cache MUST NOT generate a stale response if it is prohibited by an
이후 문서 읽기도 색인에서 처리하므로 RFC Editor에서 다시 가져오지 않는다. 검색 평가 자료에 따르면, 평가에서 제외해 둔 질문의 절반이 넘는 경우 답이 있는 절을 상위 10개 결과 안에서 찾았다. 같은 평가에서 RFC 자료 전체를 대상으로 한 ripgrep 검색은 해당 절을 찾지 못했다. 자세한 내용은 검색 평가에 있다.
색인이 없을 때 --fulltext는 동기화한 RFC 미러의 일반 파일을 대상으로 rg 또는 grep을 실행한다. --regex에도 로컬 미러가 필요하다.
uvx mcp-server-rfc sync
sync --index는 프로젝트의 GitHub 릴리스에서 내려받는다. 다운로드 크기는 약 270MB, 디스크 사용량은 360MB이며, 게시된 SHA-256 값과 대조한다. sync는 RFC Editor의 공개 rsync 미러에서 내려받는다. 기본 전송 속도 제한은 --bwlimit으로 초당 2MB이며, 다운로드 크기는 512MB로 약 5분이 걸리고 디스크에서도 512MB를 차지한다. 두 동기화 작업 모두 자동으로 시작하지 않으며, 스킬은 에이전트에게 사용자 요청 없이 실행하지 말라고 지시한다. 동기화한 미러에서 rfc index build를 실행하면 약 2분 30초 만에 색인을 만든다.
구성 방식
프로젝트의 유일한 구현은 core/rfc.py다. 스킬과 MCP 서버는 이를 각각 동일한 사본으로 포함하며, 사본 간 차이가 생기면 CI가 실패한다. 코어는 RFC Editor 색인을 파싱해 제목과 상태, 대체 관계를 확인하고 HTTPS로 문서를 가져와 캐시한다. 절 색인이 있으면 그 파일에서 읽고 SQLite FTS5로 절을 순위화한다. 동기화한 미러만 있으면 디스크에서 읽고 rg나 grep으로 검색한다.
추가 자료로는 스킬의 명령과 에이전트 사용 지침을 담은 skill/SKILL.md, MCP 도구와 인수를 설명하는 mcp/README.md, Claude Desktop 검증 문서, 변경 사항을 기록한 CHANGELOG.md, 저장소 구성과 테스트·릴리스 규칙을 설명하는 CONTRIBUTING.md가 있다. 업그레이드 전에는 호환성을 깨는 변경이 기록될 수 있는 변경 내역을 확인하라고 안내한다. RFC 문서의 출처 표시와 적용 조건은 NOTICE에 적혀 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요