Skip to main content
Glama
ajemssolutions

AJEMS MCP Connector

Official

AJEMS MCP 커넥터

Claude와 ChatGPT가 누구도 AJEMS에 로그인하지 않고도 AJEMS 워크스페이스에 대한 질문에 답하고 — 선택적으로 앱, 폼, 레코드를 생성할 수 있게 해줍니다.

하나의 배포로 모든 테넌트를 지원합니다. 사용자는 조직 이름과 AJEMS 비밀 키로 로그인합니다.


파일

파일

역할

server.js

구성, 인증, HTTP 전송, 상태 확인, 종료

tools.js

AI가 호출할 수 있는 모든 도구

ajems.js

AJEMS API와 통신하는 유일한 모듈

oauth.js

Claude와 ChatGPT가 요구하는 OAuth 핸드셰이크

cache.js

테넌트별 캐싱 및 업스트림 동시성 제한

util.js

작은 공유 헬퍼

diagnose.js

11단계 종단 간 검사기

mock-ajems.js

라이브 워크스페이스 없이 테스트하기 위한 샘플 데이터가 있는 가짜 AJEMS


Related MCP server: Synapse

빠른 시작

npm install
cp .env.example .env      # set PUBLIC_URL and AJEMS_HOST_TEMPLATE
npm start

실제 워크스페이스로 검증:

node diagnose.js https://mcp.ajems.com <organisation> <secret-key>

또는 AJEMS 없이 시도:

npm run mock              # terminal 1
# set AJEMS_HOST_TEMPLATE=http://localhost:9090/{org}/json_builder
npm start                 # terminal 2
node diagnose.js http://localhost:8080 testco test-secret-key

nginx, TLS, pm2 및 튜닝에 대해서는 DEPLOY.md를 참조하세요.


도구

기본적으로 읽기 전용입니다. 네 가지 쓰기 도구에 대해 ALLOW_WRITES=true를 설정하세요.

도구

용도

list_apps_and_forms

검색 — 읽기/쓰기 플래그가 있는 모든 앱과 폼

describe_form

필드 키, 사람이 읽는 라벨, 유형, 드롭다운 옵션

query_responses

필터, 날짜 범위, 필드 선택이 있는 레코드

aggregate_responses

count / sum / avg / min / max, 선택적으로 그룹화

create_app

새 앱

create_form

새 폼; 필드 키 자동 생성

create_record

하나 또는 여러 레코드, 제한된 동시성으로 삽입

update_record

기존 레코드의 필드 변경

search

폼과 레코드 전반의 키워드 검색 (ChatGPT)

fetch

검색 결과 하나의 전체 세부 정보 (ChatGPT)

aggregate_responses는 서버에서 계산합니다. 이것이 없으면 "도시별 합계"는 수천 개의 행을 모델의 컨텍스트로 가져와 손으로 세어야 합니다 — 느리고, 비싸고, 일정 규모를 넘어서면 틀립니다.

search와 fetch가 존재하는 이유는 Developer Mode 밖에서 ChatGPT는 이 두 이름의 도구만 호출하고 나머지는 모두 무시하기 때문입니다.


질문이 답변되는 방식

Claude가 *"7월 항목이 도시별로 몇 개인가?"*라고 묻습니다:

  1. list_apps_and_forms → 폼을 찾습니다

  2. describe_form → date_1750943312417이 날짜 필드이고 dropdown_1750943301432가 도시를 담고 있음을 알게 됩니다

  3. 날짜 범위와 group_by로 aggregate_responses → 세 개의 숫자를 돌려받습니다

  4. 평이한 영어로 답을 작성합니다

필드 키는 자동 생성되므로(date_1750943312417) 2단계는 선택 사항이 아닙니다. 도구 설명이 모델에게 이를 알려주고, 모델이 스스로 호출을 연결합니다.


테넌트 격리

  • 테넌트는 세션에서 오며, 베어러 토큰에서 서버 측에서 확인됩니다

  • 어떤 도구 스키마에도 tenant, org 또는 url 매개변수가 없습니다 — 모델이 변경하도록 유도될 수 있는 것이 없습니다

  • ajems.js는 아웃바운드 요청을 발행하는 유일한 모듈이며, 해당 테넌트의 기본 URL에만 요청합니다

  • 캐시 키는 테넌트 및 비밀 키의 해시로 네임스페이스가 지정되므로, 테넌트는 서로의 캐시 항목을 읽을 수 없고 회전된 키는 자동으로 만료됩니다

  • 조직 이름은 서브도메인에 안전한 문자로 축소되므로, evil.com/x 같은 항목이 서버를 다른 곳으로 리디렉션할 수 없습니다

  • 모든 도구 호출은 테넌트와 사용자와 함께 JSON으로 기록됩니다

도구를 추가할 때 두 번째 항목을 다시 확인하세요.


테스트

목(mock)에 대해 46개의 검사가 통과합니다: 인증, 10개 도구 전체, 필터, 날짜 범위, created_at 폴백, 그룹화된 집계, 대량 삽입, 쓰기 후 캐시 무효화, 오류 메시지, 테넌트 격리, 20명의 동시 사용자, 속도 제한.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Jurisly workspaces for tasks like drafting invoices, finding hearing dates, and editing documents through natural language.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables LLM clients to securely read and write Frappe/ERPNext data under a real user's permissions, with audited calls and granular access control.
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to connect to a Flow Master workspace and perform project, task, ticket, board, relationship, tag, and comment operations under the user's own account and permissions.
    3 npm
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to securely connect to a vybeflow tenant for multi-channel messaging operations such as reading inbox tickets, looking up contacts, checking campaign progress, and sending messages under scoped permissions.
    MIT