본문 바로가기
A.I/Claude Code

MCP(Model Context Protocol) nonosXsemo에 적용해보기!

by 태하팍 2026. 4. 2.
반응형

안녕하세요!
태하팍 입니다.
오늘은 MCP를 nonos와 semo에 적용해보겠습니다.
tip. skill중에 superpowers > brainstorming이 있는데 사용하면 무척 유용합니다 ㅎ

MCP란?

Anthropic이 주도하여 만든 오픈 프로토콜로,
AI 모델(클라이언트)이 외부 도구와 데이터소스(서버)에 표준화된 방식으로
연결할 수 있게 해줍니다.


핵심 개념

클라이언트-서버 구조
  - MCP Host: Claude Desktop, Claude Code 등 AI가 동작하는 앱
  - MCP Client: Host 내에서 서버와 1:1 연결을 관리
  - MCP Server: 외부 도구/데이터를 노출하는 프로그램 (이것을 만들려는 것)

MCP 서버가 제공할 수 있는 3가지

MCP로 nonos 송장처리 해보기

마무리 어떻게 해야할지 선택!

보안쪽에서 AWS관련해서 연락와서..ㅠㅠ 지양하는걸루..SEMO는 PASS~

결과

엑셀다운로드!


nonos+semo에 적용해보기

단일 MCP 서버 + API 직접 호출
  MCP 서버가 nonos/semo REST API를 직접 호출하는 구조.
  사용자 → Claude → MCP 서버 → nonos API → semo API
                        ↕
                    엑셀 파싱 (openpyxl)

  장점: 구현 간단, 기존 API 그대로 활용, 유지보수 쉬움
  단점: nonos/semo에 API 키 인증 추가 필요

아키텍처

⏺ 설계 1/4: 전체 아키텍처
  사용자: "이 엑셀로 송장처리해줘" + 파일 첨부
           │
      Claude Desktop / Claude Code
           │
      MCP Server (Python)
      ├── Tool: process_invoice
      │   ├── 1. 엑셀 파일 읽기 (openpyxl)
      │   ├── 2. 헤더 분석 → 컬럼 매핑 후보 반환
      │   ├── 3. 사용자 확인 후 파싱
      │   ├── 4. Nonos API: 송장 매칭 요청
      │   ├── 5. 매칭 결과를 사용자에게 보여주고 확인
      │   ├── 6. Nonos API: 매칭 확정 + 네이버 발송
      │   └── 7. Semo API: 같은 송장 데이터 저장
      └── 설정: 환경변수 (API 키, 이메일, 서버 URL)

설계 2/4: MCP Tools 설계
  총 5개의 tool로 나눕니다:

 대화 흐름 예시
  사용자: "이 엑셀로 송장처리해줘" + 파일
  Claude: [read_invoice_excel 호출]
  Claude: "컬럼을 이렇게 매핑했습니다:
    - B열 '운송장번호' → 송장번호
    - D열 '받는분' → 수취인
    - E열 '받는분HP' → 전화번호
    맞나요?"
  사용자: "어"
  Claude: [parse_invoice_excel 호출]
  Claude: [match_invoices 호출]
  Claude: "매칭 결과입니다:
    - 자동 매칭: 45건
    - 매칭 실패: 3건 (홍길동/010-1234-****, ...)
    진행할까요?"
  사용자: "진행해"
  Claude: [confirm_and_dispatch 호출]
  Claude: [save_to_semo 호출]
  Claude: "완료! Nonos 45건 발송, Semo 저장 완료.
     실패 3건은 문자이거나 혹은 이슈 확인 후 수동처리 해주세요.

