Skip to main content
Glama
NologyAcu

MCP4Acumatica

by NologyAcu

MCP4Acumatica

면책 조항: 이 프로젝트는 독립적인 커뮤니티 기반 통합 프로젝트이며, Acumatica, Inc.와 제휴, 보증 또는 지원되지 않습니다. "Acumatica"는 Acumatica, Inc.의 등록 상표입니다. Acumatica 명칭과 API의 사용은 상호 운용성을 위한 목적으로만 사용됩니다.

Claude를 Acumatica ERP 2025 R2에 연결하는 원격 Model Context Protocol(MCP) 서버입니다. Cloudflare Workers에서 실행되며, 각 사용자가 자신의 Acumatica 인스턴스에 대해 OAuth 인증을 사용합니다.

각 사용자는 자신의 Acumatica 자격 증명으로 인증합니다. 사용자의 Acumatica 역할이 접근할 수 있는 레코드를 결정합니다. MCP 서버는 추가로 특정 Acumatica 역할을 요구하며, 동의 중간 페이지를 표시하고, 데이터가 AI 모델에 도달하기 전에 민감한 필드를 자동으로 가립니다.

기능

  • 49개의 도구 -- 38개의 읽기 전용 조회 + 6개의 유틸리티/검색 + 4개의 스키마 지식 + 1개의 쓰기 도구(고객 생성/업데이트, 기본적으로 비활성화됨) (자세한 내용은 사용 가능한 도구 참조)

  • 사용자별 OAuth -- 사용자가 자신의 Acumatica 자격 증명(또는 SSO)으로 로그인

  • 역할 기반 접근 -- Acumatica의 보안 모델이 각 사용자가 볼 수 있는 내용을 제어

  • 접근 게이트 -- 지정된 카나리 일반 문의(Generic Inquiry)를 읽을 수 있는 사용자만 연결 가능 (원하는 대로 제한 가능; MCP Access와 같은 마커 역할이 권장됨)

  • 동의 중간 페이지 -- 사용자가 도구에 접근하기 전에 AI 데이터 처리를 승인해야 함

  • 민감한 필드 가리기 -- 주민등록번호, 은행 계좌, 급여 및 기타 개인 식별 정보(PII) 필드는 서버를 떠나기 전에 자동으로 가려짐

  • 속도 제한 -- 기본적으로 사용자당 3개의 동시 요청 및 분당 40개의 요청, 관리 콘솔에서 모두 조정 가능. 모든 슬롯이 사용 중인 요청은 바로 실패하지 않고 잠시 기다리며, 거부는 { error: "rate_limited", retryAfterSeconds, actionRequired } 구조화된 봉투를 반환하여 AI가 재시도 대신 정확히 얼마나 기다려야 하는지 알려줌

  • 페이지네이션 거부 -- 목록/쿼리 도구가 레코드 상한에 도달하면 { truncated, paginationSupported: false, actionRequired } 구조화된 봉투를 반환하여 AI가 도구를 다시 호출하는 대신 사용자에게 더 좁은 필터를 요청하도록 지시

  • 구조화된 감사 로깅 -- 모든 도구 호출, 인증 이벤트 및 필드 가리기가 기록됨

  • 관리 콘솔 -- /docs/admin의 웹 기반 관리 인터페이스로, 재배포 없이 로그를 보고 런타임 설정을 관리

  • 장기 로그 보존 -- Cloudflare Logpush를 통한 R2 기반 로그 저장소, 검색 가능한 로그 뷰어

Related MCP server: MCP4Acumatica

아키텍처

Claude (claude.ai / Desktop / API)
    |
    v  MCP over streamable-http
+----------------------------------+
|  Cloudflare Worker               |
|  OAuth 2.1 Provider              |
|    /authorize -> Acumatica login |
|    /callback  <- Acumatica       |
|    (access gate + OIDC userinfo) |
|    /consent   -> AI data consent |
|    /token, /register (DCR)       |
|    /mcp -> McpAgent DO (49 tools)|
+---------------+------------------+
                |  Bearer token (per-user)
                v
        Acumatica 25R2 SaaS
        Contract-Based REST API
        Default/25.200.001

