Skip to main content
Glama

jaicp-mcp 0.1.0

Первый публичный тест MCP-сервера к API JAICP.

В npm пакет не выкладываем: клонируйте репозиторий, поставьте зависимости и подключите в клиенте src/server.mjs.

Что нужно

  • Node.js 20+

  • Токен из раздела «Доступ к API» в JAICP — проекты, каналы, аналитика, текстовые рассылки (JAICP_UNIFIED_TOKEN)

  • Для CAILA Direct — отдельный токен (JAICP_NLP_TOKEN)

  • Для обзвонов Dialer — токен кампании (JAICP_CALLS_TOKEN)

Без unified-токена не заработают каналы, проекты, reporter и рассылки. Без JAICP_NLP_TOKEN не заработает CAILA. Без JAICP_CALLS_TOKEN — Dialer.

Related MCP server: OpenAPI MCP Server

Установка

git clone <this-repo>
cd jaicp-mcp
npm install
cp .env.example .env

Токены пишите в .env в корне клона. Этот файл в git не попадает.

Если переменные лежат в другом месте, укажите путь в JAICP_ENV.

JAICP_HOST=https://app.jaicp.com
JAICP_UNIFIED_TOKEN=
JAICP_PROJECT_SHORT_NAME=
JAICP_NLP_TOKEN=
JAICP_CALLS_TOKEN=

Проверка, что OpenAPI читается (токен не нужен):

npm run ops

Клиенты

Сервер — обычный процесс node src/server.mjs (stdio). Cursor, Claude Code и Codex так умеют, но конфиг у каждого свой. Отдельного HTTP-адреса в 0.1 нет.

В примерах замените /absolute/path/to/jaicp-mcp на путь к клону. На Windows, если node не в PATH, укажите полный путь к node.exe.

В конфиг клиента токены не кладите. Их читает сам сервер из .env.

Cursor (IDE и CLI)

Один файл на редактор и на Cursor CLI (agent): ~/.cursor/mcp.json или .cursor/mcp.json в проекте.

{
  "mcpServers": {
    "jaicp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/jaicp-mcp/src/server.mjs"]
    }
  }
}

В Cursor токены можно держать не в .env репозитория, а в ~/.cursor/secrets/jaicp.env — сервер смотрит туда первым.

Проверка: agent mcp list, затем agent mcp list-tools jaicp.

Документация: Cursor MCP, Cursor CLI MCP.

Claude Code

claude mcp add --transport stdio jaicp -- node /absolute/path/to/jaicp-mcp/src/server.mjs

Или .mcp.json в корне проекта (его можно коммитить, .env нельзя):

{
  "mcpServers": {
    "jaicp": {
      "command": "node",
      "args": ["/absolute/path/to/jaicp-mcp/src/server.mjs"]
    }
  }
}

Проверка: claude mcp list. Если сервер описан в .mcp.json, Claude при первом запуске в этой папке может спросить подтверждение.

Документация: Claude Code MCP.

Codex CLI

Codex не читает mcp.json. Нужна запись в ~/.codex/config.toml:

[mcp_servers.jaicp]
command = "node"
args = ["/absolute/path/to/jaicp-mcp/src/server.mjs"]
cwd = "/absolute/path/to/jaicp-mcp"

cwd — чтобы сервер нашёл .env в клоне, даже если Codex запущен из другой папки.

То же через CLI: codex mcp add jaicp -- node /absolute/path/to/jaicp-mcp/src/server.mjs. Проверка: codex mcp list.

Документация: Codex MCP.

Инструменты

Инструмент

Что делает

jaicp_specs

Какие API подключены и какие токены заданы (да/нет, без значений)

jaicp_operations

Список операций одной спеки, можно сузить через search

jaicp_call

Вызов: spec + operationId + pathParams / query / headers / body

Создание, изменение и удаление — только с confirm: true. То же для Dialer addPhone.

Спеки

Копии YAML лежат в vendor/specs/. Обычная установка их не обновляет.

Какой токен куда

Спеки

Переменная

bot-channel, project, reporter, async, text-campaign

JAICP_UNIFIED_TOKEN (Authorization: Bearer)

caila

JAICP_NLP_TOKEN (подставляется в {accessToken} в пути)

calls

JAICP_CALLS_TOKEN (подставляется в {token} в пути)

JAICP_PROJECT_SHORT_NAME сам попадает в query, если у операции есть такой параметр.

Безопасность

  • Токены в чат не копируйте

  • Сервер вырезает секреты из ответов (в том числе CAILA accessToken и токен Telegram-бота в URL). На это лучше не рассчитывать как на единственную защиту

  • В выгрузках reporter могут быть персональные данные

  • Для тестов берите отдельный проект, не прод

Лицензия

MIT. JAICP, CAILA, Conversational Cloud и связанные товарные знаки принадлежат Just AI; этот репозиторий — неофициальный клиент к их публичному API. Про копии OpenAPI — в NOTICE.md.

