Skip to content
제품 목록

준비 중MCP 서버 모음

vibe-mcp

DB·Git·공시를 에이전트에게 안전하게 여는 MCP 서버 모음

mcp-* 디렉토리 하나가 서버 하나. 루트 Makefile 하나로 빌드·테스트·실행합니다.

  • MCP
  • TypeScript
  • Make

디렉토리 하나에 서버 하나

make new NAME=jira 로 같은 규칙의 서버 뼈대가 생깁니다.

읽기 전용 DB 조회

mcp-mysql은 SELECT만 통과시키고 민감 컬럼을 가립니다.

설정 파일 하나로 연결

make registry 가 Claude Code·Cursor용 .mcp.json을 만듭니다.

이런 문제를 풉니다 ​

MCP 서버를 하나씩 만들다 보면 저장소마다 인증, 로그, 테스트, 클라이언트 설정 방법이 달라집니다. 새 서버를 붙일 때마다 같은 결정을 다시 합니다. 그래서 규칙은 루트에 한 번, 서버는 디렉토리 하나로 정했습니다.

text
vibe-mcp/
├── Makefile                 # 모든 mcp-*를 같은 명령으로 다룸
├── mcp.schema.json          # 각 서버 manifest 형식
├── shared/                  # 공통: 설정 로딩, 감사 로그, 결과 크기 제한
├── templates/mcp-ts/        # make new NAME=... 의 뼈대
├── mcp-mysql/               # 읽기 전용 SQL 조회
├── mcp-git/                 # 저장소 이력·diff 조회
├── mcp-docs/                # Markdown 문서 검색
├── mcp-dart/                # OpenDART 공시 조회 (vibe-post-it와 공유)
└── mcp-slack/               # Block Kit 메시지 전송

각 mcp-* 디렉토리는 세 가지만 지키면 됩니다.

  1. mcp.yaml manifest: 이름, 전송 방식(stdio·HTTP), 도구 목록, 위험 등급(read·write·external)
  2. 자체 Makefile에 build, test, run 타깃
  3. README.md에 도구별 입력·출력 예시

동작 방식 ​

make
SERVERS := $(patsubst %/,%,$(wildcard mcp-*/))

list:                    ## 서버 목록과 위험 등급
	@for s in $(SERVERS); do printf "%-14s %s\n" $$s "$$(yq '.risk' $$s/mcp.yaml)"; done

build test lint:         ## 모든 서버에 같은 타깃 실행
	@for s in $(SERVERS); do $(MAKE) -C $$s $@ || exit 1; done

run:                     ## make run MCP=mysql
	@$(MAKE) -C mcp-$(MCP) run

inspect:                 ## MCP Inspector로 도구 확인
	npx @modelcontextprotocol/inspector $(MAKE) -C mcp-$(MCP) run

new:                     ## make new NAME=jira
	cp -r templates/mcp-ts mcp-$(NAME) && sed -i "s/__NAME__/$(NAME)/g" mcp-$(NAME)/mcp.yaml

registry:                ## 클라이언트 설정(.mcp.json) 생성
	node scripts/registry.mjs $(SERVERS) > .mcp.json

mcp-mysql 안전장치 ​

DB를 에이전트에게 여는 서버라 가장 먼저, 가장 엄격하게 만듭니다.

위험막는 방법
데이터 변경읽기 전용 DB 계정 + SQL 파서로 SELECT·SHOW·EXPLAIN만 통과
무거운 쿼리MAX_EXECUTION_TIME 힌트, 결과 행 수 상한
민감 컬럼컬럼 이름 패턴(password, token, ssn) 마스킹
접속 정보 노출DSN은 환경변수로만, 도구 결과·로그에 출력하지 않음
추적 불가모든 호출을 shared 감사 로그에 기록(질의 해시, 행 수, 소요 시간)
클라이언트는 registry로 만든 설정 하나로 필요한 서버만 켭니다. 모델 호출은 GoVail Gateway를 거칩니다.

로드맵 ​

  1. 저장소 생성, 루트 Makefile과 템플릿
  2. mcp-mysql 구현과 테스트(쓰기 쿼리 거부 케이스부터)
  3. mcp-dart: vibe-post-it 사업보고서 비교와 연결
  4. write 등급 서버는 사람 승인을 거치도록 engine-process 승인 게이트와 연결

업무에 AI를 붙여 실제로 돌려봅니다.