사전 요구 사항

  • Node.js >= 18

  • Cloudflare 계정 (Durable Objects를 위한 Workers 유료 요금제)

  • Acumatica 2025 R2 인스턴스:

    • SM303010에서 인가 코드(Authorization Code) OAuth 2.0 흐름으로 구성된 연결된 애플리케이션(Connected Application) (범위는 앱에 구성되지 않고 요청 시 서버에서 전송됨)

    • Workers의 /callback 엔드포인트를 가리키는 리디렉션 URI

    • MCPAccess 일반 문의(Generic Inquiry) (SM208000) -- **OData를 통해 노출(Expose via OData)**이 활성화된 간단한 카나리 GI; 로그인 접근 게이트는 사용자가 이를 읽을 수 있는지 확인합니다 (자세한 내용은 아키텍처 문서 참조). GI 이름은 ACUMATICA_CANARY_GI를 통해 구성 가능.

    • 해당 GI를 읽을 수 있는 사용자를 제한하는 방법 -- 권장 방식은 허용된 사용자에게만 할당된 마커 MCP Access 역할(SM201005)입니다.

설정

세 가지 설치 경로가 있습니다. 세 경로 모두 동일한 Acumatica 측 사전 요구 사항에 의존합니다 — 어떤 경로를 선택하든 먼저 해당 작업을 완료하십시오 (아래 "Acumatica 측 구성" 참조).

경로

가장 적합한 대상

터미널 필요?

A. Cloudflare에 배포 버튼

완전한 GUI 설치를 원하는 사용자

아니요

B. 한 줄 설치 프로그램

이미 git / node / npm이 있는 개발자

예 (한 명령)

C. 수동 설정

각 단계를 검토하려는 모든 사용자

경로 A — Cloudflare에 배포 버튼 (터미널 불필요)

Deploy to Cloudflare

