Skip to main content
Glama
hwibalyu
by hwibalyu
README.md
# edinet-mcp

`edinet-mcp`는 EDINET API v2를 MCP 서버로 감싼 프로젝트입니다.  
다운로드한 뒤 Python 환경만 준비하면 MCP 클라이언트에서 바로 공시 조회, 문서 다운로드, 본문 텍스트 추출을 사용할 수 있습니다.

## 무엇을 할 수 있나요?

- 특정 날짜의 공시 목록 조회
- 기간별 공시 검색
- `docID` 기준 원문(PDF/ZIP) 다운로드
- PDF, XBRL ZIP, CSV ZIP의 텍스트 추출
- EDINET/Fund 코드리스트 조회 및 검색
- 자연어 질문 기반 후보 문서 탐색

## 사용 전 준비

- Python 3.10 이상
- EDINET API Key

## 설치

```bash
git clone <your-repo-url>
cd edinet-mcp

python3 -m venv env
./env/bin/pip install -r requirements.txt
cp .env.example .env
```

`.env` 파일에서 `EDINET_API_KEY`를 실제 키로 바꿔주세요.

## 실행

프로젝트 루트에서 아래처럼 실행하면 됩니다.

```bash
./env/bin/python src/server.py
```

이 서버는 `.env`를 현재 작업 디렉터리 기준으로 읽기 때문에, 프로젝트 루트에서 실행하는 것이 안전합니다.

## MCP에 등록하기

예시: `~/.config/opencode/opencode.json`

```json
{
  "mcp": {
    "edinet-mcp": {
      "type": "local",
      "enabled": true,
      "command": [
        "/ABSOLUTE/PATH/edinet-mcp/env/bin/python",
        "/ABSOLUTE/PATH/edinet-mcp/src/server.py"
      ],
      "cwd": "/ABSOLUTE/PATH/edinet-mcp"
    }
  }
}
```

중요한 점:

- `command`는 문자열 하나가 아니라 문자열 배열이어야 합니다.
- `cwd`를 프로젝트 루트로 지정해야 `.env`를 안정적으로 읽습니다.

## 자주 쓰는 도구

- `edinet_health_check`: API 키와 연결 상태 확인
- `edinet_list_documents`: 특정 날짜 공시 목록 조회
- `edinet_search_documents`: 기간 조건으로 공시 검색
- `edinet_get_latest_documents`: 최근 며칠치 공시 조회
- `edinet_download_document`: 문서 원본 저장
- `edinet_read_document_text`: 문서 본문 텍스트 추출
- `edinet_search_code_list`: 회사명이나 코드 검색
- `edinet_answer_question`: 자연어 질문으로 후보 문서와 근거 찾기

## 환경변수

- `EDINET_API_KEY`: 필수
- `EDINET_API_BASE_URL`: 기본값 `https://api.edinet-fsa.go.jp`
- `EDINET_USER_AGENT`: 기본값 `edinet-mcp/0.1`
- `EDINET_TIMEOUT_SECONDS`: 기본값 `30`
- `EDINET_CACHE_DIR`: 기본값 `.cache`
- `EDINET_DOWNLOAD_DIR`: 기본값 `downloads`

## 사용 흐름 예시

보통은 아래 순서로 사용하면 됩니다.

1. `edinet_health_check`로 연결 확인
2. `edinet_search_documents` 또는 `edinet_get_latest_documents`로 후보 찾기
3. 필요한 문서의 `docID` 확인
4. `edinet_download_document` 또는 `edinet_read_document_text` 호출

질문형 탐색이 필요하면 `edinet_answer_question`을 바로 사용해도 됩니다.

## 문제 해결

- `EDINET_API_KEY is not set`
  - `.env`가 프로젝트 루트에 있는지 확인
  - 키 앞뒤 공백이 없는지 확인
- `401` 또는 인증 오류
  - API 키가 유효한지 확인
- 문서가 안 내려받아짐
  - `doc_id`, `doc_type` 값이 맞는지 확인
- 검색 범위가 너무 넓어 느림
  - 날짜 범위를 더 짧게 나눠서 조회

## 참고

- 다운로드 파일은 기본적으로 `downloads/` 아래에 저장됩니다.
- 캐시 파일은 기본적으로 `.cache/` 아래에 저장됩니다.
- `.env`는 저장소에 커밋하지 않도록 유지하세요.