나라장터 사전규격

io.github.opendata-kr由 GitHub 帳號 opendata-kr 發布v0.3.0更新於 Oct 24, 2026

나라장터 사전규격정보서비스 Open API를 위한 로컬 MCP 서버

已驗證STDIO僅桌面資料與分析商業與電商

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過 data.go.kr 開放 API 查詢與瀏覽韓國나라장터(國家集市)事前規格(預告)公告。

可以做什麼
  • 依登記或變更日期、或依事前規格登記編號查詢事前規格公告
  • 依發包機關或實際需求機關查詢公告
  • 依品名、細部品名編號或細部品名查詢公告
  • 依機關、品名、參照編號與 SW 事業與否進行複合查詢
  • 查看指定事前規格下提出的規格書意見與回覆
  • 可平行查詢工程、勞務、物品與外資四類業務,並逐類顯示失敗訊息
適用情境
適合用自然語言詢問某段期間、某個機關或某個品項發布了哪些事前規格公告,或查看某則公告收到的意見。著重韓國公共採購調查,而非一般網頁搜尋。
執行需求
透過 npx 以 stdio 在本機執行,需要 Node.js 24 以上版本。需在 DATA_GO_KR_SERVICE_KEY 環境變數提供 data.go.kr 服務金鑰,且該帳號須已獲准使用나라장터事前規格 API。需要連線至 apis.data.go.kr;可用 DATA_GO_KR_BASE_URL 覆寫端點位址。
安裝前請注意
DATA_GO_KR_SERVICE_KEY 屬機密資訊,必須使用 Decoding(原始)金鑰,填入 Encoding 金鑰會造成驗證錯誤。此金鑰可在同一帳號下獲准的其他 data.go.kr API 重複使用,請勿寫入共用設定。五個工具皆為唯讀查詢,但每次查詢都會消耗 API 流量配額,未指定業務類別時會同時送出四個請求。回傳結果包含來源資料中的聯絡人與意見撰寫人資訊。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 나라장터 사전규격,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@opendata-kr/narajangteo-prespec-mcp

나라장터 사전규격정보서비스(공공데이터포털 data.go.kr) Open API를 감싼 로컬 MCP 서버.

[npm version] [CI] [node] [license]

MCP 클라이언트에서 나라장터 사전규격(발주기관이 입찰공고 전에 규격서를 사전공개하고 의견을 받는 단계)을 자연어로 검색하고 조회한다. 예를 들어 이렇게 물어볼 수 있다.

  • "이번 달 올라온 물품 사전규격을 찾아줘"
  • "해군군수사령부가 발주한 사전규격을 검색해줘"
  • "사전규격등록번호 R26BD00234692의 규격서 의견을 보여줘"

특징

  • 20개 오퍼레이션을 5개 도구로 노출: 전체 조회/기관별/품목별/복합검색/규격서의견 유형별로 묶어 사용성을 단순화했다.
  • 4개 업무구분 병렬 검색: 공사/용역/물품/외자를 한 번에 조회한다. 업무구분 미지정 시 전 구분을 동시 검색한다.
  • 부분 실패 표면화: 일부 구분 조회가 실패해도 나머지 결과를 반환하고, 실패한 구분은 오류 메시지로 드러낸다(조용한 누락 없음).
  • data.go.kr 에러코드 한국어화: 인증키 만료, 트래픽 초과 등 결과코드를 조치 가능한 한국어 메시지로 정규화한다.
  • 이중 인코딩 방어: Encoding 키를 잘못 넣으면 경고하고, 요청은 한 번만 인코딩한다.
  • 타임아웃: API 호출에 타임아웃을 둔다.