설계 3/4: 인증 및 설정
  nonos/semo에 추가할 API 키 인증
  기존 네이버 OAuth와 별개로, MCP 전용 API 키 인증 미들웨어를 추가합니다:
  요청 헤더: X-API-Key: abc123
             X-User-Email: teri@example.com
  서버 측: API 키 검증 → 해당 이메일의 유저로 요청 처리
  MCP 서버 설정 파일
  {
    "mcpServers": {
      "nonos-semo": {
        "command": "python",
        "args": ["-m", "nonos_semo_mcp"],
        "env": {
          "NONOS_BASE_URL": "http://localhost:8080",
          "NONOS_API_KEY": "abc123",
          "NONOS_USER_EMAIL": "teri@example.com",
          "SEMO_BASE_URL": "http://localhost:8081",
          "SEMO_API_KEY": "def456",
          "SEMO_USER_EMAIL": "teri@example.com"
        }
      }
    }
  }
  Claude Desktop과 Claude Code 모두 이 설정으로 연결합니다.
  프로젝트 구조
  mcpProject/
  ├── src/
  │   └── nonos_semo_mcp/
  │       ├── __init__.py
  │       ├── __main__.py          # 진입점
  │       ├── server.py            # MCP 서버 정의 + tool 등록
  │       ├── tools/
  │       │   ├── read_excel.py    # read_invoice_excel
  │       │   ├── parse_excel.py   # parse_invoice_excel
  │       │   ├── match.py         # match_invoices
  │       │   ├── dispatch.py      # confirm_and_dispatch
  │       │   └── save_semo.py     # save_to_semo
  │       └── clients/
  │           ├── nonos_client.py  # Nonos REST API 클라이언트
  │           └── semo_client.py   # Semo REST API 클라이언트
 ├── pyproject.toml
  └── README.md

⏺ 설계 4/4: 에러 처리 및 엣지 케이스

  에러 시나리오별 처리

핵심 원칙

  - Nonos 먼저, Semo는 후속 — Nonos 처리가 실패하면 Semo로 진행하지 않음
  - Semo 실패는 정산에 직접 영향 — 반드시 경고하고 재시도 옵션 제공
  - 매 단계마다 사용자 확인 — 자동으로 넘어가지 않고, Claude가 결과를 보여주고 승인 후 진행전체 설계 정리:

요약

  - 언어: Python (MCP SDK + openpyxl)
  - 구조: 단일 MCP 서버 → nonos/semo REST API 호출
  - 인증: API 키 + 이메일 (환경변수)
  - Tool 5개: read_excel → parse_excel → match → dispatch → save_semo
  - 1차 범위: 송장처리만
  - 실행환경: Claude Desktop + Claude Code 둘 다

⏺ Plan 작성 완료. docs/superpowers/plans/2026-03-31-nonos-semo-mcp.md에 저장했습니다.
  총 12개 Task:
  1. 프로젝트 설정 (pyproject.toml, config)
  2. Nonos API 클라이언트
  3. Semo API 클라이언트
  4. read_invoice_excel tool
  5. parse_invoice_excel tool
  6. match_invoices tool
  7. confirm_and_dispatch tool
  8. save_to_semo tool
  9. MCP 서버 조립
  10. Nonos API 키 인증 미들웨어
  11. Semo API 키 인증 미들웨어
  12. 통합 테스트 & README

⏺ 실행방식

 Task 1: Project Setup… (2m 4s · ↓ 3.3k tokens · thought for 5s)
  ⎿  ◼ Task 1: Project Setup
     ◻ Task 2: Nonos API Client
     ◻ Task 3: Semo API Client
     ◻ Task 4: read_invoice_excel Tool
     ◻ Task 5: parse_invoice_excel Tool
     ◻ Task 6: match_invoices Tool
     ◻ Task 7: confirm_and_dispatch Tool
     ◻ Task 8: save_to_semo Tool
     ◻ Task 9: MCP Server Assembly
     ◻ Task 10: Nonos API Key Auth Middleware


semo까지 확인하고 싶었는데..일단 MCP가 뭐하는 친구인지 알았으니 PASS~
나중에는 여러 ai들이 발주,송장, 고객응대 등 다 할수 있을것 같다.
물론 미리 만들어놓은 Product들의 api과 불편함들을 해소하기 위한 좋은 기능들이 뒷받침되어야할 것이다.

끝~

반응형

'A.I > Claude Code' 카테고리의 다른 글

개발 시 Claude Code Model 선택은?  (0) 2026.03.10
Claude Code를 잘 쓰고 있나요?  (0) 2026.03.09
Claude Code : Serena Plug-In  (0) 2026.01.27