AutoPeças MCP Server
N8N을 활용한 MCP
n8n과 함께하는 mcp-autopeças
MCP 프로토콜을 통해 Google Sheets 시트의 탭을 읽고 쓰는 Python 기반 MCP 서버입니다. Claude Desktop, Claude Code 및 모든 MCP 클라이언트(N8N의 mcpClientTool 노드 포함)와 호환됩니다.
이 서버는 단일 프로세스 내에서 두 개의 도메인을 다루며, 각 도메인은 동일한 스프레드시트의 한 탭에 매핑됩니다.
도메인 | 탭 | 도구(Tools) |
자동차 부품 (AutoMax) |
| 6개 도구 — 읽기 전용 |
병상 (Leitos) |
| 9개 도구 — 읽기, 쓰기, 이메일 및 SMS |
사전 요구 사항
Python 3.12+
uv(권장) 또는pip스프레드시트에 편집자(Editor) 권한이 있는 Google 서비스 계정 (
leitos_atualizar_status_limpeza에 필요)
설치
cd mcp-alura
uv sync # ou: pip install -e .설정
1. Google 자격 증명 (서비스 계정)
프로젝트 생성 → APIs & Services → Google Sheets API 활성화
서비스 계정(Service Account) 생성 → JSON 키 생성 및 다운로드
서비스 계정 이메일에 스프레드시트 편집자(Editor) 권한 부여
2. 환경 변수
cp .env.example .env.env 파일을 최소한 아래와 같이 편집하세요:
SPREADSHEET_ID=1zt4h2v3ldK3zELNNmvyn02elEB9dHdfXD5q85ZYh2k0
AUTOPECAS_SHEET_NAME=AutoPeças
LEITOS_SHEET_NAME=Leitos
GOOGLE_CREDENTIALS_PATH=/caminho/para/service_account.json
# Para leitos_enviar_notificacao (e-mail):
GMAIL_USER=setor@hospital.com.br
GMAIL_APP_PASSWORD=xxxx_xxxx_xxxx_xxxx
# Para leitos_enviar_sms:
TWILIO_ACCOUNT_SID=ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_AUTH_TOKEN=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
TWILIO_FROM_NUMBER=+18647139932
SPREADSHEET_ID는 URL에서 확인할 수 있습니다:docs.google.com/spreadsheets/d/**{ID}**/edit
예상 스프레드시트 구조
AutoPeças 탭:
코드 | 이름 | 카테고리 | 브랜드 | 가격 | 재고 | 공급업체 | 설명 | 위치 |
F-1023 | 오일 필터 | 엔진 | Bosch | 35.90 | 48 | AutoDist | ... | 선반 A3 |
Leitos 탭 — N8N 노드 스키마에 의해 확인된 열:
ID_Leito | 방 | 방_유형 | 점유_상태 | 청소_상태 | 환자 | 마지막_청소 |
A-101 | 10호실 | 병동 | 점유됨 | 완료 | João Silva | 2025-03-28 |
UTI-05 | 북쪽 중환자실 | 중환자실 | 사용 가능 | 대기 중 | — | 2025-03-27 |
열 이름은
.env파일에서COL_*및LEITOS_COL_*로 조정할 수 있습니다.
자동차 부품 도구
도구 | 기능 |
| 이름, 코드 또는 설명으로 검색 |
| 페이지네이션 및 필터가 포함된 카탈로그 나열 |
| 코드로 부품의 전체 세부 정보 확인 |
| 부품 수가 포함된 카테고리 나열 |
| 코드별 재고 또는 카테고리별 요약 확인 |
| 부품 수가 포함된 제조사 나열 |
병상 관리 도구
N8N 에이전트(mcp-all-nodes.json)와 Python 도구 간의 매핑:
N8N 에이전트 | 필터 | 대응 도구 |
경영진 에이전트 | 전체 접근 |
|
병동 에이전트 |
|
|
중환자실 에이전트 |
|
|
모든 에이전트 | — |
|
N8N 쓰기 노드 |
|
|
도구 | 읽기/쓰기 | 기능 |
| 읽기 | 모든 병상 나열; |
| 읽기 | 고정 필터 |
| 읽기 | 고정 필터 |
| 읽기 |
|
| 읽기 |
|
| 읽기 | 대시보드: |
| 쓰기 |
|
| 외부 | Gmail SMTP를 통한 이메일 전송 |
| 외부 | Twilio REST API를 통한 SMS 전송 |
점유 상태(Status_Ocupacao): Disponível(사용 가능) 🟢 · Ocupado(점유됨) 🔴 · Reservado(예약됨) 🔵
청소 상태(Status_Limpeza): Concluído(완료) ✅ · Pendente(대기 중) ⚠️ · Em Andamento(진행 중) 🔄
방 유형: Enfermaria(병동) · UTI(중환자실) · Apartamento(아파트형) · Semi-Intensivo(준중환자실)
이메일 전송 설정
leitos_enviar_notificacao 도구는 앱 비밀번호를 사용하는 Gmail SMTP를 사용합니다:
Google 계정에서 2단계 인증 활성화
"Email"용 비밀번호를 생성하여
.env의GMAIL_APP_PASSWORD에 붙여넣기
SMS 전송 설정
leitos_enviar_sms 도구는 Twilio REST API를 사용합니다:
twilio.com에서 계정 생성
대시보드에서
Account SID및Auth Token획득발신 번호를 등록하거나 구매하고
TWILIO_FROM_NUMBER설정
Claude Desktop에서 사용
~/Library/Application Support/Claude/claude_desktop_config.json에 추가:
{
"mcpServers": {
"hospital-mcp": {
"command": "uv",
"args": ["run", "--project", "/caminho/para/mcp-alura", "python", "server.py"],
"env": {
"SPREADSHEET_ID": "1zt4h2v3ldK3zELNNmvyn02elEB9dHdfXD5q85ZYh2k0",
"AUTOPECAS_SHEET_NAME": "AutoPeças",
"LEITOS_SHEET_NAME": "Leitos",
"GOOGLE_CREDENTIALS_PATH": "/caminho/para/service_account.json",
"GMAIL_USER": "setor@hospital.com.br",
"GMAIL_APP_PASSWORD": "xxxx_xxxx_xxxx_xxxx",
"TWILIO_ACCOUNT_SID": "ACxxxxxxxx",
"TWILIO_AUTH_TOKEN": "xxxxxxxx",
"TWILIO_FROM_NUMBER": "+18647139932"
}
}
}
}Claude Code에서 사용
claude mcp add hospital-mcp -- uv run --project /caminho/para/mcp-alura python server.pyN8N에서 사용 (MCP Client)
서버 엔드포인트를 가리키는 MCP Client Tool 노드를 구성하세요.
세 개의 N8N 에이전트는 동일한 Python MCP 서버를 공유할 수 있으며,
각 에이전트는 include: selected를 통해 자신의 역할에 맞는 도구만 사용합니다.
로컬 테스트
uv run python server.pyMCP Inspector로 15개의 도구를 검사하려면:
npx @modelcontextprotocol/inspector uv run python server.pyResources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joao-parana/mcp-alura'
If you have feedback or need assistance with the MCP directory API, please join our Discord server