준비물

  • Node.js 24 이상 (.nvmrc = lts/krypton).
  • data.go.kr 인증키:
    1. 공공데이터포털에서 나라장터 사전규격정보서비스를 활용신청해 [승인]을 받는다. 인증키는 계정당 하나지만, 각 API는 저마다 활용신청 승인이 있어야 그 API에서 인증된다. 서비스키가 있어도 이 API를 활용신청하지 않으면 인증 오류(코드 30)가 난다.
    2. 마이페이지 → 활용신청 현황 → 개발계정 상세에서 Decoding 서비스키를 복사한다.
    3. 같은 DATA_GO_KR_SERVICE_KEY는 같은 계정으로 활용신청한 다른 data.go.kr API에도 재사용된다.

[!TIP] 공공데이터포털이 처음이라면 활용신청부터 인증키 복사까지 그림으로 따라 하는 data.go.kr 인증키 발급 가이드를 참고한다.

서비스키는 반드시 Decoding(원본) 키를 넣는다. Encoding(%2B 등 포함) 키를 넣으면 이중 인코딩으로 인증 오류(코드 30)가 난다.

MCP 클라이언트 설정

MCP 클라이언트에 아래 config를 추가한다:

json
{  "mcpServers": {    "narajangteo-prespec": {      "command": "npx",      "args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],      "env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }    }  }}

[!NOTE] @opendata-kr/narajangteo-prespec-mcp@latest를 쓰면 클라이언트가 항상 최신 버전을 받는다.

[!IMPORTANT] DATA_GO_KR_SERVICE_KEY(필수, Decoding 원본 키)가 없으면 첫 호출이 인증 오류(코드 30)로 실패한다. 위 config의 env에 키를 넣는다. 원클릭 버튼이나 env를 config에 담지 못하는 클라이언트는 설치 후 셸 환경변수로 DATA_GO_KR_SERVICE_KEY를 설정한다.

클라이언트별 설정

Amp https://ampcode.com/manual#mcp 의 안내를 따르고 위 config를 사용한다. CLI로도 추가할 수 있다:
bash
amp mcp add narajangteo-prespec -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest

이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Antigravity

Antigravity 문서의 커스텀 MCP 서버 추가 방법을 따라 아래 config를 MCP servers 설정에 넣는다:

json
{  "mcpServers": {    "narajangteo-prespec": {      "command": "npx",      "args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],      "env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }    }  }}
Claude Code

Claude Code CLI로 서버를 추가한다 (가이드):

bash
claude mcp add narajangteo-prespec --scope user --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest
Cline https://docs.cline.bot/mcp/configuring-mcp-servers 의 안내를 따르고 위 config를 사용한다.
Codex MCP 설정 가이드를 따르고 위 config를 사용한다. Codex CLI로도 추가할 수 있다:
bash
codex mcp add narajangteo-prespec --env DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest

Windows

~/.codex/config.toml에 cmd /c 래핑으로 추가한다:

toml
[mcp_servers.narajangteo-prespec]command = "cmd"args = ["/c", "npx", "-y", "@opendata-kr/narajangteo-prespec-mcp@latest"]env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
Command Code

Command Code CLI로 서버를 추가한다 (MCP 가이드):

bash
cmd mcp add narajangteo-prespec --scope user npx -y @opendata-kr/narajangteo-prespec-mcp@latest

이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Continue

Continue의 MCP 가이드를 따른다. Continue는 mcpServers를 배열로 쓴다:

json
{  "mcpServers": [    {      "name": "narajangteo-prespec",      "command": "npx",      "args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],      "env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }    }  ]}
Copilot CLI

Copilot CLI를 시작한다:

copilot

MCP 서버 추가 대화를 연다:

/mcp add

다음 필드를 입력하고 CTRL+S로 저장한다:

  • Server name: narajangteo-prespec
  • Server Type: [1] Local
  • Command: npx -y @opendata-kr/narajangteo-prespec-mcp@latest
  • Environment variables: DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키
Copilot / VS Code

버튼으로 설치:

[Install in VS Code]

[Install in VS Code Insiders]

버튼은 키를 담지 못한다. 설치 후 .vscode/mcp.json(또는 사용자 설정)의 env에 DATA_GO_KR_SERVICE_KEY를 추가한다.

직접 추가:

VS Code MCP 설정 가이드를 따르거나 CLI를 쓴다.

