Skip to main content
Glama
ajemssolutions

AJEMS MCP Connector

Official

AJEMS MCP コネクタ

Claude と ChatGPT が AJEMS ワークスペースに関する質問に回答できるようにします。さらに、誰も AJEMS にログインすることなく、アプリ、フォーム、レコードを作成することもできます。

1 つのデプロイで全テナントにサービスを提供します。ユーザーは組織名と 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

DEPLOY.md で nginx、TLS、pm2、チューニングを参照してください。


ツール

デフォルトでは読み取り専用です。4 つの書き込みツールには ALLOW_WRITES=true を設定します。

ツール

目的

list_apps_and_forms

ディスカバリ — すべてのアプリとフォーム、読み取り/書き込みフラグ付き

describe_form

フィールドキー、人間向けラベル、型、ドロップダウンオプション

query_responses

フィルタ、日付範囲、フィールド選択付きのレコード

aggregate_responses

count / sum / avg / min / max、オプションでグループ化

create_app

新しいアプリ

create_form

新しいフォーム。フィールドキーは自動生成

create_record

1 件または複数のレコード。制限付き同時実行で挿入

update_record

既存レコードのフィールドを変更

search

フォームとレコードを横断するキーワード検索 (ChatGPT)

fetch

検索結果 1 件の完全な詳細 (ChatGPT)

aggregate_responses はサーバー側で計算します。これがないと、「都市別の合計」は数千行をモデルのコンテキストに取り込んで手作業で数えることになります。遅く、コストがかかり、サイズが大きくなると誤りが生じます。

search と fetch は、Developer Mode 以外では ChatGPT がこれら 2 つの名前のツールしか呼び出さず、他は無視するため存在します。


質問がどのように回答されるか

Claude が「7 月のエントリ数は都市別にいくつ?」と尋ねます:

  1. list_apps_and_forms → フォームを見つける

  2. describe_form → date_1750943312417 が日付フィールドで、dropdown_1750943301432 が都市を保持していることを学習

  3. 日付範囲と group_by を指定した aggregate_responses → 3 つの数値が返る

  4. 平易な英語で回答を書く

フィールドキーは自動生成されるため (date_1750943312417)、ステップ 2 は省略できません。ツールの説明はこれをモデルに伝え、モデル自身が呼び出しを連鎖させます。


テナント分離

  • テナントはセッションから取得され、ベアラートークンからサーバー側で解決される

  • どのツールスキーマにも tenant、org、url パラメータはありません — モデルが変更するよう誘導されるものは存在しない

  • ajems.js は外部リクエストを発行する唯一のモジュールであり、そのテナントのベース URL にのみ送信する

  • キャッシュキーはテナント と シークレットキーのハッシュで名前空間が分けられているため、テナントが互いのキャッシュエントリを読むことはできず、ローテーションされたキーは自動的に期限切れになる

  • 組織名はサブドメインに安全な文字に切り詰められるため、evil.com/x のようなエントリがサーバーを別の場所にリダイレクトすることはできない

  • すべてのツール呼び出しは、テナントとユーザーを含む JSON としてログに記録される

ツールを追加するときは、2 番目のポイントを再確認してください。


テスト

モックに対して 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