버튼을 클릭하면 이 저장소를 GitHub 계정으로 포크하고, wrangler.jsonc를 읽고, KV 네임스페이스와 R2 버킷을 자동 생성하고, 비밀을 묻고, 배포합니다. 단계별:

  1. 버튼을 클릭하세요. Cloudflare에서 로그인(또는 계정 생성) 및 GitHub 포크 권한 부여를 요청합니다.

  2. 바인딩 확인. KV 네임스페이스를 두 번 생성하라는 메시지가 표시됩니다 — 한 번은 TOKEN_STORE 바인딩(앱 데이터: 토큰, OAuth 상태, 캐시, 구성, 관리자 세션)용, 다른 한 번은 OAUTH_KV(OAuth 라이브러리에서 내부적으로 사용)용입니다. 이는 정상입니다: 두 개의 별도 바인딩이며 키를 공유하지 않습니다.

    ⚠️ 두 네임스페이스에 다른 이름을 지정하세요 (예: TOKEN_STOREmcp4acumatica-app, OAUTH_KVmcp4acumatica-oauth). Cloudflare의 자동 프로비저닝은 Worker 이름에서 기본 제목을 파생하므로 두 필드 모두 기본적으로 mcp4acumatica로 설정됩니다 — 동일한 제목으로 두 개의 네임스페이스를 생성하면 "Cannot provision a KV Namespace with the title … because it already exists." 오류가 발생합니다. 이미 이 오류가 발생했다면, 미완성된 네임스페이스가 남아 있는 것입니다: Storage & Databases → KV로 이동하여 고아가 된 mcp4acumatica 네임스페이스를 삭제한 다음, 두 개의 구별되는 이릠름으로 재시도하십시호. (Cloudflare의 GUI 자동 프로비저닝은 두 바인딩을 하나의 네임스페이스에 지정할 수 없으며, 구성에서 사전에 구별된 이름을 설정할 수 없습니다 — 따라서 구별된 이름을 가진 두 개의 별도 네임스페이스가 방법입니다. GUI가 계속 실패하면 아래 터미널 설치 경로를 사용하십시오: setup.sh는 하나의 네임스페이스를 생성하고 두 바인딩을 모두 여기에 연결합니다.)

    R2 버킷(mcp4acumatica-logs, mcp4acumatica-index)도 같은 방식으로 생성되지만, wrangler.jsonc에 이름이 고정되어 있으므로 충돌하지 않습니다.

  3. 비밀 설정. 메시지가 표시면 다음을 붙여넣으세요:

    • ACUMATICA_CLIENT_ID — 연결된 애플리케이션(SM303010)에서

    • ACUMATICA_CLIENT_SECRET — 동일한 화면에서

    • COOKIE_ENCRYPTION_KEY — 브라우저 콘솔을 열고 다음을 실행:

      [...crypto.getRandomValues(new Uint8Array(32))].map(b => b.toString(16).padStart(2,'0')).join('')

      결과로 나온 64자리 16진수 문자열을 복사합니다.

    • ADMIN_SECRET — 기억할 수 있는 비밀번호 (/docs/admin 콘솔 보호). 선호하는 것이 없으면 [...crypto.getRandomValues(new Uint8Array(24))].map(b => b.toString(16).padStart(2,'0')).join('')를 실행하여 생성하세요.

  4. 배포. Cloudflare가 포크를 Workers Builds에 연결하고 첫 번째 배포를 푸시합니다.

  5. Acumatica 변수 업데이트. 배포가 완료되면 Cloudflare 대시보드에서 Workers & Pages → mcp4acumatica → Settings → Variables and Secrets를 열고 다음을 편집합니다:

    • ACUMATICA_URL (예: https://yourcompany.acumatica.com)

    • ACUMATICA_TENANT (로그인 회사)

    • 선택적으로 ACUMATICA_MAX_RECORDS, ACUMATICA_CANARY_GI, REDACT_PATTERNS, REDACT_SKIP Save and Deploy를 클릭하면 Cloudflare가 새 값으로 재배포합니다.

  6. 연결된 애플리케이션에 리디렉션 URI 추가. 이제 Workers가 https://mcp4acumatica.<your-account>.workers.dev에서 접근 가능합니다. Acumatica의 SM303010 화면에서 리디렉션 URI에 https://<that-host>/callback을 추가하세요. (대신 사용자 정의 도메인을 사용하려면 아래 "사용자 정의 도메인" 참조)

  7. 배포 테스트. https://<your-host>/docs/admin/preflight를 방문하여 ADMIN_SECRET으로 로그인하고 사전 점검 진단을 실행합니다. Acumatica 연결, OIDC 검색 엔드포인트, 연결된 앱 자격 증명, 테넌트 경로, 계약 API 버전을 확인합니다 — 잘못된 구성이 있으면 이름으로 알려줍니다.

이후 Claude가 연결할 수 있습니다 (아래 "Claude 연결" 참조).

경로 B — 한 줄 설치 프로그램 (터미널)

이미 git, node, npm이 있다면 다음을 실행하세요:

curl -fsSL https://mcp4acumatica.hallboys.com/install.sh | bash

저장소를 클론하고, 종족성 설치, ./setup.sh 실행. 설정 스크립트는 제공해야 할 Acumatica 값(URL, 테넌트, 연결된 앱 클라이언트 ID 및 시크릿)을 묻고, 암호화 비밀을 자동 생성하고, KV 네임스페이스와 R2 버킷을 생성하고, 시크릿을 업로드하고, 배포하고, 사전 점검을 실시합니다.

스크립트를 먼저 검토하려면:

curl -fsSL https://mcp4acumatica.hallboys.com/install.sh -o install.sh
less install.sh   # read it
bash install.sh   # then run

경로 C — 수동 설정 (터미널)

1. 클론 및 설치

git clone https://github.com/hallboys/MCP4Acumatica.git
cd MCP4Acumatica
npm install

2. KV 네임스페이스 생성

npx wrangler kv namespace create TOKEN_STORE

출력에서 네임스페이스 ID를 기록한 다음 wrangler.jsonc에 붙여넣습니다. 동일한 ID가 TOKEN_STOREOAUTH_KV 바인딩 모두에 사용됩니다.

3. Wrangler 구성

wrangler.jsonc는 배포 템플릿으로 저장소에 추적됩니다. 내부에서 편집하고 다음을 입력합니다:

  • 2단계의 KV 네임스페이스 ID (TOKEN_STOREOAUTH_KV 바인딩 모두 — 동일한 ID)

  • ACUMATICA_URL — Acumatica 인스턴스 URL (예: https://yourcompany.acumatica.com)

  • ACUMATICA_TENANT — Acumatica 회사/테넌트 이름

로컬 값을 git status에서 제외하려면(여전히 충돌 없이 업데이트를 가져올 수 있음):

git update-index --skip-worktree wrangler.jsonc

4. 시크릿 설정

npx wrangler secret put ACUMATICA_CLIENT_ID
npx wrangler secret put ACUMATICA_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEY      # use `openssl rand -hex 32`
npx wrangler secret put ADMIN_SECRET                # any password — protects /docs/admin

5. 배포

npx wrangler deploy

6. 로컬 개발 (선택 사항)

cp .dev.vars.example .dev.vars
# Edit .dev.vars with your Acumatica credentials
npx wrangler dev

Acumatica 측 구성

이러한 단계는 선택한 설치 경로에 관계없이 필요합니다. 자동화할 수 없습니다 — Acumatica의 API가 이를 노출하지 않습니다.

연결된 애플리케이션 (SM303010)

  1. Acumatica에서: 시스템 > 통합 > 연결된 애플리케이션 (SM303010).

  2. 새 연결된 애플리케이션을 생성합니다.

  3. OAuth 2.0 흐름인증 코드로 설설정합니다.

  4. 리디렉션 URI 추추가: https://<your-worker-url>/callback (*.workers.dev 호스트 이름 또는 사자 정의 도메인 사용).

  5. 클라이언트 ID클라이언트 시크릿을 기록합니다 — 배포 중에 시크릿으로 제공됩니다.

여기서 구성할 범위 필드는 없습니다. OAuth 범위 (api openid profile email offline_access, Acumatica가 리프레시 토큰을 발급하게 하는 offline_access 포함)는 권한 부여 요청에서 MCP 서버가 전송합니다 — 연결된 애플리케이션에서 설정되지 않습니다.

접근 게이트: 카나리 일반 문의 (SM208000, SM201005)

사용자가 AI 도구에 접근하기 전에 로그인 흐름은 접근 게이트를 실시합니다: OData를 통해 간단한 카나리 일반 문의를 리하고 사용자의 토큰이 그것을 읽을 수 있느지 확인합니다 (200 → 허용, 403 → 거부). 서버는 Acumatica 역할 맴버쉽을 검사하지 않습니다 — 단지 "이 GI를 볼 수 있습니까?"만 묻습니다. 보안 모델 선호에 따라 카나리 GI를 읽을 수 있는 사용자를 제한합니다; 마커 역할이 권장되는 가장 깔끔한 방법입니다.

  1. 카나리 GI 생성: 시스템 > 사용자 정의 > 일반 문의 (SM208000)MCPAccess라는 이릠름의 GI를 생성하고 임의의 간단한 리 (하나의 컬럼으으로 충분). OData를 통해 노출 활성화.

  2. 읽을 수 있는 사용자 제한 (권장: 마커 역할): 시스템 > 접근 권한 > 사용자 역할 (SM201005)MCP Access라는 역활을 생성하고 화면 권한 없음, MCPAccess GI만 해당 역활에 할당한 다으, AI 도우미 접근 권한이 있는 각 사용자에게 역활을 할당합니다. GI에 대한 OData 읽기 접근을 제어하는 다른 메커니즘도 작동합니다.

카나리 GI 이름은 ACUMATICA_CANARY_GI 변수를 통해 구성 가능합니다 (기본값 MCPAccess). Cloudflare 대시보드 (Variables and Secrets) 또는 wranggler.jsonc에서 편집합니다.

AI에 일반 문의 노출 (강력히 권장)

성숙한 Acumatica 인스턴스는 수백 개의 Generic Inquiry를 보유할 수 있으며, 대부분은 사람이 사용하는 화면(넓은 보고서 그리드, 대시보드, 임시 쿼리)을 위해 제작되었습니다. 이 모든 것을 어시스턴트에 노출하면 컨텍스트가 넘쳐나고 잘못된 인쿼리를 선택하게 되며, 더 나쁜 것은 OData를 통해 노출된 매개변수화된 GI가 조용히 잘못된 데이터를 반환한다는 점입니다. 매개변수 없이 쿼리되면 Acumatica는 오류 없이 기본/필터링되지 않은 행을 반환하며, 모델이 이를 감지할 수 없습니다. GI 노출 게이트는 이를 옵트인 방식으로 전환합니다. AI 에이전트가 쿼리하기에 실제로 유용하고 정확한 GI에 태그를 지정하면(ExposedToMCP) 모델은 해당 GI만 볼 수 있습니다.

이 게이트는 설정할 때까지 비활성화되어 있습니다. 서버는 실행되지만 레지스트리가 없으면 어시스턴트가 GI를 발견할 수 없습니다(acumatica_list_generic_inquiries가 아무것도 반환하지 않음. 사용자는 정확한 이름으로 GI를 실행할 수 있음). 설정을 하면 어시스턴트가 안전하게 발견할 수 있는 선별된 세트가 제공됩니다. 활성화는 일회성 Acumatica 커스터마이제이션 프로젝트입니다. acumatica/에 번들로 포함되어 있으며, 사용자 정의 필드 UsrExposedToMCP/UsrAIDescription(GIDesign) 및 UsrResAIDescription(GIResult)과 SM208000 양식 변경 사항을 추가하고, 그 다음 MCPGIs/MCPGIFields 피드 GI, MCP Access 역할에 대한 피드 읽기 권한, 그리고 노출하려는 GI 태깅이 필요합니다. docs/generic-inquiries.md를 참조하세요.

전체 근거, 노출할 GI 결정 방법, 단계별 설정은 Generic Inquiries 를 참조하세요.

사용자 정의 도메인 (선택 사항)

배포 시 기본적으로 *.workers.dev 호스트 이름이 제공됩니다. 브랜드 호스트 이름을 연결하려면:

  • Cloudflare 대시보드를 통해: Workers & Pages → mcp4acumatica → Settings → Domains & Routes → Add를 선택하세요. 도메인의 영역이 Cloudflare 계정에 있어야 합니다.

  • wrangler.jsonc를 통해: 파일 상단의 routes 블록 주석을 해제하고 patternzone_name을 편집한 후 재배포하세요.

호스트 이름을 변경하는 경우 SM303010에서 연결된 애플리케이션의 리디렉션 URI에 새 https://<host>/callback을 추가하는 것을 잊지 마세요.

Claude 연결하기

Claude.ai / Claude Desktop

  1. Settings > Connectors로 이동

  2. Add Connector를 클릭하고 URL 입력: https://<your-worker-url>/mcp

  3. 처음 사용 시 Acumatica 로그인 페이지로 리디렉션됩니다.

  4. 계정이 카나리 GI를 읽을 수 있는 경우(즉, 액세스 권한이 부여된 경우) AI 데이터 처리를 설명하는 동의 페이지가 표시됩니다.

  5. 동의를 확인하면 Claude가 49개 도구 모두에 액세스할 수 있습니다.

Claude Code (CLI)

claude mcp add acumatica-erp --transport streamable-http https://<your-worker-url>/mcp

API (Anthropic SDK 사용)

Anthropic API를 MCP와 함께 사용할 때 MCP 클라이언트를 https://<your-worker-url>/mcp로 지정하세요. 서버는 /register에서 동적 클라이언트 등록을 통한 OAuth 2.1을 지원합니다.

사용 가능한 도구

핵심

도구

설명

acumatica_get_customer

연락처, 신용 규칙, 잔액이 포함된 고객 레코드

acumatica_get_vendor

연락처, 조건, 세금 정보가 포함된 공급업체 레코드

acumatica_get_sales_order

라인 항목, 합계, 배송 정보가 포함된 판매 주문

재무 / 회계

도구

설명

acumatica_get_invoice

라인 항목 및 세금 세부 정보가 포함된 AR 송장

acumatica_get_bill

라인 항목 및 PO 연결이 포함된 AP 청구서

acumatica_get_journal_transaction

차변/대변 세부 정보가 포함된 GL 분개 배치

acumatica_get_payment

적용된 문서 및 주문이 포함된 AR 결제

acumatica_get_account

GL 계정과목표 조회

acumatica_get_check

이력이 포함된 AP 수표/공급업체 결제

재고 및 창고

도구

설명

acumatica_get_stock_item

가격, 창고 수량, 공급업체 정보가 포함된 재고 품목

acumatica_get_non_stock_item

비재고 품목 (서비스, 인건비, 비용)

acumatica_get_inventory_quantity_available

창고 간 실시간 가용 수량

acumatica_get_inventory_summary

창고별 집계 재고 잔액

acumatica_get_warehouse

위치 및 설정이 포함된 창고

acumatica_get_item_class

품목 분류 기본값

구매

도구

설명

acumatica_get_purchase_order

라인 항목, 공급업체, 합계가 포함된 PO

acumatica_get_purchase_receipt

수령 수량 및 PO 연결이 포함된 입고

프로젝트

도구

설명

acumatica_get_project

프로젝트 헤더, 상태, 재무 정보

acumatica_get_project_task

프로젝트 내 작업

acumatica_get_project_budget

실제 대비 예산 라인

acumatica_get_project_transaction

프로젝트 비용/수익 거래 세부 정보

서비스 및 현장

도구

설명

acumatica_get_case

SLA, 우선순위, 시간 추적이 포함된 지원 케이스

acumatica_get_service_order

세부 정보 및 약속이 포함된 현장 서비스 주문

acumatica_get_appointment

예약/실제 시간, 직원, 비용/이익

영업 및 CRM

도구

설명

acumatica_get_contact

주소, 전화번호, 소유자가 포함된 CRM 연락처

acumatica_get_business_account

통합 잠재 고객/고객/공급업체 레코드

acumatica_get_opportunity

제품 및 금액이 포함된 영업 파이프라인 딜

acumatica_get_lead

상태 및 출처가 포함된 마케팅 리드

acumatica_get_salesperson

수수료 설정이 포함된 영업 담당자

배송 및 이행

도구

설명

acumatica_get_shipment

패키지, 추적, 운임이 포함된 선적

acumatica_get_sales_invoice

SO/선적 연결이 포함된 판매 송장

HR 및 급여

도구

설명

acumatica_get_employee

연락처 및 재무 설정이 포함된 직원

acumatica_get_expense_claim

라인 항목 및 승인이 포함된 경비 보고서

acumatica_get_time_entry

프로젝트, 청구 가능/초과 근무 시간 추적

CRM 활동

도구

설명

acumatica_get_email

발신인/수신인/본문이 포함된 이메일 활동

acumatica_get_event

참석자가 포함된 일정 이벤트

acumatica_get_activity

일반 CRM 활동

acumatica_get_task

관련 활동이 포함된 CRM 작업

유틸리티 / 검색

도구

설명

acumatica_run_inquiry

필터링과 함께 구성된 모든 Generic Inquiry(GI) 실행

acumatica_list_entities

OData 필터링, 정렬, 필드 선택으로 모든 엔터티 검색

acumatica_describe_entity

모든 엔터티의 필드, 유형, 하위 엔터티 검색

acumatica_list_generic_inquiries

OData를 통해 노출된 사용 가능한 GI 목록 표시

acumatica_describe_inquiry

GI 실행 전 필드 스키마 추론

acumatica_clear_cache

스키마 변경 시 캐시된 메타데이터 지우기

팁: 먼저 acumatica_describe_entity를 사용하여 사용 가능한 필드를 찾은 다음 acumatica_list_entities로 검색/필터링하세요. Generic Inquiry의 경우 acumatica_list_generic_inquiries로 GI 이름을 찾고 acumatica_describe_inquiry로 사용 가능한 필드를 확인하세요. 사용 패턴은 docs/example-prompts.md를 참조하세요.

문서

자세한 문서는 docs/ 폴더에서 확인할 수 있습니다:

  • 도구 참조 -- 매개변수와 엔드포인트를 포함한 49개 도구의 전체 사양

  • 예제 프롬트 -- 사용 사례별로 구성된 Claude 및 기타 MCP 클라이언트용 예제 프롬프트

  • OData 필터링 가이드 -- $filter, $orderby, $select, $expand, $top 쿼리 매개변수 가이드

  • Generic Inquiries -- GI가 AI 사용에 게이트가 필요한 이유, 노출할 GI, 옵트인 레지스트리 활성화 방법

  • 스키마 지식 -- 통합/커스터마이제이션 구축을 위한 오프라인 스키마 발견 도구, 스키마 인덱스 구축 방법

  • 아키텍처 -- 상세 아키텍처, OAuth 흐름, 보안 모델, 설계 결정 사항

  • 셀프 호스팅 가이드 -- Cloudflare 외부에서 Node.js 또는 다른 플랫폼에서 MCP 서버 실행 방법

  • Acumatica 업그레이드 -- 연결된 Acumatica 버전 변경 또는 업그레이드 시 수행할 단계

스킬

이 리포지토리와 함께 제공되는 재사용 가능한 Claude 스킬로, skills/에 있습니다:

  • acumatica-gi-descriptions -- Generic Inquiry 및 해당 결과 열에 대한 AI 대상 설명을 작성하는 종단간 프로세스로, 이름에서 추측하는 대신 GI 자체의 디자인 메타데이터(테이블, 조인, WHERE 조건, 열)에 기반합미다. 대량 GI 메타데이터 작업을 조용히 잘못게 만드는 플랫폼 트립와이어, 찾을 가치가 있는 디자인 신호 체크리스트, 트런케이션 감사, 디자인 브리핑, 드래프트 검증을 위한 세 개의 스크립트를 포함합니다.

사용하려면 Claude를 스킬 디렉토리로 지저하거나 자신의 .claude/skills/에 복사하세요.

보안

  • 저장된 자격 증명 없음. MCP 서버는 Acumatica 비밀번호를 저장하지 않습니다. OAuth 2.0 인증 코드 흐름을 사용하며, 사용자는 Acumatica에 직접 인증합니다.

  • 사용자별 토큰. 각 사용자의 Acumatica 액세스 토큰은 플랫폼 키-값 저장소(기본 배포에서는 Cloudflare KV)에 사용자 이름 범위로 저장됩니다. 토큰은 만료 시 자동으로 갱신됩니다. 리프레시 토큰이 만료되면 수동 재연결 없이 연결이 자동으로 재인증됩니다.

  • 액세스 게이트. 지정된 카나리 Generic Inquiry를 읽을 수 있는 사용자만 연결할 수 있습니다. 서버는 로그인 시 OData를 통해 GI 읽기 가능 여부를 확인하며(역할 멤버십이 아님), 액세스 권한이 없는 사용자는 액세스 거부 페이지를 보게 됩니다. GI는 원하는 대로 제한할 수 있으며, MCP Access 역할 마커를 사용하는 것이 권장됩니다. GI 이름은 ACUMATICA_CANARY_GI 환경 변수로 구성 가능합니다.

  • 동의 중간 페이지. 액세스 확인을 통과한 후, 사용자는 MCP 세션이 활성화되기 전에 자신의 데이터가 외부 AI 모델에 의해 처리된다는 점을 인지해야 합니다.

  • 민감 필드 편집. 도구 응답은 자동으로 민감 필드 이름(SSN, 은행 계좌, 급여, 신용카드 등)을 스캔하며, 일치하는 값은 [REDACTED]로 대체됩니다. 패턴은 REDACT_PATTERNSREDACT_SKIP 환경 변수로 구성 가능합니다.

  • 역할 기반 액세스. 사용자의 Acumatica 역할이 읽을 수 있는 레코드를 결정합니다. 사용자가 Acumatica에서 레코드에 액세스할 수 없는 경우 MCP 서버를 통해서도 액세스할 수 없습니다.

  • 읽기 전용. 현재 모든 도구는 읽기 전용 조회입니다. 데이터가 생성, 수정 또는 삭제되지 않습니다.

  • 속도 제한. 기본적으로 동시 요청 3개, 분당 40개 요청, 쿼리당 1000개 레코드 상한이 있으며, 재배포 없이 관리 콘솔 /docs/admin/settings에서 모두 구성 가능합니다. 제한은 사용자별로 적용되며 Acumatica에 대한 HTTP 호출(도구 호출 아님)을 계산합니다. 거부 시 정확한 retryAfterSeconds가 포함된 구조화된 응답을 반환하며, rate_limit_hit 이벤트로 기록되어 상한이 너무 엄격한지 확인할 수 있습니다.

  • 페이지네이션 거부. 목록/쿼리 도구(acumatica_list_entities, acumatica_run_inquiry, acumatica_list_generic_inquiries)는 페이지네이션을 지원하지 않습니다. 응답이 ACUMATICA_MAX_RECORDS에 도달하면 도구는 구조화된 응답(truncated: true, paginationSupported: false, actionRequired: "...")을 반환하여 AI가 중단하고 더 많은 레코드를 검색하는 대신 사용자에게 더 좁은 필터를 요청하도록 지시합니다.

  • 감사 로깅. 모든 도구 호출, 인증 이벤트(로그인 성공/거부, 동의 수락) 및 필드 편집 이벤트가 구조화된 JSON으로 기록됩니다. npx wrangler tail로 확인할 수 있습니다.

플랫폼 이식성

기본 배포는 Cloudflare Workers를 대상으로 하지만, 도구 핸들러와 핵심 라이브러리는 플랫폼에 독립적입니다. 저장소 추상화(IKeyValueStore 인터페이스 + AppEnv 타입)는 도구 로직을 Cloudflare 특정 API로부터 분리하여 Redis, SQLite 또는 기타 저장소 백엔드를 사용하는 Node.js에서 자체 호스팅 배포를 가능하게 합니다. 자세한 내용은 자체 호스팅 가이드를 참조하세요.

기술 스택

개발

npx wrangler dev       # Start local dev server
npx tsc --noEmit       # Type check
npx wrangler tail      # Stream live logs from deployed worker

라이선스

Apache 2.0 -- Copyright 2026 Hall Boys, Inc.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude to interact with Acumatica ERP through a remote MCP server with per-user OAuth, role-based access, and 44 tools for querying and managing ERP data.
    17
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A remote MCP server that connects Claude to Acumatica ERP 2025 R2 with per-user OAuth, role-based access, and sensitive field redaction.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A remote MCP server that connects Claude to Acumatica ERP with per-user OAuth, role-based access, and sensitive field redaction.
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    A remote MCP server that connects Claude to Acumatica ERP 2025 R2 with per-user OAuth authentication, role-based access control, and sensitive field redaction.
    Apache 2.0

View all related MCP servers

Related MCP Connectors

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

View all MCP Connectors

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/NologyAcu/mcp4nologyacu'

If you have feedback or need assistance with the MCP directory API, please join our Discord server