Available Tools

3 tools
jaicp_callA

Call a JAICP OpenAPI operation by spec id + operationId. Writes need confirm=true.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
specYes
queryNo
confirmNoRequired true for create/update/delete and dialer addPhone GET
headersNo
pathParamsNo
operationIdYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It usefully discloses that write operations require confirmation, which signals a side-effect gate. However, it does not describe response behavior, error handling, authentication expectations, or the fact that the underlying operations may create, update, or delete data beyond the generic 'writes' label.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, no filler. The core invocation pattern is front-loaded, and the safety-relevant confirmation requirement is stated clearly. Every part of the description earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a dynamic API-call tool with 7 parameters, no annotations, and no output schema, yet the description is very minimal. It does not mention how to discover valid operationIds using jaicp_operations, what the return value looks like, whether responses are raw, or what happens on invalid specs. The sibling tools help, but the description itself leaves too much unsaid for an agent to invoke the right operation confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14%, and the description compensates only for spec, operationId, and confirm. The meaningful parameters body, query, headers, and pathParams receive no semantic guidance, and there is no explanation of how they map to a given operation. The confirm statement also adds less detail than the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Call') and a specific resource ('JAICP OpenAPI operation by spec id + operationId'), which clearly distinguishes it from the sibling discovery tools jaicp_specs and jaicp_operations. It is immediately obvious what the tool does and how it differs from nearby tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: once a spec and operationId are known, it executes that operation. It also adds an important condition for write operations ('Writes need confirm=true'). It does not explicitly name alternatives or provide a when-not-to-use rule, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jaicp_operationsA

List OpenAPI operations from one spec. Optional search over operationId, path, summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes
searchNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. The verb 'List' conveys a read-only operation and the description names the search dimensions, but it does not disclose what happens when search is omitted, the output shape, ordering, or edge cases. This is adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The primary purpose is front-loaded and the optional search behavior is stated directly. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity two-parameter listing tool, the description is sufficient for an agent to select and invoke it correctly. The spec enum is in the schema, and the description explains the optional search behavior. The absence of an output schema is mitigated by the clear 'List operations' framing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds real meaning to the search parameter by specifying it can filter over operationId, path, and summary, which is not inferable from the schema. For 'spec', the schema's enum already documents valid values, while 'from one spec' clarifies its role.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists OpenAPI operations from a single spec and outlines searchable fields. It is specific about the verb and resource, but it does not explicitly contrast with the sibling tools (e.g., jaicp_specs for listing specs, jaicp_call for invoking an operation), so sibling differentiation is left implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'from one spec' gives a clear usage context: use this tool when you need operations belonging to a specific spec. However, there is no explicit guidance about when not to use it or which sibling tool should be chosen instead, such as jaicp_specs for finding available specs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jaicp_specsA

Official JAICP OpenAPI specs this MCP was built from. No network.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It usefully discloses that the tool makes no network calls and that the content is official specifications, which signals a read-only, offline operation. However, it does not describe the response format, size, or what an agent should expect back beyond the vague notion of 'specs'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver the essential information with no filler. The authoritative provenance ('Official JAICP OpenAPI specs') and the key behavioral constraint ('No network') are both stated up front and compactly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter informational tool, the description is close to complete: it names what the tool provides and flags the offline nature. Without an output schema, a bit more detail about the returned representation would strengthen it, but the scope is small enough that an agent can reasonably infer what this tool is for.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so parameter-level explanation is unnecessary. The description does not need to add schema meaning, and the baseline of 4 for parameterless tools applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource ('official JAICP OpenAPI specs') and clearly indicates the tool provides the specification this MCP was built from. It does not use a strong verb like 'retrieve' or 'return', and it does not explicitly contrast with sibling tools, but the resource is clear enough for an agent to distinguish it from 'jaicp_operations' and 'jaicp_call'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus the sibling tools. 'No network' vaguely implies this is a safe/local source of information, but there is no explicit when-to-use or when-not-to-use statement, and no mention of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedjaicp_call
    • First observedjaicp_operations
    • First observedjaicp_specs

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: listing specs, searching operations within a spec, and invoking an operation. There is no overlap or ambiguity between them.

Naming Consistency4/5

All names share the jaicp_ prefix and snake_case convention, but specs and operations are nouns while call is a verb. This is a minor stylistic deviation rather than a functional inconsistency.

Tool Count5/5

Three tools form a tight, well-scoped set for a server whose purpose is to expose and call a specific API. Each tool serves a distinct stage in the workflow with no redundancy.

Completeness5/5

The surface covers the full lifecycle needed: discover available specs, browse/filter operations, and execute calls. There are no obvious dead ends or missing capabilities for the stated meta-API purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

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/CryLeech/jaicp-mcp'

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