ima-mcp-server
IMA Multi-пользовательский MCP Server
Мультипользовательский MCP-прокси для Tencent IMA OpenAPI (заметки + база знаний).
Передача учётных данных через заголовки запроса: каждый запрос несёт собственные Client ID + API Key пользователя, на сервере ноль хранимых данных
Stateless Streamable HTTP: многопользовательский параллелизм изолирован по своей природе, перезапуск незаметен, горизонтальное масштабирование
Допуск по белому списку client_id: доступны только зарегистрированные Client ID; изменения файла вступают в силу мгновенно, без перезапуска
17 инструментов: 6 для заметок + 9 для базы знаний + запасной raw_call + проверка связности
Происхождение дизайна
Этот проект не возник на пустом месте, а представляет собой «многопользовательский рефакторинг» существующих решений сообщества. Логика дизайна следующая:
Решаемая проблема: возможности заметок/базы знаний Tencent IMA изначально были доступны только одному пользователю в одном экземпляре. Цель — превратить это в сервер, который одновременно обслуживает нескольких пользователей — каждый подключается со своими учётными данными Tencent, сервер не хранит ключи ни за кого, смена устройства или пользователя не требует обслуживания.
Три исследованных подхода (основные модели многопользовательских MCP-серверов):
Режим | Представитель | Расположение учётных данных | Компромисс |
Передача через заголовки запроса (stateless) | HTTP-заголовки | ✅ Принято | |
Выбор личности через URL-параметр | Таблица сопоставлений на сервере | ❌ Серверу нужно хранить ключи, противоречит цели нулевого хранения | |
OAuth 2.1 resource server | Встроено в MCP SDK | Bearer JWT | ❌ Требуется сервер авторизации, избыточно для частных лиц/небольших команд |
Три ключевых ориентира:
amberpepper/ima-mcp (TypeScript) — прямой прототип для 15 путей конечных точек IMA OpenAPI, структуры тела запроса и именования вышестоящих заголовков (
ima-openapi-clientid/ima-openapi-apikey/ima-openapi-ctx) этого проекта, всё сверено по пунктам. Этот проект воспроизводит его дизайн инструментов, но заменяет архитектуру «однопользовательский stdio + учётные данные через переменные окружения» на «многопользовательский Streamable HTTP + учётные данные в заголовках». Его инструмент загрузки файлов, зависящий от локального пути на сервере, был удалён как бессмысленный для удалённых пользователей.LRGEX/notion-mcp — источник парадигмы stateless-мультипользовательности: «каждый инструмент первым делом берёт учётные данные из заголовков запроса, на каждый запрос создаётся новый клиент, который используется и выбрасывается».
github/github-mcp-server — ориентир по контейнеризации, группировке инструментов и инженерной форме официального MCP-сервера; его путь многопользовательности через OAuth был осознанно отвергнут в пользу минималистичной модели «пользователь приносит свой ключ, ноль хранения».
Две итерации эволюции аутентификации:
Первоначальный черновик имел двухуровневую аутентификацию (административный токен доступа + пользовательские учётные данные IMA), но позже был упрощён до принципа «учётные данные — это личность» — сами учётные данные IMA пользователя и есть единственное удостоверение личности, ответ интерфейса Tencent (401) и есть проверка, отдельный токен доступа больше не выдаётся;
Дальнейшая эволюция привела к белому списку client_id: локально решается вопрос «прав» (разрешено ли), Tencent решает вопрос «подлинности» (действителен ли ключ) — два уровня, каждый выполняет свою функцию. Был выбран белый список client_id, а не api_key, потому что API-ключи IMA истекают/могут быть сброшены, тогда как client_id — это стабильный идентификатор личности.
Протокольная основа: транспорт MCP Streamable HTTP + stateless-режим (stateless_http=True), каждый запрос независим, нет таблиц сессий, из коробки поддерживаются конкурентность и горизонтальное масштабирование.
Related MCP server: Productboard MCP — Curve & Flex
Быстрое развёртывание (Docker Compose)
cd ~/ima-mcp-server
cp -n .env.example .env
# 编辑 config/allowed_clients.txt,把允许的 client_id 写进去(每行一个)
docker compose build
docker compose up -d
docker compose logs -f --tail=50 # 看到 "就绪" 与白名单条数即成功Сервис слушает 127.0.0.1:8044 (доступен только через обратный прокси/публичный шлюз на той же машине). Если нужно открыть напрямую наружу, измените ports в docker-compose.yml на "0.0.0.0:8044:8044" (и убедитесь, что на канале есть TLS).
Управление белым списком
Отредактируйте config/allowed_clients.txt: по одному client_id в строке, после # идёт комментарий
Изменения вступают в силу мгновенно (горячая перезагрузка по времени изменения файла), перезапуск контейнера не требуется
Файл существует, но нет действительных записей → все запросы отклоняются (fail-closed)
Файл удалён и IMA_ALLOWED_CLIENTS пуст → открытый режим
Смоук-тест
bash tests/smoke.sh <你的client_id> <你的api_key>Ожидается: 1) initialize успешен; 2) tools/list возвращает 17 инструментов; 3) вызов без учётных данных возвращает ошибку об отсутствии учётных данных; 4) реальные учётные данные возвращают status ok.
Конфигурация клиента (на примере Chatbox)
Тип: Remote MCP / Streamable HTTP
URL:
http://<IP-сервера>:8044/mcp(используйте https, если вышестоящий сервер за TLS)Заголовки запроса:
X-Ima-ClientId: собственный client_id пользователяX-Ima-ApiKey: собственный api_key пользователя
Примечание: IMA API Key может истечь; при недействительности сбросьте его на https://ima.qq.com/agent-interface и обновите заголовки запроса клиента.
Обновление
docker compose build && docker compose up -dЧасто задаваемые вопросы
Симптом | Причина и решение |
Инструмент возвращает «Учётные данные недействительны или истёк срок действия» | API-ключ истёк или введён неверно, сбросьте на стороне Tencent |
Инструмент возвращает «Нет авторизации на использование этого MCP-сервиса» | client_id отсутствует в белом списке |
Все запросы отклоняются | В файле белого списка нет ни одной действительной записи |
Chatbox не загружает инструменты | Проверьте, что URL заканчивается на /mcp; посмотрите docker compose logs |
Лицензия
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables secure read-only access to Tencent Lexiang knowledge bases via MCP, including listing directories, RAG search, and reading entries.MIT
- FlicenseNot gradedqualityBmaintenanceEnables reading and writing Productboard data via MCP tools, with Google OAuth login, per-user allowlist, and workspace binding for secure, audited access.
- FlicenseNot gradedqualityBmaintenanceMCP server for Tencent IMA OpenAPI, enabling notes and knowledge base management through tools like search, create, and list.67
- FlicenseBqualityAmaintenanceEnables managing Logto resources (users, applications, organizations, roles) via MCP clients like Cursor or Claude Desktop.261
Related MCP Connectors
Remote MCP for A2A caller identity, scope policy, verdict receipts, and audit history.
OAuth scope approvals and consent receipts for remote MCP servers.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/waityou-love/ima-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server