macOS·Linux:

bash
code --add-mcp '{"name":"narajangteo-prespec","command":"npx","args":["-y","@opendata-kr/narajangteo-prespec-mcp@latest"],"env":{"DATA_GO_KR_SERVICE_KEY":"발급받은_Decoding_키"}}'

Windows(PowerShell):

powershell
code --add-mcp '{"""name""":"""narajangteo-prespec""","""command""":"""npx""","""args""":["""-y""","""@opendata-kr/narajangteo-prespec-mcp@latest"""],"""env""":{"""DATA_GO_KR_SERVICE_KEY""":"""발급받은_Decoding_키"""}}'
Cursor

버튼으로 설치:

[Add narajangteo-prespec MCP server to Cursor]

버튼은 키를 담지 못한다. 설치 후 Cursor의 MCP 설정에서 env에 DATA_GO_KR_SERVICE_KEY를 추가한다.

직접 추가:

Cursor Settings → MCP → New MCP Server에서 위 config를 사용한다.

Factory CLI

Factory CLI로 서버를 추가한다 (가이드):

bash
droid mcp add narajangteo-prespec "npx -y @opendata-kr/narajangteo-prespec-mcp@latest"

이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Gemini CLI

Gemini CLI로 서버를 추가한다.

프로젝트 범위:

bash
gemini mcp add narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest

전역:

bash
gemini mcp add -s user narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest

또는 MCP 가이드를 따르고 위 config를 쓴다. ~/.gemini/settings.json의 서버 정의 env에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Gemini Code Assist MCP 설정 가이드를 따르고 위 config를 사용한다.
Grok Build CLI
bash
grok mcp add narajangteo-prespec npx -y @opendata-kr/narajangteo-prespec-mcp@latest

이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다. 더 많은 옵션은 문서 참고.

JetBrains AI Assistant & Junie

Settings | Tools | AI Assistant | Model Context Protocol (MCP) → Add에서 위 config를 사용한다. Junie도 같은 방식으로 Settings | Tools | Junie | MCP Settings → Add에서 위 config를 사용한다.

Katalon Studio

Katalon StudioAssist는 MCP 프록시를 통해 stdio 서버를 연결한다.

1단계: MCP 프록시 설정 가이드로 프록시를 설치한다.

2단계: 프록시로 서버를 띄운다(같은 셸에 DATA_GO_KR_SERVICE_KEY를 export 한 상태):

bash
DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 mcp-proxy --transport streamablehttp --port 8080 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest

3단계: StudioAssist에 다음 설정으로 서버를 추가한다:

  • Connection URL: http://127.0.0.1:8080/mcp
  • Transport type: HTTP
Kiro

Kiro Settings에서 Configure MCP → Open Workspace or User MCP Config → 위 config를 사용한다.

또는 Activity Bar → Kiro → MCP Servers → Open MCP Config에서 위 config를 사용한다.

Mistral Vibe

~/.vibe/config.toml에 추가한다:

toml
[[mcp_servers]]name = "narajangteo-prespec"transport = "stdio"command = "npx"args = ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"]env = { DATA_GO_KR_SERVICE_KEY = "발급받은_Decoding_키" }
OpenCode

opencode.json에 추가한다. 없으면 ~/.config/opencode/opencode.json에 만든다 (가이드):

json
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "narajangteo-prespec": {      "type": "local",      "command": ["npx", "-y", "@opendata-kr/narajangteo-prespec-mcp@latest"],      "environment": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }    }  }}
Qoder

Qoder Settings에서 MCP Server → + Add → 위 config를 사용한다.

또는 MCP 가이드를 따르고 위 config를 쓴다.

Qoder CLI

Qoder CLI로 서버를 추가한다 (가이드):

프로젝트 범위:

bash
qodercli mcp add narajangteo-prespec -- npx @opendata-kr/narajangteo-prespec-mcp@latest

전역:

bash
qodercli mcp add -s user narajangteo-prespec -- npx @opendata-kr/narajangteo-prespec-mcp@latest

