feat(openalex): 학술 그래프 읽기 서비스 (works/authors 검색·조회)#11
Merged
Conversation
학술 빈틈 두 번째 — OpenAlex MCP. 무인증(키 선택)·JSON·페이지네이션은 본문 meta라 get_json만 사용.
도구 4종(전부 GET·읽기): search_works / get_work / search_authors / get_author.
인증: api_key·mailto는 헤더가 아니라 쿼리 파라미터(선택). per-page는 하이픈·1..200 검증.
응답 {meta,results} 봉투 모델. 라이브 API + 공식 문서로 계약 검증.
머지 전 독립·적대적 검증(라이브 curl 대조)에서 발견·교정:
- bare DOI/ORCID는 OpenAlex가 404 → doi:/orcid: 네임스페이스로 자동 정규화(라이브 확인).
- 무효 키는 401(403 아님) → _explain에 401 분기 추가.
- 404 본문이 HTML → 비-JSON payload는 메시지에 노출 안 함.
- 미검증 "100 req/s" 수치 제거(현 문서는 크레딧 모델).
통합: providers done, .env.example, 배선 스모크 6서비스·31도구, 카탈로그/체인지로그 재생성.
검증: pytest 204 passed, ruff clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver
added a commit
that referenced
this pull request
Jun 3, 2026
* feat(crossref): 학술 메타데이터 읽기 서비스 (works 검색·조회) works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(crossref): offset+rows 합산 경계 정밀화 + published 주석 provenance 보정 - offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인: rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단. - Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/ published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일. - 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(crossref): 카탈로그·체인지로그 재생성 (crossref 반영) discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver
added a commit
that referenced
this pull request
Jun 4, 2026
학술 빈틈 두 번째 — OpenAlex MCP. 무인증(키 선택)·JSON·페이지네이션은 본문 meta라 get_json만 사용.
도구 4종(전부 GET·읽기): search_works / get_work / search_authors / get_author.
인증: api_key·mailto는 헤더가 아니라 쿼리 파라미터(선택). per-page는 하이픈·1..200 검증.
응답 {meta,results} 봉투 모델. 라이브 API + 공식 문서로 계약 검증.
머지 전 독립·적대적 검증(라이브 curl 대조)에서 발견·교정:
- bare DOI/ORCID는 OpenAlex가 404 → doi:/orcid: 네임스페이스로 자동 정규화(라이브 확인).
- 무효 키는 401(403 아님) → _explain에 401 분기 추가.
- 404 본문이 HTML → 비-JSON payload는 메시지에 노출 안 함.
- 미검증 "100 req/s" 수치 제거(현 문서는 크레딧 모델).
통합: providers done, .env.example, 배선 스모크 6서비스·31도구, 카탈로그/체인지로그 재생성.
검증: pytest 204 passed, ruff clean.
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
ArcSolver
added a commit
that referenced
this pull request
Jun 4, 2026
* feat(crossref): 학술 메타데이터 읽기 서비스 (works 검색·조회) works/journals 검색·단건 조회 4개 GET 도구 추가. 무인증(polite pool mailto는 선택 쿼리 파라미터+User-Agent). 본문 message 기반 건수 안내. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * fix(crossref): offset+rows 합산 경계 정밀화 + published 주석 provenance 보정 - offset 단독 0..10000 외에 offset+rows ≤ 10000 합산 경계를 추가(라이브 확인: rows=1·offset=10000, rows=20·offset=9981 모두 400). 서버 400 도달 전 사전 차단. - Work.published 주석을 보정 — api_format.md엔 미기재(issued/published-print/ published-online으로 표기), 라이브엔 항상 존재하며 issued와 동일. - 합산 경계 회귀 테스트 추가. 교차 독립 검증(라이브)에서 발견. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * chore(crossref): 카탈로그·체인지로그 재생성 (crossref 반영) discover_services가 crossref 자동 등록 → docs/services.md(도구 4종)·CHANGELOG UNRELEASED 반영. openalex(#11)·zotero(#9)와 동일한 통합 단계 재생성. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
학술 빈틈 두 번째 타자 — OpenAlex(2.5억+ 논문/저자 오픈 학술 그래프, 공식 MCP 없음). 읽기 전용.
특징
OPENALEX_API_KEY·OPENALEX_MAILTO는 쿼리 파라미터(헤더 아님), 둘 다 없어도 동작(라이브 확인). 코어get_json만 사용(페이지네이션·건수가 본문 meta에 있음).per-page(하이픈)·1–200 검증,search/filter/sort/page.도구 4종 (GET·읽기)
openalex_search_works(search·filter·sort·per-page·page) ·openalex_get_work·openalex_search_authors·openalex_get_author공식 출처 + 머지 전 독립 검증 (라이브 API 대조)
api-overview · lists · work-object · authentication
독립 검증(라이브 curl)에서 발견·교정:
doi:/orcid:네임스페이스로 자동 정규화._explain401 분기 추가.검증
uv run pytest -q→ 204 passed (계약 + 런타임(FakeMCP/RecordingHTTP) + 배선 6서비스·31도구)uv run ruff check .→ clean · 카탈로그 6서비스·31도구 · 새 서드파티 의존 없음 · 새 코어 동사 불필요🤖 Generated with Claude Code