Freedcamp MCP Server
Freedcamp MCP Server
Сервер Model Context Protocol, который оборачивает REST API Freedcamp. Он позволяет любому MCP-совместимому LLM-клиенту (Claude Code, Claude Desktop и т. д.) управлять проектами, задачами, пользователями и комментариями Freedcamp с помощью естественного языка.
Возможности
17 инструментов, охватывающих проекты, задачи, пользователей, комментарии и проверку работоспособности
Аутентификация HMAC-SHA1 — секретный ключ API никогда не покидает сервер; для каждого запроса отправляется только подписанный хеш
Разрешение имен — передавайте имена пользователей, адреса электронной почты или названия проектов вместо необработанных числовых идентификаторов; сервер разрешает их автоматически с кэшированием на основе TTL
Ограничение полей — запрашивайте только нужные поля с помощью точечной нотации (
id,title,comments.created_ts) для уменьшения размера ответаСопоставление меток статуса — принимаются понятные человеку строки, такие как
"in progress"(в процессе), вместо числовых кодовФильтрация ответов — внутренние поля API автоматически удаляются из ответов
Корректное завершение работы — завершает выполнение текущих запросов перед выходом
Повторные попытки + экспоненциальная задержка — повторные попытки при ошибках 429 и 5xx с экспоненциальной задержкой
Без этапа сборки — запускает TypeScript напрямую через tsx
Related MCP server: toggl-mcp
Предварительные требования
Node.js >= 18
Учетная запись Freedcamp с учетными данными API (Настройки → API)
Установка
git clone https://github.com/mahrukh-n8n/freedcampMCP.git
cd freedcampMCP
npm installКонфигурация
Вариант A: файл .env
cp .env.example .env
# Edit .env with your Freedcamp API key and secretВариант B: настройки MCP для Claude Code
Файл .env не требуется — передайте учетные данные в виде переменных окружения:
claude mcp add freedcamp npx tsx /path/to/freedcampMCP/scripts/mcp-server.ts \
-e FREEDCAMP_API_KEY=your_key \
-e FREEDCAMP_API_SECRET=your_secretПеременные окружения
Переменная | Обязательно | По умолчанию | Описание |
| Да | — | Ключ API Freedcamp |
| Да | — | Секретный ключ API Freedcamp |
| Нет |
| Базовый URL (для self-hosted) |
| Нет |
| Уровень логирования: debug, info, warn, error |
| Нет |
| Тайм-аут HTTP-запроса (мс) |
| Нет |
| TTL кэша разрешения имен (мс) |
| Нет |
| Макс. количество одновременных запросов к API |
Запуск
С помощью Claude Code (рекомендуется)
После добавления MCP-сервера с помощью claude mcp add просто начните диалог. Claude будет вызывать инструменты автоматически по мере необходимости.
С помощью MCP Inspector
npx @modelcontextprotocol/inspector npx tsx scripts/mcp-server.tsОткрывает интерфейс браузера, где можно вызвать каждый инструмент и изучить ответы.
Напрямую (stdio)
npx tsx scripts/mcp-server.tsСервер прослушивает stdin/stdout, используя транспорт MCP stdio. Хост-процесс (Claude Code, Claude Desktop) управляет его жизненным циклом.
Инструменты
Здоровье (Health)
Инструмент | Описание |
| Проверка учетных данных API и статуса подключения |
Проекты
Инструмент | Запись | Описание |
| Список проектов (с пагинацией, сортировкой, ограничением полей) | |
| Получить проект по ID или имени | |
| Да | Создать проект (имя, описание, цвет, группа, участники) |
| Да | Обновить поля проекта (частичное обновление) |
Задачи
Инструмент | Запись | Описание |
| Список задач с фильтрами (исполнитель, статус, диапазон дат, поиск, теги) | |
| Получить задачу по ID с комментариями и деталями тегов; внедряет | |
| Да | Создать задачу (принимаются метки статуса, вложения файлов) |
| Да | Обновить поля задачи (частичное обновление, вложения файлов) |
| Да | Удалить задачу |
| Да | Назначить пользователей на задачу |
Пользователи
Инструмент | Запись | Описание |
| Список пользователей (опционально фильтрация по проекту) | |
| Получить пользователя по ID, email или имени | |
| Получить профиль аутентифицированного пользователя | |
| Да | Создать пользователя (email, пароль, имя, OAuth) |
| Да | Обновить профиль аутентифицированного пользователя |
Комментарии
Инструмент | Запись | Описание |
| Да | Добавить комментарий (требуется item_id + app_id) |
| Да | Обновить текст комментария |
| Да | Удалить комментарий |
Разрешение имен
Большинство параметров ID принимают имена, адреса электронной почты или числовые идентификаторы. Примеры:
project_id: "Marketing"— разрешается в числовой ID проектаassigned_to_id: "alice@example.com"— разрешается в числовой ID пользователяassigned_to_id: ["Alice", 42]— принимаются смешанные списки
Результаты разрешения кэшируются с настраиваемым TTL (CACHE_TTL_MS).
Сопоставление статусов
Статус задачи принимает как числовые коды, так и строковые метки:
Код | Метка |
0 | not started |
1 | in progress |
2 | completed |
Пример: status: "in progress" эквивалентно status: 1.
Ограничение полей
Все инструменты списка и получения принимают параметр fields с путями в точечной нотации:
fields="id,title,priority,comments.created_ts"Это уменьшает размер ответа и фокусирует LLM на релевантных данных. Вложенные массивы сохраняются — comments.created_ts для [{created_ts: 1}] дает [{created_ts: 1}], а не плоский список.
Константы App ID (для комментариев)
Приложение | ID |
tasks | 2 |
milestones | 3 |
discussions | 5 |
files | 6 |
time | 8 |
issue_tracker | 9 |
Аутентификация
Сервер использует аутентификацию HMAC-SHA1. При каждом запросе:
Генерируется метка времени Unix
Вычисляется хеш:
HMAC-SHA1(secret, apiKey + timestamp)Параметры аутентификации отправляются в строке запроса:
?api_key=...×tamp=...&hash=...
Секретный ключ никогда не передается по сети. При загрузке сервер проверяет учетные данные с помощью GET /api_key/check.
Коды ошибок
Код | Значение |
| Неверный ключ/секрет API или недостаточный доступ |
| Запрошенный ресурс или цель разрешения имени не существует |
| Неверные входные параметры |
| Ресурс уже существует |
| Ошибка сервера, ограничение скорости или сбой сети |
Разработка
# Type check
npx tsc --noEmit
# Run tests
npx vitest run
# Watch mode
npx vitest
# Run server in dev mode
npm run devТестирование
Набор тестов использует Vitest с имитацией ответов API:
npx vitest run # Single run
npx vitest # Watch mode
npx vitest --coverage # With coverageСтруктура проекта
scripts/mcp-server.ts Entry point
src/lib/freedcamp/
api-client.ts HTTP client with HMAC auth, retry, filtering
register-tools.ts Wire all tools to the MCP registry
auth/hmac.ts HMAC-SHA1 computation
auth/hmac-validator.ts Boot-time credential validation
tools/
health.ts health.check
projects.ts project.list/get/create/update
tasks.ts task.list/get/create/update/delete/assign
users.ts user.list/get/current/create/update_current
comments.ts comment.add/update/delete
utils/
name-resolver.ts Name/email → ID resolution with caching
response-filter.ts Strip internal fields from API responses
field-limiter.ts Dot-notation field extraction
date-utils.ts Date validation and formatting
resolution-cache.ts TTL-based LRU cache
logger.ts Structured logging with verbose mode
validation.ts Input validation helpers
src/modules/mcp/
registry/tool-registry.ts MCP tool registry
services/create-mcp-server.ts MCP server factory
services/stdio-transport.ts Stdio transport
types.ts MCP result types
utils/serialize.ts Result envelope helpers (dataResult, commitResult, etc.)Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage projects, tasks, time tracking, and team collaboration through natural language.
Read teams, spaces, lists and tasks; create, update and comment on tasks and track time.
Interact with the Stitch API using natural language commands.
Search and edit Talkenda meeting transcripts, notes, decisions and action items through OAuth.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables interaction with Basecamp 3 projects through 46 tools for managing todos, card tables, campfire messages, documents, comments, and webhooks through natural language.99MIT
- AlicenseNot gradedqualityDmaintenanceEnables to manage Toggl time entries, projects, tasks, and timers through natural language commands.5 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables to manage Redmine projects, issues, users, and time entries through natural language using the Redmine REST API.-
- AlicenseBqualityDmaintenanceMCP server enabling natural language interaction with Hubstaff data, including organizations, projects, members, tasks, and tracked-time activities.101MIT