amocrm-mcp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,8 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+ .eggs/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ilya
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,217 @@
1
+ Metadata-Version: 2.4
2
+ Name: amocrm-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for AmoCRM — gives Claude Desktop direct access to your CRM
5
+ Project-URL: Homepage, https://github.com/ilyaberdysh/amocrm-mcp
6
+ Project-URL: Issues, https://github.com/ilyaberdysh/amocrm-mcp/issues
7
+ License: MIT
8
+ License-File: LICENSE
9
+ Keywords: amocrm,claude,crm,mcp,model-context-protocol
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Topic :: Office/Business
18
+ Requires-Python: >=3.11
19
+ Requires-Dist: mcp>=1.0.0
20
+ Description-Content-Type: text/markdown
21
+
22
+ # AmoCRM MCP Server
23
+
24
+ MCP-сервер для [AmoCRM](https://www.amocrm.ru/). Подключается к Claude Desktop и даёт Claude прямой доступ к вашей CRM через 17 инструментов.
25
+
26
+ Задавайте вопросы на русском — Claude сам вызовет нужные API и скомбинирует ответ.
27
+
28
+ ## Архитектура
29
+
30
+ ```
31
+ ┌──────────────────┐ stdin/stdout ┌──────────────────┐ HTTPS ┌──────────────┐
32
+ │ Claude Desktop │ ◄──── MCP Protocol ──► │ amocrm-mcp │ ◄── REST ───► │ AmoCRM API │
33
+ │ (LLM + UI) │ │ (локальный) │ │ (облако) │
34
+ └──────────────────┘ └──────────────────┘ └──────────────┘
35
+ ```
36
+
37
+ **Как это работает:**
38
+
39
+ 1. Claude Desktop запускает `amocrm-mcp` как subprocess
40
+ 2. MCP-сервер сообщает Claude: "у меня 17 инструментов — get_leads, get_contacts..."
41
+ 3. Пользователь пишет вопрос на русском
42
+ 4. Claude решает какие инструменты вызвать и в каком порядке
43
+ 5. MCP-сервер передаёт запросы в AmoCRM API v4, возвращает JSON
44
+ 6. Claude анализирует данные и отвечает пользователю
45
+
46
+ Внутри MCP-сервера нет ИИ — это прокси между Claude и AmoCRM.
47
+
48
+ ## Установка
49
+
50
+ ### Вариант A: pip (рекомендуется)
51
+
52
+ ```bash
53
+ pip install amocrm-mcp
54
+ ```
55
+
56
+ ### Вариант B: из исходников
57
+
58
+ ```bash
59
+ git clone https://github.com/ilyaberdysh/amocrm-mcp.git
60
+ cd amocrm-mcp
61
+ pip install -e .
62
+ ```
63
+
64
+ ## Настройка
65
+
66
+ ### 1. Создать интеграцию в AmoCRM
67
+
68
+ 1. AmoCRM → **Настройки** → **Интеграции** → **Создать интеграцию**
69
+ 2. Тип: **Внешняя интеграция**
70
+ 3. Redirect URI: `https://localhost`
71
+ 4. Скопировать **Client ID** и **Client Secret**
72
+
73
+ ### 2. Авторизоваться
74
+
75
+ ```bash
76
+ amocrm-mcp-auth
77
+ ```
78
+
79
+ Или если установлено из исходников:
80
+
81
+ ```bash
82
+ python3 auth_setup.py
83
+ ```
84
+
85
+ Скрипт спросит:
86
+ - **Субдомен** — часть URL вашего AmoCRM (например `mycompany` из `mycompany.amocrm.ru`)
87
+ - **Client ID** и **Client Secret** — из шага 1
88
+ - **Redirect URI** — по умолчанию `https://localhost`
89
+ - **Auth code** — откроется URL, авторизуетесь, скопируете `code` из URL редиректа
90
+
91
+ Токены сохранятся в `~/.amocrm/config.json`.
92
+
93
+ ### 3. Подключить к Claude Desktop
94
+
95
+ Откройте файл конфигурации:
96
+
97
+ **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
98
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
99
+
100
+ Добавьте:
101
+
102
+ ```json
103
+ {
104
+ "mcpServers": {
105
+ "amocrm": {
106
+ "command": "amocrm-mcp"
107
+ }
108
+ }
109
+ }
110
+ ```
111
+
112
+ > Если установлено из исходников, укажите полный путь:
113
+ > ```json
114
+ > {"command": "python3", "args": ["/путь/до/amocrm-mcp/server.py"]}
115
+ > ```
116
+
117
+ ### 4. Перезапустить Claude Desktop
118
+
119
+ **Cmd+Q** (Mac) / **Alt+F4** (Windows) → открыть заново.
120
+
121
+ В чате появится иконка инструментов — `amocrm` с 17 тулами.
122
+
123
+ ### 5. Проверить
124
+
125
+ ```
126
+ Покажи мои воронки в AmoCRM
127
+ ```
128
+
129
+ ## Инструменты (17)
130
+
131
+ | Инструмент | Что делает |
132
+ |------------|-----------|
133
+ | `get_pipelines` | Воронки продаж с этапами и их ID |
134
+ | `get_leads` | Сделки с фильтрами (менеджер, воронка, статус, даты, сумма) |
135
+ | `count_and_sum_leads` | Подсчёт и сумма сделок **без лимита 200** — для аналитики |
136
+ | `get_contacts` | Контакты (поиск по имени, email, телефону) |
137
+ | `get_companies` | Компании |
138
+ | `get_users` | Пользователи / менеджеры |
139
+ | `get_tasks` | Задачи (активные/выполненные, сортировка по дедлайну) |
140
+ | `get_notes` | Примечания к сделкам, контактам, компаниям |
141
+ | `get_events` | Журнал событий (смена этапов, создание сделок) |
142
+ | `get_customers` | Покупатели (повторные клиенты) |
143
+ | `get_unsorted` | Неразобранные заявки |
144
+ | `get_catalogs` | Каталоги товаров/услуг |
145
+ | `get_catalog_elements` | Элементы каталогов |
146
+ | `get_custom_fields` | Пользовательские поля сущностей |
147
+ | `get_loss_reasons` | Причины отказа |
148
+ | `get_tags` | Теги |
149
+ | `get_sources` | Источники трафика |
150
+
151
+ ## Примеры запросов
152
+
153
+ ```
154
+ Сколько сделок закрыто в феврале 2025?
155
+ Сравни продажи за этот и прошлый месяц
156
+ Кто из менеджеров закрыл больше всего сделок?
157
+ Покажи просроченные задачи Никиты
158
+ Сделки на этапе "Переговоры" во всех воронках
159
+ Найди сделки дороже 500 000 ₽ в работе
160
+ Сколько неразобранных заявок?
161
+ Какие кастомные поля есть у сделок?
162
+ Причины отказа по проигранным сделкам
163
+ ```
164
+
165
+ ## Структура проекта
166
+
167
+ ```
168
+ amocrm-mcp/
169
+ ├── server.py # MCP-сервер — точка входа, 17 tool definitions
170
+ ├── amocrm_client.py # AmoCRM API v4 клиент
171
+ │ - OAuth2 с auto-refresh токенов
172
+ │ - Retry на 429 (rate limit) с backoff 2s/5s/10s
173
+ │ - Пагинация до 10 000 записей
174
+ │ - Обработка пустых ответов API
175
+ ├── config.py # Чтение/запись ~/.amocrm/config.json
176
+ ├── auth_setup.py # CLI для первичной OAuth2 авторизации
177
+ ├── pyproject.toml # Метаданные, зависимости, entry points
178
+ └── QA_TEST_PROMPT.md # QA-промпт для тестирования (10 вопросов)
179
+ ```
180
+
181
+ ## Токены
182
+
183
+ - Хранятся в `~/.amocrm/config.json`
184
+ - Обновляются автоматически при каждом запросе
185
+ - Протухают если не использовать > 3 месяцев
186
+ - Если протухли — снова запустите `amocrm-mcp-auth`
187
+
188
+ ## Отладка
189
+
190
+ ```bash
191
+ # Проверить что сервер запускается
192
+ amocrm-mcp
193
+ # Если висит без ошибок — ждёт подключения (Ctrl+C для выхода)
194
+
195
+ # Проверить конфиг
196
+ cat ~/.amocrm/config.json
197
+
198
+ # Логи Claude Desktop
199
+ # Mac: ~/Library/Logs/Claude/
200
+ # Windows: %APPDATA%\Claude\logs\
201
+ ```
202
+
203
+ ## Требования
204
+
205
+ - Python 3.11+
206
+ - Claude Desktop
207
+ - Аккаунт AmoCRM с правами создания интеграций
208
+
209
+ ## Технологии
210
+
211
+ - [MCP SDK](https://github.com/modelcontextprotocol/python-sdk) — Model Context Protocol
212
+ - AmoCRM API v4 (OAuth2)
213
+ - Без внешних HTTP-библиотек — `urllib` из stdlib
214
+
215
+ ## Лицензия
216
+
217
+ MIT
@@ -0,0 +1,128 @@
1
+ # QA Test Prompt для AmoCRM MCP Server (v2)
2
+
3
+ Скопируй весь текст ниже и вставь в Claude Desktop (или Claude Code) где подключён AmoCRM MCP.
4
+
5
+ ---
6
+
7
+ ## ПРОМПТ
8
+
9
+ ```
10
+ Ты QA-тестировщик AmoCRM MCP сервера. Твоя задача — последовательно выполнить 10 тестовых запросов, записать результаты и составить итоговый QA-отчёт.
11
+
12
+ ВАЖНО:
13
+ - Каждый вопрос выполняй ОТДЕЛЬНО, дожидаясь полного ответа
14
+ - Записывай ТОЧНЫЕ числа, суммы, количество записей из ответа
15
+ - Если инструмент вернул ошибку — запиши текст ошибки
16
+ - Фиксируй какие именно инструменты (tool calls) были вызваны и с какими параметрами
17
+
18
+ ---
19
+
20
+ ### ТЕСТ 1: Поиск контактов
21
+ Вызови нужные инструменты чтобы ответить: "Покажи контакты с именем Алексей"
22
+ Ожидание: список контактов, у каждого — имя, телефон/email если есть. Не пустой результат.
23
+
24
+ ### ТЕСТ 2: Компании
25
+ Ответь: "Какие компании есть в CRM? Покажи первые 5"
26
+ Ожидание: 5 компаний с названиями. Если есть — ответственный менеджер и количество сделок.
27
+
28
+ ### ТЕСТ 3: Воронки + активные сделки (MULTI-TOOL)
29
+ Ответь: "Покажи все воронки и сколько активных сделок в каждой"
30
+ Ожидание: таблица воронок с количеством активных сделок (exclude_closed=true). Нужно вызвать get_pipelines, затем count_and_sum_leads для каждой воронки.
31
+
32
+ ### ТЕСТ 4: Топ менеджер месяца (MULTI-TOOL, КРИТИЧЕСКИЙ)
33
+ Ответь: "Кто из менеджеров закрыл больше всего сделок в этом месяце?"
34
+ Ожидание: вызвать get_users, затем count_and_sum_leads с closed_at фильтром за текущий месяц для каждого менеджера. Результат — рейтинг менеджеров по количеству закрытых сделок.
35
+
36
+ ### ТЕСТ 5: Просроченные задачи менеджера (MULTI-TOOL)
37
+ Ответь: "Покажи просроченные задачи Никиты Чуравского"
38
+ Ожидание: найти user_id через get_users, затем get_tasks с complete_till_to=текущий unix timestamp и responsible_user_ids. Задачи должны быть отсортированы по дедлайну (просроченные первыми).
39
+
40
+ ### ТЕСТ 6: Причины отказа
41
+ Ответь: "Какие причины отказа по проигранным сделкам?"
42
+ Ожидание: список причин отказа из get_loss_reasons. Не ошибка и не пустой список.
43
+
44
+ ### ТЕСТ 7: События за сегодня
45
+ Ответь: "Покажи последние события — кто что менял за сегодня"
46
+ Ожидание: список событий из get_events(date_from=начало сегодня в unix). Тип события, кто сделал, что изменилось.
47
+
48
+ ### ТЕСТ 8: Неразобранные заявки
49
+ Ответь: "Сколько нераспределённых заявок?"
50
+ Ожидание: число из get_unsorted. Может быть 0 — это валидный результат, но не ошибка.
51
+
52
+ ### ТЕСТ 9: Сделки по цене (ФИЛЬТРАЦИЯ)
53
+ Ответь: "Покажи сделки дороже 500 000 рублей в работе"
54
+ Ожидание: сделки с price >= 500000, только активные (не закрытые). Можно использовать get_leads(price_from=500000) + исключить status 142/143, или count_and_sum_leads(price_from=500000, exclude_closed=true).
55
+
56
+ ### ТЕСТ 10: Кастомные поля
57
+ Ответь: "Какие кастомные поля есть у сделок?"
58
+ Ожидание: список полей из get_custom_fields(entity="leads"). Каждое поле — ID, название, тип.
59
+
60
+ ---
61
+
62
+ ### СОСТАВЛЕНИЕ ОТЧЁТА
63
+
64
+ После всех 10 тестов составь отчёт в ТОЧНО таком формате:
65
+
66
+ # QA Report — AmoCRM MCP Server — [ДАТА]
67
+
68
+ ## Общий результат: X/10 passed
69
+
70
+ | # | Вопрос | Ожидание | Результат | Статус |
71
+ |---|--------|----------|-----------|--------|
72
+ | 1 | [вопрос] | [что ожидалось] | [что реально вернулось — ТОЧНЫЕ числа, данные, ошибки] | ✅ PASS / ❌ FAIL |
73
+ | ... | ... | ... | ... | ... |
74
+
75
+ ## Детали по FAIL-кейсам
76
+
77
+ Для каждого FAIL опиши:
78
+
79
+ ### BUG-N — Тест X: [краткое описание]
80
+ **Вопрос:** [точный вопрос]
81
+ **Что вернул:** [точный ответ с числами]
82
+ **Что ожидалось:** [ожидаемый результат]
83
+ **Какие инструменты вызывались:** [список tool calls с параметрами]
84
+ **Гипотеза причины:** [почему результат неверный]
85
+ **Рекомендация:** [что исправить в MCP-сервере]
86
+
87
+ ## Прочие находки
88
+
89
+ Замечания, не являющиеся FAIL, но важные (аномальные данные, UX-улучшения, медленные ответы).
90
+
91
+ ## Критерии оценки
92
+
93
+ - ✅ PASS: инструмент вернул корректные данные, нет ошибок
94
+ - ❌ FAIL: ошибка (JSONDecodeError, timeout, пустой результат при наличии данных), неверные данные
95
+ - ✅ PASS (с оговоркой): данные верные но есть мелкий недочёт (формат, сортировка)
96
+
97
+ ## Итоговый список задач
98
+
99
+ | ID | Приоритет | Описание |
100
+ |----|-----------|----------|
101
+ | BUG-1 | 🔴 КРИТ / 🟡 СРЕДН / 🟢 НИЗК | [описание бага и что нужно исправить] |
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Как использовать
107
+
108
+ 1. Подключи AmoCRM MCP к Claude Desktop (см. README.md)
109
+ 2. Открой новый чат в Claude Desktop
110
+ 3. Скопируй весь блок ПРОМПТ выше и вставь в чат
111
+ 4. Claude выполнит все 10 тестов и выдаст отчёт
112
+ 5. Сохрани отчёт — сравнивай между версиями сервера
113
+
114
+ ## Покрытие тулов
115
+
116
+ | Тул | Тесты |
117
+ |-----|-------|
118
+ | get_contacts | 1 |
119
+ | get_companies | 2 |
120
+ | get_pipelines | 3 |
121
+ | count_and_sum_leads | 3, 4, 9 |
122
+ | get_users | 4, 5 |
123
+ | get_tasks | 5 |
124
+ | get_loss_reasons | 6 |
125
+ | get_events | 7 |
126
+ | get_unsorted | 8 |
127
+ | get_leads | 9 |
128
+ | get_custom_fields | 10 |
@@ -0,0 +1,196 @@
1
+ # AmoCRM MCP Server
2
+
3
+ MCP-сервер для [AmoCRM](https://www.amocrm.ru/). Подключается к Claude Desktop и даёт Claude прямой доступ к вашей CRM через 17 инструментов.
4
+
5
+ Задавайте вопросы на русском — Claude сам вызовет нужные API и скомбинирует ответ.
6
+
7
+ ## Архитектура
8
+
9
+ ```
10
+ ┌──────────────────┐ stdin/stdout ┌──────────────────┐ HTTPS ┌──────────────┐
11
+ │ Claude Desktop │ ◄──── MCP Protocol ──► │ amocrm-mcp │ ◄── REST ───► │ AmoCRM API │
12
+ │ (LLM + UI) │ │ (локальный) │ │ (облако) │
13
+ └──────────────────┘ └──────────────────┘ └──────────────┘
14
+ ```
15
+
16
+ **Как это работает:**
17
+
18
+ 1. Claude Desktop запускает `amocrm-mcp` как subprocess
19
+ 2. MCP-сервер сообщает Claude: "у меня 17 инструментов — get_leads, get_contacts..."
20
+ 3. Пользователь пишет вопрос на русском
21
+ 4. Claude решает какие инструменты вызвать и в каком порядке
22
+ 5. MCP-сервер передаёт запросы в AmoCRM API v4, возвращает JSON
23
+ 6. Claude анализирует данные и отвечает пользователю
24
+
25
+ Внутри MCP-сервера нет ИИ — это прокси между Claude и AmoCRM.
26
+
27
+ ## Установка
28
+
29
+ ### Вариант A: pip (рекомендуется)
30
+
31
+ ```bash
32
+ pip install amocrm-mcp
33
+ ```
34
+
35
+ ### Вариант B: из исходников
36
+
37
+ ```bash
38
+ git clone https://github.com/ilyaberdysh/amocrm-mcp.git
39
+ cd amocrm-mcp
40
+ pip install -e .
41
+ ```
42
+
43
+ ## Настройка
44
+
45
+ ### 1. Создать интеграцию в AmoCRM
46
+
47
+ 1. AmoCRM → **Настройки** → **Интеграции** → **Создать интеграцию**
48
+ 2. Тип: **Внешняя интеграция**
49
+ 3. Redirect URI: `https://localhost`
50
+ 4. Скопировать **Client ID** и **Client Secret**
51
+
52
+ ### 2. Авторизоваться
53
+
54
+ ```bash
55
+ amocrm-mcp-auth
56
+ ```
57
+
58
+ Или если установлено из исходников:
59
+
60
+ ```bash
61
+ python3 auth_setup.py
62
+ ```
63
+
64
+ Скрипт спросит:
65
+ - **Субдомен** — часть URL вашего AmoCRM (например `mycompany` из `mycompany.amocrm.ru`)
66
+ - **Client ID** и **Client Secret** — из шага 1
67
+ - **Redirect URI** — по умолчанию `https://localhost`
68
+ - **Auth code** — откроется URL, авторизуетесь, скопируете `code` из URL редиректа
69
+
70
+ Токены сохранятся в `~/.amocrm/config.json`.
71
+
72
+ ### 3. Подключить к Claude Desktop
73
+
74
+ Откройте файл конфигурации:
75
+
76
+ **Mac:** `~/Library/Application Support/Claude/claude_desktop_config.json`
77
+ **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
78
+
79
+ Добавьте:
80
+
81
+ ```json
82
+ {
83
+ "mcpServers": {
84
+ "amocrm": {
85
+ "command": "amocrm-mcp"
86
+ }
87
+ }
88
+ }
89
+ ```
90
+
91
+ > Если установлено из исходников, укажите полный путь:
92
+ > ```json
93
+ > {"command": "python3", "args": ["/путь/до/amocrm-mcp/server.py"]}
94
+ > ```
95
+
96
+ ### 4. Перезапустить Claude Desktop
97
+
98
+ **Cmd+Q** (Mac) / **Alt+F4** (Windows) → открыть заново.
99
+
100
+ В чате появится иконка инструментов — `amocrm` с 17 тулами.
101
+
102
+ ### 5. Проверить
103
+
104
+ ```
105
+ Покажи мои воронки в AmoCRM
106
+ ```
107
+
108
+ ## Инструменты (17)
109
+
110
+ | Инструмент | Что делает |
111
+ |------------|-----------|
112
+ | `get_pipelines` | Воронки продаж с этапами и их ID |
113
+ | `get_leads` | Сделки с фильтрами (менеджер, воронка, статус, даты, сумма) |
114
+ | `count_and_sum_leads` | Подсчёт и сумма сделок **без лимита 200** — для аналитики |
115
+ | `get_contacts` | Контакты (поиск по имени, email, телефону) |
116
+ | `get_companies` | Компании |
117
+ | `get_users` | Пользователи / менеджеры |
118
+ | `get_tasks` | Задачи (активные/выполненные, сортировка по дедлайну) |
119
+ | `get_notes` | Примечания к сделкам, контактам, компаниям |
120
+ | `get_events` | Журнал событий (смена этапов, создание сделок) |
121
+ | `get_customers` | Покупатели (повторные клиенты) |
122
+ | `get_unsorted` | Неразобранные заявки |
123
+ | `get_catalogs` | Каталоги товаров/услуг |
124
+ | `get_catalog_elements` | Элементы каталогов |
125
+ | `get_custom_fields` | Пользовательские поля сущностей |
126
+ | `get_loss_reasons` | Причины отказа |
127
+ | `get_tags` | Теги |
128
+ | `get_sources` | Источники трафика |
129
+
130
+ ## Примеры запросов
131
+
132
+ ```
133
+ Сколько сделок закрыто в феврале 2025?
134
+ Сравни продажи за этот и прошлый месяц
135
+ Кто из менеджеров закрыл больше всего сделок?
136
+ Покажи просроченные задачи Никиты
137
+ Сделки на этапе "Переговоры" во всех воронках
138
+ Найди сделки дороже 500 000 ₽ в работе
139
+ Сколько неразобранных заявок?
140
+ Какие кастомные поля есть у сделок?
141
+ Причины отказа по проигранным сделкам
142
+ ```
143
+
144
+ ## Структура проекта
145
+
146
+ ```
147
+ amocrm-mcp/
148
+ ├── server.py # MCP-сервер — точка входа, 17 tool definitions
149
+ ├── amocrm_client.py # AmoCRM API v4 клиент
150
+ │ - OAuth2 с auto-refresh токенов
151
+ │ - Retry на 429 (rate limit) с backoff 2s/5s/10s
152
+ │ - Пагинация до 10 000 записей
153
+ │ - Обработка пустых ответов API
154
+ ├── config.py # Чтение/запись ~/.amocrm/config.json
155
+ ├── auth_setup.py # CLI для первичной OAuth2 авторизации
156
+ ├── pyproject.toml # Метаданные, зависимости, entry points
157
+ └── QA_TEST_PROMPT.md # QA-промпт для тестирования (10 вопросов)
158
+ ```
159
+
160
+ ## Токены
161
+
162
+ - Хранятся в `~/.amocrm/config.json`
163
+ - Обновляются автоматически при каждом запросе
164
+ - Протухают если не использовать > 3 месяцев
165
+ - Если протухли — снова запустите `amocrm-mcp-auth`
166
+
167
+ ## Отладка
168
+
169
+ ```bash
170
+ # Проверить что сервер запускается
171
+ amocrm-mcp
172
+ # Если висит без ошибок — ждёт подключения (Ctrl+C для выхода)
173
+
174
+ # Проверить конфиг
175
+ cat ~/.amocrm/config.json
176
+
177
+ # Логи Claude Desktop
178
+ # Mac: ~/Library/Logs/Claude/
179
+ # Windows: %APPDATA%\Claude\logs\
180
+ ```
181
+
182
+ ## Требования
183
+
184
+ - Python 3.11+
185
+ - Claude Desktop
186
+ - Аккаунт AmoCRM с правами создания интеграций
187
+
188
+ ## Технологии
189
+
190
+ - [MCP SDK](https://github.com/modelcontextprotocol/python-sdk) — Model Context Protocol
191
+ - AmoCRM API v4 (OAuth2)
192
+ - Без внешних HTTP-библиотек — `urllib` из stdlib
193
+
194
+ ## Лицензия
195
+
196
+ MIT