Nara MCP Server (나라장터 입찰공고 검색)
MCP server for searching Korean government procurement bid notices from G2B (나라장터 - Nara Jangteo).
Features
🔍 키워드 검색: 최근 7일간 용역 입찰공고를 키워드로 검색
📅 자동 필터링: 마감되지 않은 공고만 자동 필터링
📎 파일 추출: 제안요청서(RFP) 자동 다운로드 및 텍스트 추출
🏢 맞춤형 추천: 부서 프로필 기반 Top 5 입찰공고 추천
📄 다형식 지원: HWP, HWPX, PDF, DOCX, XLSX, ZIP 파일 자동 처리
🎯 전략 분석: 첨부파일 기반 입찰 전략 제안
Prerequisites
1. API 키 발급 (필수)
나라장터 API를 사용하려면 공공데이터포털에서 API 키를 발급받아야 합니다.
발급 절차:
공공데이터포털 접속 및 회원가입
검색창에 "조달청_나라장터 입찰공고정보서비스" 검색
"조달청_나라장터 입찰공고정보서비스" 선택
활용신청 클릭 (즉시 승인 또는 승인 대기)
마이페이지 > 개발계정 에서 ServiceKey 확인 (일반 인증키 Decoding을 사용하면 됩니다.)
2. Python 환경
Python 3.10 이상 필요
Installation
Option 1: From Source (권장)
Option 2: From PyPI (향후 제공 예정)
Configuration
Claude Desktop
Claude Desktop의 설정 파일을 수정하여 MCP 서버를 연결합니다.
설정 파일 위치:
MacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%/Claude/claude_desktop_config.json
설정 예시:
중요 사항:
args의 경로는 절대 경로로 지정Windows 경로는
\\로 구분 (예:C:\\Users\\...)NARA_API_KEY에 발급받은 ServiceKey 입력
Other MCP Clients
Continue, Cline 등 다른 MCP 클라이언트에서도 동일한 방식으로 환경변수 설정:
Available Tools
1. get_bids_by_keyword
키워드로 최근 7일간 용역 입찰공고를 검색합니다.
파라미터:
keyword(필수): 검색 키워드 (예: "인공지능", "AI", "플랫폼", "시스템 구축")
반환 정보:
공고명 (bidNtceNm)
공고번호 (bidNtceNo)
수요기관 (dminsttNm)
마감일시 (bidClseDt) - 마감되지 않은 공고만
제안요청서 링크 (ntceSpecDocUrl1)
예시 질문:
2. recommend_bids_for_dept
부서/팀 프로필을 기반으로 맞춤형 입찰공고를 추천합니다 (최대 30개 검색 후 Top 5 선정).
파라미터:
keyword(필수): 검색 키워드department_profile(필수): 부서/팀 설명 (예: "UI/UX 디자인팀", "AI/ML 개발팀")
예시 질문:
3. analyze_bid_detail
입찰공고 첨부파일(제안요청서)을 다운로드하고 텍스트를 추출하여 분석합니다.
파라미터:
file_url(필수): 첨부파일 URL (검색 결과의 ntceSpecDocUrl1)filename(필수): 파일명 (검색 결과의 ntceSpecFileNm1)department_profile(선택): 부서 설명 (입력 시 전략 분석 포함)
지원 형식:
HWP/HWPX: 한글 문서 (주요 형식)
PDF: 이미지 기반 PDF는 제외
DOCX: MS Word 문서
XLSX: Excel 스프레드시트
ZIP: 자동으로 내부 파일 선택 (제안요청서 우선)
예시 질문:
분석 결과:
Fit Score (0-100): 팀과 프로젝트의 적합도
Core Tasks: 팀이 수행할 핵심 업무
Winning Strategy: 입찰 전략 3가지
Risk Factors: 위험 요소 (기술스택, 일정, 페널티 등)
Usage Examples
기본 검색
맞춤형 추천
전략 분석
Troubleshooting
1. ValueError: NARA_API_KEY environment variable is required
원인: API 키가 환경변수로 설정되지 않았습니다.
해결 방법:
Claude Desktop 설정 파일의
env섹션에NARA_API_KEY추가Claude Desktop 재시작
2. API Error (Code: 03 - No Data)
원인: 검색 결과가 없거나, 최근 7일간 해당 키워드의 공고가 없습니다.
해결 방법:
다른 키워드로 검색 시도
검색 기간을 확장하고 싶다면 개발자에게 문의
3. API Error (Code: 20 - Access Denied)
원인: API 키가 잘못되었거나 활용신청이 승인되지 않았습니다.
해결 방법:
공공데이터포털 > 마이페이지에서 ServiceKey 확인
활용신청 승인 여부 확인
4. HWP 파일 추출 실패
원인: DRM/암호화된 HWP 파일이거나 비표준 인코딩입니다.
해결 방법:
원본 링크에서 수동 다운로드 시도
PDF 버전 파일이 있는지 확인
API Information
데이터 출처: 조달청 나라장터 (Korea Public Procurement Service)
API 서비스: BidPublicInfoService
엔드포인트:
getBidPblancListInfoServcPPSSrch공고 유형: 용역 (Service) - 컨설팅, 개발, SI 프로젝트
검색 기간: 최근 7일 (마감되지 않은 공고 비율 최적화)
필터링: 마감일시 기준 자동 필터링
참고:
물품 공고: 엔드포인트 변경 필요 (
getBidPblancListInfoThngPPSSrch)공사 공고: 엔드포인트 변경 필요 (
getBidPblancListInfoCnstwkPPSSrch)
Technical Stack
Python: 3.10+
MCP SDK:
mcp[cli]- Model Context Protocol server frameworkHTTP Client:
httpx- Async HTTP requestsFile Extraction:
olefile- HWP (MS OLE format)pypdf- PDF text extractionpython-docx- DOCX parsingopenpyxl- XLSX reading
Project Structure
Development
Local Testing
Testing with MCP Inspector
Contributing
Contributions are welcome! Please follow these guidelines:
Fork the repository
Create a feature branch
Make your changes with clear commit messages
Test thoroughly with real API calls
Submit a Pull Request
License
MIT License - see LICENSE file for details
Author
Datajang (GitHub)
Links
Repository: https://github.com/Datajang/nara-mcp-server
Issues: https://github.com/Datajang/nara-mcp-server/issues
공공데이터포털: https://www.data.go.kr/
나라장터: https://www.g2b.go.kr/
Acknowledgments
조달청 나라장터 for providing the public API
Anthropic for the MCP protocol
Korean government for open data initiatives