이후 생성된 설정의 env(또는 셸 환경변수)에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Visual Studio

버튼으로 설치:

[Install in Visual Studio]

버튼은 키를 담지 못한다. 설치 후 서버 설정의 env에 DATA_GO_KR_SERVICE_KEY를 추가한다.

Warp

Settings | AI | Manage MCP Servers → + Add에서 MCP 서버를 추가하고 위 config를 사용한다.

Windsurf MCP 설정 가이드를 따르고 위 config를 사용한다. Windsurf는 `mcpServers` 키를 쓴다(`~/.codeium/windsurf/mcp_config.json`).
Zed

~/.config/zed/settings.json에 추가한다(스키마는 Zed 버전에 따라 다를 수 있으니 Zed 공식 문서를 확인):

json
{  "context_servers": {    "narajangteo-prespec": {      "command": { "path": "npx", "args": ["-y", "@opendata-kr/narajangteo-prespec-mcp@latest"] },      "env": { "DATA_GO_KR_SERVICE_KEY": "발급받은_Decoding_키" }    }  }}
ChatGPT · 원격 전용 클라이언트

ChatGPT Developer Mode처럼 원격(HTTPS) MCP만 지원하는 클라이언트는 로컬 stdio 서버를 직접 붙일 수 없다. stdio→HTTP 브리지(mcp-proxy)로 이 서버를 HTTP로 띄우고 공개 HTTPS 엔드포인트(리버스 프록시·터널·호스팅)로 노출한 뒤, 그 URL을 커넥터로 등록한다.

bash
DATA_GO_KR_SERVICE_KEY=발급받은_Decoding_키 mcp-proxy --transport streamablehttp --port 8080 -- npx -y @opendata-kr/narajangteo-prespec-mcp@latest

http://127.0.0.1:8080/mcp를 공개 HTTPS로 노출하는 것은 사용자 몫이다. (mcp-remote는 반대로 stdio 클라이언트를 원격 서버에 붙일 때 쓰는 도구라 여기엔 맞지 않는다.)

발견성

이 서버는 MCP 레지스트리에 io.github.opendata-kr/narajangteo-prespec-mcp로 기술된다. registry.modelcontextprotocol.io를 지원하는 클라이언트에서 검색·설치할 수 있다.

환경변수

환경변수필수비밀기본값설명
DATA_GO_KR_SERVICE_KEY예예(없음)공공데이터포털 Decoding(원본) 인증키
DATA_GO_KR_BASE_URL아니오아니오https://apis.data.go.kr/1230000/ao/HrcspSsstndrdInfoService서비스 경로를 포함한 전체 URL 오버라이드

도구

5개 도구 모두 읽기 전용 조회다. 20개 오퍼레이션을 조회 방식에 따라 묶었다. 아래 파라미터는 모든 도구에 공통이다.

  • kind: string[]. 업무구분 배열: cnstwk(공사) servc(용역) thng(물품) frgcpt(외자). 미지정 시 전 구분 병렬 조회. 병렬 조회는 API 요청 4건을 소모하므로 업무구분을 알면 지정한다
  • page: number. 페이지 번호(기본 1)
  • pageSize: number. 페이지당 건수(기본 10, 최대 100)

search_prespecs

사전규격을 기간(등록/변경일시) 또는 사전규격등록번호로 조회한다. 단순 기간·번호 조회에 쓴다.

파라미터타입설명
startDatestring조회 시작일 YYYYMMDD
endDatestring조회 종료일 YYYYMMDD
dateTypestring기간 기준: regist(등록일시, 기본) change(변경일시)
specRegistNostring사전규격등록번호로 단건 조회(지정 시 기간보다 우선)

search_prespecs_by_institution

발주기관명·실수요기관명으로 사전규격을 조회한다. 특정 기관의 발주 예정 물량을 볼 때 쓴다.

파라미터타입설명
orderInstitutionstring발주기관명
demandInstitutionstring실수요기관명
startDatestring조회 시작일 YYYYMMDD
endDatestring조회 종료일 YYYYMMDD

