Token导航 LogoToken导航TokenDH.com
MCP Simpleone logo
AI代理未说明官方级别未说明来源级核验

MCP Simpleone

MCP Server

SimpleOne MCP Server是一个用于通过REST API与SimpleOne (ESM)系统集成的服务器,允许AI代理执行CRUD操作。

工具数

4

提示词数

0

GitHub Stars

1

资源数

0
API集成TypeScriptAI代理CRUD操作

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

0aen0

提供方

0aen0

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

SimpleOne MCP Server

![License: MIT](https://opensource.org/licenses/MIT) ![TypeScript](https://www.typescriptlang.org/)

MCP-сервер для интеграции с SimpleOne (ESM) через REST API. Позволяет ИИ-агентам выполнять CRUD-операции в ESM-системе.

Быстрый старт

Установка

npm install

Настройка

  1. Скопируйте .env.example в .env:
cp .env.example .env
  1. Заполните конфигурацию:
SIMPLEONE_URL=https://your-instance.simpleone.ru
SIMPLEONE_API_KEY=your-api-key-here

Или используйте Basic Auth:

SIMPLEONE_URL=https://your-instance.simpleone.ru
SIMPLEONE_BASIC_USER=your-username
SIMPLEONE_BASIC_PASSWORD=your-password

Запуск

Разработка (stdio - для MCP-клиентов)

npm run dev

Разработка (HTTP/SSE - для отладки)

npm run dev:http    # SSE на порту 3000
npm run dev:sse     # то же самое

Продакшн

npm run build
npm start           # stdio режим
npm run start:http  # SSE режим на порту 3000

Сетевой доступ (SSE)

Для отладки и тестирования доступен HTTP/SSE транспорт:

Endpoints:

  • GET /sse — SSE подключение
  • POST /message?sessionId=xxx — отправка сообщений
  • GET /health — проверка здоровья
  • GET /info — информация о сервере и инструментах

Порт: 3000 (по умолчанию) или через MCP_PORT в .env

Пример:

# Запуск в режиме SSE
npm run dev:http

# Проверка
curl http://localhost:3000/health
curl http://localhost:3000/info

Инструменты

ToolОписаниеПодтверждениеСтатус
table_createСоздание записи✅ Требуется✅ Работает
table_readЧтение (ID или список)❌ Не требуется✅ Работает
table_updateОбновление записи✅ Требуется✅ Работает
table_deleteУдаление записи✅ Требуется✅ Работает

Параметры API

table_read

ПараметрТипОписание
tableNamestringИмя таблицы (обязательно)
idstringID записи (опционально)
querystringФильтр (например, "active=1^priority=2")
limitnumberМакс. количество записей (по умолчанию 20)
pagenumberНомер страницы (по умолчанию 1)
no_countbooleanОтключить подсчёт записей (для оптимизации)
display_valuestringВозвращать отображаемые значения (true/false/1/0)
exclude_reference_linkbooleanИсключить ссылки для ссылочных полей
fieldsstringСписок полей через запятую (например, "number,caller")
viewstringПредставление формы для фильтрации полей

table_create

ПараметрТипОписание
tableNamestringИмя таблицы (обязательно)
dataobjectДанные для создания (обязательно)
confirmedbooleanФлаг подтверждения
display_valuestringВозвращать отображаемые значения
exclude_reference_linkbooleanИсключить ссылки
fieldsstringСписок возвращаемых полей
viewstringПредставление формы

table_update

ПараметрТипОписание
tableNamestringИмя таблицы (обязательно)
idstringID записи (обязательно)
dataobjectДанные для обновления (обязательно)
confirmedbooleanФлаг подтверждения
display_valuestringВозвращать отображаемые значения
exclude_reference_linkbooleanИсключить ссылки
fieldsstringСписок возвращаемых полей
viewstringПредставление формы

Примеры использования

Чтение данных (без подтверждения)

Базовый запрос:

Вызови table_read с tableName="itsm_incident"

С фильтрами и параметрами:

Вызови table_read с tableName="itsm_incident", query="active=1^priority=1", limit=10, fields="number,description,state"

Результат: Список активных инцидентов с высоким приоритетом (макс. 10 записей).

С отображаемыми значениями:

Вызови table_read с tableName="task", id="177431367402911371", display_value="true"

Результат: Задача с отображаемыми значениями полей (например, имя пользователя вместо ID).

С пагинацией и no_count:

Вызови table_read с tableName="itsm_incident", query="active=1", limit=50, page=2, no_count=true

Результат: Вторая страница по 50 записей без подсчёта общего количества (оптимизация).

С dot-walking (связанные поля):

Вызови table_read с tableName="task", query="assigned_user.department=IT", fields="number,assigned_user.name,assigned_user.email"

Результат: Задачи с полями из связанной таблицы пользователя.

Создание записи (с подтверждением)

Базовый запрос:

Вызови table_create с tableName="task", data={"subject": "Задача"}

С параметрами:

Вызови table_create с tableName="task", data={"subject": "Задача"}, fields="number,subject,sys_id"

Результат: Запрос подтверждения → после OK → задача создана с указанными полями в ответе.

Обновление записи (с подтверждением)

Базовый запрос:

Вызови table_update с tableName="task", id="177431367402911371", data={"subject": "Новая тема"}

С параметрами:

Вызови table_update с tableName="task", id="177431367402911371", data={"state": "2"}, display_value="true", fields="number,state"

Результат: Запрос подтверждения → после OK → запись обновлена.

Удаление записи (с подтверждением)

Вызови table_delete с tableName="task", id="177431367402911371"

Результат: Запрос подтверждения → после OK → запись удалена.

Тестирование

Дата: 2026-03-25

ИнструментТестРезультат
table_readЧтение sys_db_table✅ JSON со списком таблиц
table_createСоздание task✅ TSK0000003 создан
table_updateОбновление task✅ Тема обновлена
table_deleteУдаление task✅ TSK0000003 удалён
table_readПараметры (display_value, page, no_count)✅ 8 тестов
table_readОператоры query (!=, >, , =, =2`
LIKEСодержитsubjectLIKEзадача
INВ спискеpriorityIN1,2,3
ISEMPTYПустоеassigned_userISEMPTY
ISNOTEMPTYНе пустоеcallerISNOTEMPTY
CHANGESTOИзменилось наstateCHANGESTO5
CHANGESИзменилосьstateCHANGES
^И (AND)active=1^priority=2
^ORИЛИ (OR)state=new^ORstate=in_progress
DYNAMICДинамический фильтрassigned_toDYNAMIC156957117519820256

Dot-walking: Поддерживается в query и fields (например: assigned_user.department=IT)

Проверка работы

# Health check
curl http://localhost:3000/health

# Info (список инструментов)
curl http://localhost:3000/info

# SSE подключение (для отладки)
curl -N http://localhost:3000/sse

Примеры использования

Создать инцидент

User: Создай инцидент с темой "Тестовая проблема"
Agent: [запросит подтверждение]
User: OK
Agent: INC001 создан

Прочитать список

User: Покажи последние инциденты
Agent: [вызовет esm_read без ID]

Обновить статус

User: Обнови статус INC001 на "В работе"
Agent: [запросит подтверждение]
User: OK
Agent: Статус обновлён

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

  • Все write-операции требуют подтверждения — создание, обновление, удаление
  • Секреты только в .env — никогда не храните в коде
  • Маскировка в логах — API-ключи и пароли не логируются

Тестирование

npm test              # Запуск всех тестов
npm run test:watch    # Режим наблюдения
npm run test:coverage # Покрытие кода

Линтер

npm run lint

Автономная версия

Для развёртывания MCP-сервера на других машинах без зависимостей от репозитория:

Сборка

npm run build:standalone

Что делает скрипт:

  1. Собирает TypeScript (npm run build)
  2. Копирует dist/ в standalone/mcp-simpleone/
  3. Устанавливает production-зависимости (node_modules/)
  4. Копирует .env.example, README.md, LICENSE

Время сборки: ~15 секунд

Структура автономной версии

standalone/mcp-simpleone/
├── dist/              # Скомпилированный код
├── node_modules/      # Зависимости (production only)
├── package.json       # Минимальный package.json
├── .env.example       # Шаблон конфигурации
├── README.md          # Краткая инструкция
└── LICENSE            # Лицензия

Размер: ~2.5 MB (131 пакет)

Развёртывание

# 1. Скопируйте каталог в нужное место
cp -r standalone/mcp-simpleone /opt/apps/mcp-simpleone

# 2. Настройте
cd /opt/apps/mcp-simpleone
cp .env.example .env
# Отредактируйте .env (SIMPLEONE_URL, SIMPLEONE_BASIC_USER, SIMPLEONE_BASIC_PASSWORD)

# 3. Запустите
npm start           # stdio (для MCP-клиентов)
npm run start:sse   # SSE на порту 3000
npm run start:http  # HTTP на порту 3000

Проверка

# Health check
curl http://localhost:3000/health

# Информация о сервере
curl http://localhost:3000/info

Обновление автономной версии

# В исходном репозитории
npm run build:standalone

# Замените каталог на сервере
rm -rf /opt/apps/mcp-simpleone
cp -r standalone/mcp-simpleone /opt/apps/mcp-simpleone

# Сохраните .env (не перезаписывайте!)
# Запустите сервер
cd /opt/apps/mcp-simpleone
npm start

→ Подробнее: DEPLOYMENT.md

Структура проекта

mcp-simpleone/
├── src/
│   ├── index.ts           # Точка входа
│   ├── config.ts          # Конфигурация и валидация
│   ├── api/
│   │   ├── client.ts      # HTTP клиент
│   │   ├── auth.ts        # Аутентификация
│   │   └── types.ts       # Типы ресурсов
│   ├── tools/
│   │   ├── index.ts       # Регистрация инструментов
│   │   ├── table-create.ts
│   │   ├── table-read.ts
│   │   ├── table-update.ts
│   │   └── table-delete.ts
│   ├── utils/
│   │   ├── confirm.ts     # Подтверждение операций
│   │   ├── errors.ts      # Классы ошибок
│   │   └── logger.ts      # Логирование
│   └── tests/
├── .rules/                # Правила для ИИ-агента
├── AGENTS.md              # Центральный адаптер
└── QWEN.md                # Адаптер для Qwen Code

Ссылки

Документация

  • MCP_SETUP.md — подробная инструкция по подключению MCP-клиентов
  • DEPLOYMENT.md — развёртывание и автономная установка
  • LOGGING.md — настройка логирования
  • QUERY_EXAMPLES.md — примеры query-параметров

Правила и адаптеры

  • .rules/ — ядро правил для ИИ-агентов (Source of Truth)
  • AGENTS.md — центральный адаптер
  • QWEN.md — адаптер для Qwen Code

Лицензия

MIT — см. LICENSE файл.

目录标签

目录标签

API集成TypeScriptAI代理CRUD操作RESTAPI本地部署系统集成ESM

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP