Nara MCP Server(搜索国家集市招标公告)
MCP服务器,用于搜索来自G2B的韩国政府采购招标通知("。
特性
- 🔍 集成搜索:以劳务招标公告+事前规格为关键词进行搜索(搜索时间自由设置,默认为7天)
- 💰 预算信息:在所有搜索结果中显示预算金额
- 📅 显示结束状态:显示所有公告
✅ 진행중/🔴 마감明确区分状态 - 📎 提取文件:自动下载提案申请(RFP)并提取文本
- 🗂️ 智能过滤:仅自动筛选提案申请/任务指示文件
- 🏢 个性化推荐:基于部门配置文件的灵活推荐(Top N或完整列表)
- 📄 多格式支持:自动处理HWP、HWPX、PDF、DOCX、XLSX、ZIP文件
- 🎯 战略分析:基于附件的投标策略建议
快速开始
通过3个步骤开始:
- 从PyPI安装
pip install nara-mcp-server- 获取API密钥 (需要2个)
- 公共数据门户 在 “采购厅_国家集市招标信息服务” 申请使用→ NARA_API_KEY - 在同一门户网站上 “采购厅_国家集市规格信息服务(HrcspSsstndrdInfoService)” 申请使用→ NARA_PRESPEC_API_KEY
- 配置Claude桌面
增添 claude_desktop_config.json:
{
"mcpServers": {
"nara-jangteo": {
"command": "uvx",
"args": [
"--python",
"3.11",
"--from",
"nara-mcp-server",
"nara-server"
],
"env": {
"NARA_API_KEY": "입찰공고 API KEY",
"NARA_PRESPEC_API_KEY": "사전규격 API KEY",
"UV_LINK_MODE": "copy"
}
}
}
}- 开始使用!
Restart Claude Desktop and ask:“请在国家集市上搜索‘AI’关键字的招标公告。”
先决条件
1.发放API密钥(必需-2种)
国家集市API 一般招标公告哇 词典规格这是单独的服务,需要分别申请使用。
①招标API密钥(NARA_API_KEY)
- 公共数据门户 连接和会员注册
- “采购厅_国家集市招标信息服务” 搜索后申请使用
- 我的页面>开发帐户 在中验证Service Key(使用常规验证密钥解码)
②预规范API密钥(NARA_PRESPEC_API_KEY)
- 在同一门户网站上 “采购厅_国家集市规格信息服务(HrcspSsstndrdInfoService)” 搜索后申请使用
- 批准后确认相同的Service Key
两项服务的密钥可能相同,但必须在各自的申请完成后才能正常运行。
2.Python环境
- 需要Python 3.10或更高版本
安装
选项1:来自PyPI(推荐)
最简单的安装方法:
pip install nara-mcp-server备注:这将安装 nara-server 全局命令,便于访问。
选项2:来源(用于开发)
如果你想贡献或修改代码:
git clone https://github.com/Datajang/narajangteo_mcp_server.git
cd narajangteo_mcp_server
pip install -e .配置
使用.env文件(建议用于开发)
创建一个 .env 项目根目录中的文件:
# .env
NARA_API_KEY=입찰공고_서비스키
NARA_PRESPEC_API_KEY=사전규격_서비스키这 .env 运行服务器时会自动加载文件。
Claude桌面配置
设置文件位置:
- MacOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"nara-jangteo": {
"command": "uvx",
"args": [
"--python",
"3.11",
"--from",
"nara-mcp-server",
"nara-server"
],
"env": {
"NARA_API_KEY": "입찰공고 API KEY",
"NARA_PRESPEC_API_KEY": "사전규격 API KEY",
"UV_LINK_MODE": "copy"
}
}
}
}重要事项:
- 安装PyPI时
nara-server命令将自动注册 NARA_API_KEY-输入招标公告ServiceKeyNARA_PRESPEC_API_KEY-输入预配ServiceKey(未设置时禁用预配搜索)- Claude Desktop需要重新启动
其他MCP客户端
Continue、Cline等其他MCP客户端也可以以同样的方式进行设置。
开发与测试
使用.env文件(推荐)
为了地方发展,创建一个 .env 文件:
# .env
NARA_API_KEY=입찰공고_서비스키
NARA_PRESPEC_API_KEY=사전규격_서비스키这 .env 文件会自动加载 未被git跟踪 (.微笑)。
工作流程示例:
# 1. .env 파일 생성 후 두 API 키 입력
# NARA_API_KEY=your_bid_key
# NARA_PRESPEC_API_KEY=your_prespec_key
# 2. Run MCP Inspector (no env setup needed!)
npx @modelcontextprotocol/inspector uv --directory . run python -m nara_server.server可用工具
1. get_bids_by_keyword
关键字搜索劳务招标公告和事前规格。(最多20个结果)
参数:
keyword(必需):搜索关键字(例如“人工智能”、“AI”、“平台”、“系统构建”)days(可选,默认值:7):搜索持续时间(天)。搜索旧公告时增加(例如,30、60、90)
返回信息:
一般招标公告:
- 公告名(bidNtceNm)
- 公告编号(bidNtceNo)
- 需求机构(dminsttNm)
- 预算(bdgtAmt/presmptPrce)
- 截止日期(bidClseDt)+正在进行/显示截止状态
- 提案请求文件(仅自动过滤包含提案请求/建议关键字的文件)
预规格:
- 品名/服务名称(prdctClsfcNoNm)
- 预规格编号(bfSpecRgstNo)
- 订购机构(orderInsttNm)
- 分配预算(asignBdgtAmt)
- 意见截止日期(opninRgstClseDt)
- 规格文档文件URL(specDocFileUrl1~5)
示例问题:
나라장터에서 "인공지능" 키워드로 입찰공고를 검색해줘AI 관련 정부 프로젝트 입찰 공고를 최근 30일 기준으로 찾아줘______________________________________________________________________
2. recommend_bids_for_dept
根据部门/团队配置文件推荐定制招标公告。
参数:
keyword(必需):搜索关键字department_profile(必需):部门/团队说明(例如“UI/UX设计团队”、“AI/ML开发团队”)days(可选,默认值:7):搜索持续时间(天)。搜索旧公告时增加(例如,30、60、90)
搜索范围:
- 最多60个结果(一般招标30个+事前规格30个)
输出方式:
- 如果用户要求“Top 5”或特定数量,则推荐该数量。
- 如果您请求“所有相关公告”,将按适合度顺序显示完整列表
- 优先推荐有预算的项目
- 仅自动过滤并显示提案申请/任务指示文件
示例问题:
우리 팀은 클라우드 인프라 구축 전문팀이야. "클라우드" 키워드로 우리 팀에 맞는 입찰공고 Top 5를 추천해줘데이터베이스 마이그레이션 전문가인데, "DB" 키워드로 관련된 모든 공고를 보여줘______________________________________________________________________
3. analyze_bid_detail
下载招标附件(提案申请),提取并分析文本。
参数:
file_url(必需):附件URL(搜索结果的提案请求URL)filename(必需):文件名(搜索结果的文件名)department_profile(可选):部门说明(输入时包括战略分析)
支持类型:
- 汉王:韩文文档(主要格式,使用langchain-teddynote HWPLoader)
- HWPX:韩文Office XML文档
- PDF:基于文本的PDF(不包括基于图像的PDF)
- docx 文件:MS Word文档
- XLSX文件:Excel电子表格
- 压缩文件:自动选择内部文件
- 优先顺序:提案申请>任务指示>.hwp/.hwpx>.docx/.pdf
示例问题:
위 공고의 첨부파일을 분석해줘. 우리 팀은 AI 개발팀이야.分析结果:
- 适合度得分(0-100):团队与项目的契合度
- 核心任务:团队要执行的核心任务
- 制胜策略:3种投标策略
- 风险因素:风险因素(技术堆栈、时间表、处罚等)
使用示例
默认搜索
Q: 나라장터에서 "시스템 개발" 키워드로 입찰공고를 검색해줘
A: 🔍 **일반 입찰 공고 (Regular Bids)**
Found 15 bid notice(s) total, 15 retrieved
📅 Search period: 20260116 ~ 20260123
## 1. AI 기반 고객관리 시스템 개발 용역
📌 공고번호: 20260112345-00
🏢 수요기관: 서울시청
💰 예산: 150,000,000원
⏰ 마감일시: 202601201430 (✅ 진행중)
📎 제안요청서:
- 제안요청서_AI시스템.hwp: [URL]
================================================================================
📋 **사전규격 공고 (Preliminary Specifications)**
Found 3 pre-spec(s) total, 3 retrieved
## 1. 📋 [사전규격] 고객관리 플랫폼 구축
📌 사전규격번호: PRE20260101-01
🏢 발주기관: 경기도청
💰 배정예산: 80,000,000원
⏰ 의견마감일시: 202601251700 (🔴 마감)
📎 규격문서:
- 규격문서 1: [URL]个性化推荐
Q: 우리 팀은 React 기반 웹 프론트엔드 개발 전문팀이야. "플랫폼 구축" 키워드로 우리 팀에 맞는 입찰공고 Top 5를 추천해줘
A: 🎯 Department-Filtered Integrated Search Results
📋 Department Profile: React 기반 웹 프론트엔드 개발 전문팀
🔍 Keyword: 플랫폼 구축
📊 Results:
- Regular Bids: 22 open (out of 30 total)
- Pre-Specs: 8 open (out of 30 total)
**Top 5 Recommendations:**
1. ✅ [BID] 시민참여 플랫폼 구축 (적합도 95점)
- 예산: 200,000,000원
- 이유: React/TypeScript 기반 웹 프론트엔드 구축 명시, UI/UX 디자인 역량 중요
2. ✅ [PRESPEC] 공공서비스 웹포털 사전규격 (적합도 90점)
- 예산: 150,000,000원
- 이유: 반응형 웹 디자인 요구, 사전 의견 제출로 경쟁력 확보 가능
...战略分析
Q: 위 1번 공고의 첨부파일을 분석해줘
A: 📄 Bid Document Analysis
📎 File: 제안요청서_시민참여플랫폼.hwp
## Strategic Analysis
**Fit Score:** 92/100
- React 18, TypeScript, Tailwind CSS 기술스택 요구
- 반응형 웹 디자인 및 접근성(WCAG 2.1) 준수 필요
**Core Tasks:**
1. React 기반 SPA(Single Page Application) 개발
2. 사용자 대시보드 및 관리자 콘솔 UI 구현
3. REST API 연동 및 상태 관리 (Redux/Zustand)
**Winning Strategy:**
1. 포트폴리오에서 정부기관 반응형 웹 사례 강조
2. 접근성 준수 경험 및 웹 표준 인증서 제시
3. React 성능 최적화 기법 (Code Splitting, Lazy Loading) 강조
**Risk Factors:**
- ⚠️ 개발 기간 3개월로 촉박함 (일반적으로 4-5개월 소요)
- ⚠️ 지체상금: 일 0.1% (최대 10%)
- ✅ 기술스택은 팀 역량과 100% 일치故障排除
1.ValueError:找不到NARA_API_KEY/NAR_PRESPEC_API_KEY
原因:API密钥未设置为环境变量。
解决方法:
- Claude Desktop配置文件中的
env在节中NARA_API_KEY哇NARA_PRESPEC_API_KEY添加 - 预配键(
NARA_PRESPEC_API_KEY)未设置时,禁用规格前搜索,但常规招标搜索仍有效 - 重新启动Claude Desktop
2.未找到结果
原因:在此期间没有该关键字的公告。
解决方法:
- 尝试搜索其他关键字(使用更常见的关键字)
days增加参数以延长搜索时间(例如days=30,days=60)- 截止的公告
🔴 마감显示时保持原样,无需另行检查
3.API错误(代码:20-拒绝访问)
原因:API密钥无效或未批准使用申请。
解决方法:
- 公共数据门户 >在我的页面上验证ServiceKey
- 确认是否批准使用申请
4.提取HWP文件失败
原因:
- DRM/加密的HWP文件
- 非标准编码或损坏的文件
- 使用特殊的压缩方式
解决方法:
- 尝试从源链接手动下载
- 验证是否存在PDF版本文件
- 使用其他附件(DOCX、PDF等)
注意:
- 这台服务器
langchain-teddynote可以使用HWPLoader处理大多数HWP文件 - 提取失败时
olefile自动回退到解析器
API信息
- 数据来源:采购厅国家集市(Korea Public Procurement Service)
- 端点:
- 一般投标: http://apis.data.go.kr/1230000/ad/BidPublicInfoService/getBidPblancListInfoServcPPSSrch - 预规格: http://apis.data.go.kr/1230000/ao/HrcspSsstndrdInfoService/getPublicPrcureThngInfoServcPPSSrch
- API密钥:两项服务都需要申请公共数据门户(
NARA_API_KEY,NARA_PRESPEC_API_KEY) - 公告类型:劳务(Service)-咨询、开发、SI项目
- 搜索时间:默认7天,
days可自由设置参数(例如,30、60、90天) - 分割日期区块:自动绕过API日期范围限制(~15天),内部分割15天单位后合并结果
- 过滤:
- 显示所有公告,截止日期旁边 ✅ 진행중 / 🔴 마감 显示状态 - 预规格项目包括: 📋 [사전규격] 用标签明确区分普通招标公告
注意:
- 物品公告:需要更改端点(
getBidPblancListInfoThngPPSSrch) - 施工公告:需要更改端点(
getBidPblancListInfoCnstwkPPSSrch)
技术栈
- python: 3.10+
- MCP框架:
- mcp>=1.15.0 -模型上下文协议SDK
- HTTP客户端:
httpx>=0.27.0-异步HTTP请求 - 文件提取:
- langchain-teddynote>=0.3.9 -增强的HWP提取(主要,支持zlib压缩) - olefile>=0.47 -HWP回退(旧版MS OLE格式解析器) - pypdf>=4.0 -PDF文本提取 - python-docx>=1.1 -DOCX解析 - openpyxl>=3.1 -XLSX读数
- LLM集成:
- langchain>=0.1.0,=0.1.0,=1.0.0 -环境变量管理
项目结构
narajangteo_mcp_server/
├── src/
│ └── nara_server/
│ ├── __init__.py # Package initialization
│ ├── server.py # Main MCP server (STDIO transport)
│ └── file_extractor.py # Multi-format file text extraction
├── pyproject.toml # Python project metadata & dependencies
├── .env # Environment variables (local)
├── README.md # This file
├── CLAUDE.md # Developer guide
└── LICENSE # MIT License发展
建立开发环境
# Clone repository
git clone https://github.com/Datajang/narajangteo_mcp_server.git
cd narajangteo_mcp_server
# Install in editable mode
pip install -e .
# Set environment variables
export NARA_API_KEY="your_bid_key" # MacOS/Linux
export NARA_PRESPEC_API_KEY="your_prespec_key"
set NARA_API_KEY=your_bid_key # Windows
set NARA_PRESPEC_API_KEY=your_prespec_key
# Or use .env file (recommended)
echo "NARA_API_KEY=your_bid_key" > .env
echo "NARA_PRESPEC_API_KEY=your_prespec_key" >> .env运行服务器
# Run directly
nara-server
# Or using Python module
python -m nara_server.serverMCP检验员测试
MCP Inspector为测试工具提供了一个交互式UI:
# Install Inspector
npm install -g @modelcontextprotocol/inspector
# Run with Inspector (automatically loads .env)
npx @modelcontextprotocol/inspector python -m nara_server.server检查员将打开http://localhost:6274与:
- 交互式工具测试
- 实时请求/响应日志
- 工具参数验证
先决条件:
- Node.js 18+(下载)
贡献
欢迎投稿!请遵循以下指南:
- 分叉存储库
- 创建要素分支
- 使用明确的提交消息进行更改
- 使用真实的API调用进行彻底测试
- 提交拉取请求
许可证
MIT许可证-请参阅 许可证 详细信息文件
作者
达坦 ()
链接
- PyPI包: https://pypi.org/project/nara-mcp-server/
- GitHub 仓库:https://github.com/Datajang/narajangteo_mcp_server
- 问题: https://github.com/Datajang/narajangteo_mcp_server/issues
- 公共数据门户: https://www.data.go.kr/
- 国家集市: https://www.g2b.go.kr/
致谢
- 采购厅国家集市for provided the public API
- MCP协议的拟人化
- 韩国政府推动开放数据倡议
