Freedcamp MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Freedcamp MCP Servershow me tasks for the Marketing project assigned to Alice"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Freedcamp MCP Server
A Model Context Protocol server that wraps the Freedcamp REST API. It lets any MCP-compatible LLM client (Claude Code, Claude Desktop, etc.) manage Freedcamp projects, tasks, users, and comments through natural language.
Features
17 tools covering projects, tasks, users, comments, and health checks
HMAC-SHA1 authentication — the API secret never leaves the server; only a signed hash is sent per request
Name resolution — pass user names, emails, or project names instead of raw numeric IDs; the server resolves them automatically with TTL-based caching
Field limiting — request only the fields you need with dot-notation (
id,title,comments.created_ts) to reduce response sizeStatus label mapping — accept human-readable strings like
"in progress"instead of numeric codesResponse filtering — internal API fields are automatically stripped from responses
Graceful shutdown — drains in-flight requests before exiting
Retry + backoff — retries on 429 and 5xx with exponential backoff
No build step — runs TypeScript directly via tsx
Prerequisites
Node.js >= 18
A Freedcamp account with API credentials (Settings → API)
Installation
git clone https://github.com/mahrukh-n8n/freedcampMCP.git
cd freedcampMCP
npm installConfiguration
Option A: .env file
cp .env.example .env
# Edit .env with your Freedcamp API key and secretOption B: Claude Code MCP settings
No .env file needed — pass credentials as environment variables:
claude mcp add freedcamp npx tsx /path/to/freedcampMCP/scripts/mcp-server.ts \
-e FREEDCAMP_API_KEY=your_key \
-e FREEDCAMP_API_SECRET=your_secretEnvironment Variables
Variable | Required | Default | Description |
| Yes | — | Freedcamp API key |
| Yes | — | Freedcamp API secret |
| No |
| Base URL (for self-hosted) |
| No |
| Log level: debug, info, warn, error |
| No |
| HTTP request timeout (ms) |
| No |
| Name resolution cache TTL (ms) |
| No |
| Max concurrent API requests |
Running
With Claude Code (recommended)
After adding the MCP server with claude mcp add, just start a conversation. Claude will call tools automatically when needed.
With MCP Inspector
npx @modelcontextprotocol/inspector npx tsx scripts/mcp-server.tsOpens a browser UI where you can call each tool and inspect responses.
Direct (stdio)
npx tsx scripts/mcp-server.tsThe server listens on stdin/stdout using the MCP stdio transport. The host process (Claude Code, Claude Desktop) manages its lifecycle.
Tools
Health
Tool | Description |
| Verify API credentials and connection status |
Projects
Tool | Write | Description |
| List projects (paginated, sortable, field-limitable) | |
| Get project by ID or name | |
| Yes | Create a project (name, description, color, group, members) |
| Yes | Update project fields (partial update) |
Tasks
Tool | Write | Description |
| List tasks with filters (assignee, status, date range, search, tags) | |
| Get task by ID with comments and tag detail; injects | |
| Yes | Create task (status labels accepted, file attachments) |
| Yes | Update task fields (partial update, file attachments) |
| Yes | Delete a task |
| Yes | Assign users to a task |
Users
Tool | Write | Description |
| List users (optionally filter by project) | |
| Get user by ID, email, or name | |
| Get authenticated user's profile | |
| Yes | Create user (email, password, first_name, OAuth) |
| Yes | Update authenticated user's profile |
Comments
Tool | Write | Description |
| Yes | Add a comment (requires item_id + app_id) |
| Yes | Update comment text |
| Yes | Delete a comment |
Name Resolution
Most ID parameters accept names, emails, or numeric IDs. Examples:
project_id: "Marketing"— resolves to the project's numeric IDassigned_to_id: "alice@example.com"— resolves to the user's numeric IDassigned_to_id: ["Alice", 42]— mixed lists accepted
Resolution results are cached with a configurable TTL (CACHE_TTL_MS).
Status Mapping
Task status accepts both numeric codes and string labels:
Code | Label |
0 | not started |
1 | in progress |
2 | completed |
Example: status: "in progress" is equivalent to status: 1.
Field Limiting
All list and get tools accept a fields parameter with dot-notation paths:
fields="id,title,priority,comments.created_ts"This reduces response size and focuses the LLM on relevant data. Nested arrays are preserved — comments.created_ts on [{created_ts: 1}] yields [{created_ts: 1}], not a flat list.
App ID Constants (for comments)
App | ID |
tasks | 2 |
milestones | 3 |
discussions | 5 |
files | 6 |
time | 8 |
issue_tracker | 9 |
Authentication
The server uses HMAC-SHA1 authentication. On every request:
A Unix timestamp is generated
A hash is computed:
HMAC-SHA1(secret, apiKey + timestamp)Auth params are sent as query string:
?api_key=...×tamp=...&hash=...
The secret never goes over the wire. At boot, the server validates credentials with GET /api_key/check.
Error Codes
Code | Meaning |
| Invalid API key/secret or insufficient access |
| Requested resource or name resolution target does not exist |
| Invalid input parameters |
| Resource already exists |
| Server error, rate limit, or network failure |
Development
# Type check
npx tsc --noEmit
# Run tests
npx vitest run
# Watch mode
npx vitest
# Run server in dev mode
npm run devTesting
The test suite uses Vitest with mocked API responses:
npx vitest run # Single run
npx vitest # Watch mode
npx vitest --coverage # With coverageProject Structure
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.)License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/mahrukh-n8n/freedcampMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server