Freedcamp MCP Server
Servidor MCP de Freedcamp
Un servidor del Protocolo de Contexto de Modelo (MCP) que envuelve la API REST de Freedcamp. Permite que cualquier cliente LLM compatible con MCP (Claude Code, Claude Desktop, etc.) gestione proyectos, tareas, usuarios y comentarios de Freedcamp mediante lenguaje natural.
Características
17 herramientas que cubren proyectos, tareas, usuarios, comentarios y comprobaciones de estado
Autenticación HMAC-SHA1: el secreto de la API nunca sale del servidor; solo se envía un hash firmado por solicitud
Resolución de nombres: pase nombres de usuario, correos electrónicos o nombres de proyectos en lugar de IDs numéricos sin procesar; el servidor los resuelve automáticamente con almacenamiento en caché basado en TTL
Limitación de campos: solicite solo los campos que necesite con notación de puntos (
id,title,comments.created_ts) para reducir el tamaño de la respuestaMapeo de etiquetas de estado: acepta cadenas legibles por humanos como
"in progress"en lugar de códigos numéricosFiltrado de respuestas: los campos internos de la API se eliminan automáticamente de las respuestas
Apagado elegante: finaliza las solicitudes en curso antes de salir
Reintento + retroceso: reintenta en errores 429 y 5xx con retroceso exponencial
Sin paso de compilación: ejecuta TypeScript directamente a través de tsx
Related MCP server: toggl-mcp
Requisitos previos
Node.js >= 18
Una cuenta de Freedcamp con credenciales de API (Configuración → API)
Instalación
git clone https://github.com/mahrukh-n8n/freedcampMCP.git
cd freedcampMCP
npm installConfiguración
Opción A: archivo .env
cp .env.example .env
# Edit .env with your Freedcamp API key and secretOpción B: configuración de MCP para Claude Code
No se necesita archivo .env: pase las credenciales como variables de entorno:
claude mcp add freedcamp npx tsx /path/to/freedcampMCP/scripts/mcp-server.ts \
-e FREEDCAMP_API_KEY=your_key \
-e FREEDCAMP_API_SECRET=your_secretVariables de entorno
Variable | Requerido | Predeterminado | Descripción |
| Sí | — | Clave de API de Freedcamp |
| Sí | — | Secreto de API de Freedcamp |
| No |
| URL base (para autoalojamiento) |
| No |
| Nivel de registro: debug, info, warn, error |
| No |
| Tiempo de espera de solicitud HTTP (ms) |
| No |
| TTL de caché de resolución de nombres (ms) |
| No |
| Máximo de solicitudes API concurrentes |
Ejecución
Con Claude Code (recomendado)
Después de agregar el servidor MCP con claude mcp add, simplemente inicie una conversación. Claude llamará a las herramientas automáticamente cuando sea necesario.
Con el Inspector MCP
npx @modelcontextprotocol/inspector npx tsx scripts/mcp-server.tsAbre una interfaz de navegador donde puede llamar a cada herramienta e inspeccionar las respuestas.
Directo (stdio)
npx tsx scripts/mcp-server.tsEl servidor escucha en stdin/stdout usando el transporte stdio de MCP. El proceso anfitrión (Claude Code, Claude Desktop) gestiona su ciclo de vida.
Herramientas
Salud
Herramienta | Descripción |
| Verificar las credenciales de la API y el estado de la conexión |
Proyectos
Herramienta | Escritura | Descripción |
| Listar proyectos (paginado, ordenable, limitable por campos) | |
| Obtener proyecto por ID o nombre | |
| Sí | Crear un proyecto (nombre, descripción, color, grupo, miembros) |
| Sí | Actualizar campos del proyecto (actualización parcial) |
Tareas
Herramienta | Escritura | Descripción |
| Listar tareas con filtros (asignado, estado, rango de fechas, búsqueda, etiquetas) | |
| Obtener tarea por ID con comentarios y detalle de etiquetas; inyecta | |
| Sí | Crear tarea (se aceptan etiquetas de estado, archivos adjuntos) |
| Sí | Actualizar campos de tarea (actualización parcial, archivos adjuntos) |
| Sí | Eliminar una tarea |
| Sí | Asignar usuarios a una tarea |
Usuarios
Herramienta | Escritura | Descripción |
| Listar usuarios (opcionalmente filtrar por proyecto) | |
| Obtener usuario por ID, correo electrónico o nombre | |
| Obtener el perfil del usuario autenticado | |
| Sí | Crear usuario (correo electrónico, contraseña, nombre, OAuth) |
| Sí | Actualizar el perfil del usuario autenticado |
Comentarios
Herramienta | Escritura | Descripción |
| Sí | Agregar un comentario (requiere item_id + app_id) |
| Sí | Actualizar texto del comentario |
| Sí | Eliminar un comentario |
Resolución de nombres
La mayoría de los parámetros de ID aceptan nombres, correos electrónicos o IDs numéricos. Ejemplos:
project_id: "Marketing"— se resuelve al ID numérico del proyectoassigned_to_id: "alice@example.com"— se resuelve al ID numérico del usuarioassigned_to_id: ["Alice", 42]— se aceptan listas mixtas
Los resultados de la resolución se almacenan en caché con un TTL configurable (CACHE_TTL_MS).
Mapeo de estados
El estado de la tarea acepta tanto códigos numéricos como etiquetas de cadena:
Código | Etiqueta |
0 | not started |
1 | in progress |
2 | completed |
Ejemplo: status: "in progress" es equivalente a status: 1.
Limitación de campos
Todas las herramientas de lista y obtención aceptan un parámetro fields con rutas de notación de puntos:
fields="id,title,priority,comments.created_ts"Esto reduce el tamaño de la respuesta y enfoca al LLM en los datos relevantes. Las matrices anidadas se conservan: comments.created_ts en [{created_ts: 1}] produce [{created_ts: 1}], no una lista plana.
Constantes de ID de aplicación (para comentarios)
Aplicación | ID |
tasks | 2 |
milestones | 3 |
discussions | 5 |
files | 6 |
time | 8 |
issue_tracker | 9 |
Autenticación
El servidor utiliza autenticación HMAC-SHA1. En cada solicitud:
Se genera una marca de tiempo Unix
Se calcula un hash:
HMAC-SHA1(secret, apiKey + timestamp)Los parámetros de autenticación se envían como cadena de consulta:
?api_key=...×tamp=...&hash=...
El secreto nunca viaja por la red. Al arrancar, el servidor valida las credenciales con GET /api_key/check.
Códigos de error
Código | Significado |
| Clave/secreto de API no válido o acceso insuficiente |
| El recurso solicitado o el objetivo de resolución de nombre no existe |
| Parámetros de entrada no válidos |
| El recurso ya existe |
| Error del servidor, límite de tasa o fallo de red |
Desarrollo
# Type check
npx tsc --noEmit
# Run tests
npx vitest run
# Watch mode
npx vitest
# Run server in dev mode
npm run devPruebas
El conjunto de pruebas utiliza Vitest con respuestas de API simuladas:
npx vitest run # Single run
npx vitest # Watch mode
npx vitest --coverage # With coverageEstructura del proyecto
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.)Licencia
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