search_prespecs_by_product

품명·세부품명(번호)으로 사전규격을 조회한다. 관심 품목의 사전규격을 찾을 때 쓴다.

파라미터타입설명
productNamestring품명(사업명)
detailProductCodestring세부품명번호
detailProductNamestring세부품명
startDatestring조회 시작일 YYYYMMDD
endDatestring조회 종료일 YYYYMMDD

search_prespecs_advanced

발주기관·수요기관·품명·참조번호·SW사업여부 등 복합 조건으로 사전규격을 조회한다. 여러 필터를 동시에 걸 때 쓴다.

파라미터타입설명
startDatestring접수 시작일 YYYYMMDD
endDatestring접수 종료일 YYYYMMDD
specRegistNostring사전규격등록번호로 조회(지정 시 최우선)
refNostring참조번호로 조회(지정 시 기간보다 우선)
noticeInstitutionstring발주기관명
demandInstitutionstring수요기관명
productNamestring품명(사업명)
detailProductCodestring세부품명번호
swBusinessYnstringSW사업 여부(Y/N)

조회 우선순위는 사전규격등록번호 > 참조번호 > 접수일시 순이다. 세부품명(detailProductName) 검색은 이 API가 지원하지 않는다. 세부품명으로 찾으려면 search_prespecs_by_product를 쓴다.

get_prespec_opinions

특정 사전규격(사전규격등록번호)에 달린 규격서 의견·답변 목록을 조회한다.

파라미터타입설명
specRegistNostring사전규격등록번호
startDatestring조회 시작일 YYYYMMDD
endDatestring조회 종료일 YYYYMMDD

모든 도구의 반환은 { query, results }다. results는 업무구분별로 { totalCount, invalidCount, items }를, 실패 시 해당 구분에 { error }를 담는다. invalidCount는 응답 스키마 검증에서 탈락해 items에서 제외된 건수다. 0이 아니면 API 응답 필드가 예고 없이 바뀐 신호이므로 이슈로 알려주면 반영한다.

응답 필드

Prespec (①②③④ 공통)

specRegistNo(사전규격등록번호), productName(품명/사업명), assignedBudget(배정예산액), orderInstitution(발주기관), demandInstitution(실수요기관), registDt(등록일시), changeDt(변경일시), opinionCloseDt(의견등록마감), receiptDt(접수일시), refNo(참조번호), bidNoticeList(관련 입찰공고번호 목록), businessDivision(업무구분), deliveryDays(납품기한일수), deliveryDeadline(납품기한), officialName(담당자), officialTel(담당자 전화), swBusinessYn(SW사업 여부), productDetailList(세부품목 배열: itemSeq·detailProductNo·detailProductName. 공사·용역은 빈 배열).

PrespecOpinion (⑤)

specRegistNo, refNo, opinionNo(의견번호), replyNo(답변번호), opinionTitle(제목), opinionContent(내용), writerCorp(작성업체), writerName(작성자), inputDt(등록일시), writerTel, writerEmail, opinionFileUrls(첨부파일 URL 배열).

개발

bash
nvm use            # Node 24pnpm installpnpm test          # vitestpnpm typecheck     # tsc --noEmitpnpm build         # tsup, dist/ 생성

문제 해결

  • 인증 오류(코드 30): Encoding 키를 넣으면 이중 인코딩으로 실패한다. Decoding(원본) 키를 쓴다. 서버가 시작 시 Encoding 키로 보이면 경고 로그를 남긴다.

  • 결과코드 메시지: 트래픽 초과, 인증키 만료 등 data.go.kr 결과코드는 한국어 메시지로 정규화되어 반환된다.

  • 도구 동작 점검: MCP inspector로 직접 호출해 볼 수 있다.

    bash
    npx @modelcontextprotocol/inspector npx -y @opendata-kr/narajangteo-prespec-mcp

라이선스

MIT

來源:README.md,提交 795284a

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分