freedcamp
Uses .env files to manage environment variables for storing Freedcamp API credentials and project configuration.
Integrates with GitHub for CI workflows and releases tracking as evidenced by the build badges and GitHub release downloads tracking.
Runs on Node.js runtime (v17+) and leverages its environment for executing the MCP server.
Provides distribution through npm registry with version tracking and download metrics.
Utilizes Shields.io for generating status badges in the README to display version, license, build status, and other metrics.
Built with TypeScript for type-safe development and must be compiled before running.
Click on "Deploy 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., "@freedcampadd a task for the Q4 report due next Friday"
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
This is a Model Context Protocol (MCP) server implementation for Freedcamp task management. It provides tools for creating, updating, listing, and deleting tasks in Freedcamp projects with support for bulk operations.
Available Transport Methods:
STDIO Transport - Traditional MCP transport for IDE integrations (Claude Desktop, Cursor, etc.)
HTTP Transport - Modern REST API with Server-Sent Events for web applications and cloud deployments
Features
Create multiple tasks in a single operation with title, description, priority, due date, and assignee
Update existing tasks including status changes
List all tasks in a project
Delete tasks permanently
Bulk operations support for all task management operations
Environment variable support for credentials
Comprehensive error handling and validation
Related MCP server: MCP Tasks
Prerequisites
Node.js 17 or higher
TypeScript
Freedcamp account with API access
API Key and Secret from Freedcamp
Project ID from Freedcamp
Installation (for manual invocation only, not necessary for usage with an IDE or other MCP desktop client)
Clone the repository:
git clone <repository-url>
cd freedcamp-mcpInstall dependencies:
npm installCreate a
.envfile in the root directory with your Freedcamp credentials:
FREEDCAMP_API_KEY=your_api_key
FREEDCAMP_API_SECRET=your_api_secret
FREEDCAMP_PROJECT_ID=your_project_idUsage
Running the Server
First build the TypeScript code:
npm run buildSTDIO Transport (Default)
This is the traditional transport method used by IDEs and MCP clients:
npm startHTTP Transport
For containerized deployments and HTTP-based integrations:
Development (with .env file):
npm run start:http:testProduction (with environment variables):
npm run start:httpDirect execution:
# With environment variables
FREEDCAMP_API_KEY=your_key FREEDCAMP_API_SECRET=your_secret FREEDCAMP_PROJECT_ID=your_project npm run start:http
# Or using npx
npx freedcamp-mcp --httpThe HTTP server will start on port 3000 (or the port specified by the PORT environment variable) and provide:
MCP endpoint:
http://localhost:3000/mcpHealth check:
http://localhost:3000/health
HTTP Transport Features:
Stateless operation - each request is independent
JSON responses with proper error handling
CORS support for web applications
Built-in health monitoring
Suitable for load balancing and clustering
Docker Deployment
For production deployments, you can use Docker to run the HTTP transport:
Using Docker Compose (Recommended)
Create a
.envfile with your Freedcamp credentials:
FREEDCAMP_API_KEY=your_api_key
FREEDCAMP_API_SECRET=your_api_secret
FREEDCAMP_PROJECT_ID=your_project_idStart the service:
docker-compose up -dUsing Docker directly
# Build the image
docker build -t freedcamp-mcp .
# Run the container
docker run -d \
--name freedcamp-mcp \
-p 3000:3000 \
-e FREEDCAMP_API_KEY=your_api_key \
-e FREEDCAMP_API_SECRET=your_api_secret \
-e FREEDCAMP_PROJECT_ID=your_project_id \
freedcamp-mcpThe containerized server provides the same MCP functionality via HTTP transport, making it suitable for:
Cloud deployments
Kubernetes environments
Load-balanced setups
Integration with HTTP-based MCP clients
Running the Test Harness
The project includes comprehensive test harnesses that verify all MCP functionality for both transport methods:
STDIO Transport Test:
npm testHTTP Transport Test:
npm run test:httpBoth test harnesses perform the following checks:
Server initialization with proper protocol version
Tool listing and capability verification
Single task creation, update, and deletion
Bulk task operations (create, update, delete)
Task listing and verification
Error handling and edge cases
Note: The HTTP test harness requires the HTTP server to be running. Use npm run start:http:test to start the server with test environment variables loaded.
Available Tools
freedcamp_add_taskCreates one or more new tasks in Freedcamp
Input: Object with
tasksarray containing task detailsTask Parameters:
title(required): Task title - should be clear and descriptivedescription(optional): Detailed description of what the task involvespriority(optional): Task priority level (0=Low, 1=Normal, 2=High, 3=Urgent)due_date(optional): Due date as Unix timestamp string (e.g., '1735689600' for 2025-01-01)assigned_to_id(optional): User ID to assign the task to (must be valid Freedcamp user ID)
freedcamp_update_taskUpdates one or more existing tasks in Freedcamp
Input: Object with
tasksarray containing task updatesTask Parameters:
task_id(required): ID of the task to update (must be valid existing Freedcamp task ID)title(optional): New task titledescription(optional): New task descriptionpriority(optional): New task priority (0=Low, 1=Normal, 2=High, 3=Urgent)due_date(optional): New due date as Unix timestamp stringassigned_to_id(optional): User ID to reassign the task tostatus(optional): New task status (0=Open, 1=Completed, 2=Closed)
freedcamp_list_tasksRetrieves all tasks in the configured Freedcamp project
No parameters required (uses project ID from environment variables)
Returns task details including ID, title, status, and other metadata
freedcamp_delete_taskPermanently deletes one or more tasks from Freedcamp
Input: Object with
tasksarray containing task IDs to deleteTask Parameters:
task_id(required): ID of the task to delete (WARNING: This action cannot be undone)
Example Usage
Creating multiple tasks:
{
"tasks": [
{
"title": "Setup project structure",
"description": "Initialize the basic project folder structure",
"priority": 2,
"due_date": "1735689600"
},
{
"title": "Implement authentication",
"description": "Add user login and registration functionality",
"priority": 3,
"assigned_to_id": "12345"
}
]
}Updating multiple tasks:
{
"tasks": [
{
"task_id": "67890",
"status": 1,
"description": "Updated: Added OAuth integration"
},
{
"task_id": "67891",
"priority": 3,
"due_date": "1735776000"
}
]
}Deleting multiple tasks:
{
"tasks": [
{
"task_id": "67892"
},
{
"task_id": "67893"
}
]
}IDE Integration
The server can be run directly using npx without cloning the repository. Choose between STDIO transport (traditional) or HTTP transport (modern) based on your needs.
Cursor
Option 1: STDIO Transport (Default)
Open (or create)
.cursor/mcp.jsonin your project root.Add your Freedcamp MCP server configuration:
{ "mcpServers": { "freedcamp": { "command": "npx", "args": ["freedcamp-mcp"], "env": { "FREEDCAMP_API_KEY": "your_api_key", "FREEDCAMP_API_SECRET": "your_api_secret", "FREEDCAMP_PROJECT_ID": "your_project_id" } } } }Restart Cursor or reload MCP servers.
Option 2: HTTP Transport
First, start the HTTP server (in a separate terminal):
npx freedcamp-mcp --http # Or with environment variables: FREEDCAMP_API_KEY=your_key FREEDCAMP_API_SECRET=your_secret FREEDCAMP_PROJECT_ID=your_project npx freedcamp-mcp --httpConfigure Cursor to use HTTP transport:
{ "mcpServers": { "freedcamp": { "transport": "http", "url": "http://localhost:3000/mcp" } } }Restart Cursor or reload MCP servers.
Claude Desktop
Option 1: STDIO Transport (Default)
Open (or create)
~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS or%APPDATA%/Claude/claude_desktop_config.jsonon Windows.Add your Freedcamp MCP server configuration:
{ "mcpServers": { "freedcamp": { "command": "npx", "args": ["freedcamp-mcp"], "env": { "FREEDCAMP_API_KEY": "your_api_key", "FREEDCAMP_API_SECRET": "your_api_secret", "FREEDCAMP_PROJECT_ID": "your_project_id" } } } }Restart Claude Desktop.
Option 2: HTTP Transport
Start the HTTP server:
npx freedcamp-mcp --httpConfigure Claude Desktop to use HTTP transport:
{ "mcpServers": { "freedcamp": { "transport": "http", "url": "http://localhost:3000/mcp" } } }Restart Claude Desktop.
Roo
Option 1: STDIO Transport (Default)
Open (or create) your Roo MCP config file (commonly
roo.mcp.jsonor similar).Add your Freedcamp MCP server configuration:
{ "mcpServers": { "Freedcamp": { "transport": "stdio", "command": "npx", "args": ["freedcamp-mcp"], "env": { "FREEDCAMP_API_KEY": "your_api_key", "FREEDCAMP_API_SECRET": "your_api_secret", "FREEDCAMP_PROJECT_ID": "your_project_id" } } } }
Option 2: HTTP Transport
Start the HTTP server:
npx freedcamp-mcp --httpConfigure Roo to use HTTP transport:
{ "mcpServers": { "Freedcamp": { "transport": "http", "url": "http://localhost:3000/mcp" } } }
API Reference
For detailed information about Freedcamp's API, visit: https://freedcamp.com/api-docs
License
MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
4 toolsfreedcamp_add_taskA
Create one or more new tasks in Freedcamp with support for title, description, priority, due date, and assignee. Supports bulk operations for creating multiple tasks at once.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title ('Create Task'), so the description carries the burden. It discloses that the tool creates tasks and supports bulk operations, which is useful context beyond annotations. However, it lacks details on permissions, rate limits, or what happens on failure, which are important for a creation tool with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose and followed by key features. Every sentence adds value: the first defines the action and scope, the second highlights bulk capability and supported fields, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and annotations only providing a title, the description is somewhat complete for a creation tool but lacks details on return values, error handling, or prerequisites. It covers the basics but could be more informative for a tool with 1 parameter (an array of objects) and no structured output documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists supported fields (title, description, priority, due date, assignee) and mentions bulk operations, adding meaning beyond the schema's structure. However, it does not explain the 'tasks' array parameter's semantics or constraints in detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create one or more new tasks in Freedcamp' with specific verb (create) and resource (tasks), and distinguishes from siblings by focusing on creation rather than deletion, listing, or updating mentioned in sibling tool names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating tasks and mentions 'bulk operations for creating multiple tasks at once,' which provides context for when to use it (multiple tasks). However, it does not explicitly state when not to use it or name alternatives like the sibling tools for other operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freedcamp_delete_taskA
Permanently delete one or more tasks from Freedcamp. WARNING: This action cannot be undone. Supports bulk operations for deleting multiple tasks at once.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond what annotations provide. Annotations only give a title ('Delete Task'), while the description explicitly warns that the action 'cannot be undone', clarifies it's permanent, and mentions support for bulk operations - all critical behavioral traits for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the core action with critical warning, the second adds important bulk operation capability. No wasted words, front-loaded with the most critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a destructive mutation tool with no output schema and minimal annotations, the description does well by warning about irreversibility and mentioning bulk operations. However, it could be more complete by specifying what happens to dependent objects or confirming deletion success criteria.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage (the schema has no parameter descriptions), the description carries the full burden. It adds meaningful context by explaining that the tool supports bulk operations for deleting multiple tasks at once, which helps interpret the 'tasks' array parameter structure, though it doesn't detail individual parameter semantics like 'task_id' format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('permanently delete') and resource ('tasks from Freedcamp'), distinguishing it from sibling tools like 'add_task', 'list_tasks', and 'update_task' which perform different operations on the same resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('permanently delete one or more tasks') and mentions bulk operations, but does not explicitly state when NOT to use it or name specific alternatives like 'update_task' for modifications instead of deletions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freedcamp_list_tasksB
Retrieve all tasks in the configured Freedcamp project. Returns task details including ID, title, description, status, priority, due date, and assignee information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title ('List Tasks'), so the description carries the burden of behavioral disclosure. It adds value by specifying the return format (task details like ID, title, status, etc.) and implying a read-only operation, but doesn't cover aspects like error handling, pagination, or rate limits. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the action, scope, and return details without redundancy. It's front-loaded with the core purpose, but could be slightly more concise by integrating the return information more seamlessly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, minimal annotations), the description is adequate but has gaps. It explains what the tool does and what it returns, but lacks usage guidelines, error handling, or behavioral nuances. For a list tool with no complex inputs, this is minimally viable but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately omits parameter details, focusing on the tool's function and output. This meets the baseline for zero parameters, but doesn't exceed expectations with extra context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Retrieve') and resource ('all tasks in the configured Freedcamp project'), making the purpose evident. It distinguishes from siblings by focusing on listing rather than adding, deleting, or updating tasks. However, it doesn't explicitly contrast with sibling tools, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'freedcamp_add_task' or 'freedcamp_update_task'. It lacks context about prerequisites (e.g., needing a configured project) or exclusions, leaving usage decisions to inference from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
freedcamp_update_taskB
Update one or more existing tasks in Freedcamp including title, description, priority, due date, assignee, and status. Supports bulk operations for updating multiple tasks at once.
| Name | Required | Description | Default |
|---|---|---|---|
| tasks | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide a title ('Update Task'), so the description carries the full burden. It mentions bulk operations but lacks details on permissions, rate limits, error handling, or what happens to unspecified fields (e.g., whether they remain unchanged). This is inadequate for a mutation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and includes essential details like bulk support. It avoids redundancy but could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, 0% schema description coverage, and no output schema, the description is incomplete. It lacks behavioral context (e.g., side effects, auth needs), detailed parameter guidance, and output information, making it insufficient for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description lists key updatable fields (title, description, priority, due date, assignee, status), which adds meaning beyond the bare schema. However, it doesn't explain the 'tasks' array structure or parameter constraints, leaving gaps in documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Update') and resource ('existing tasks in Freedcamp'), and lists specific fields that can be updated. It distinguishes itself from siblings by focusing on updates rather than adding, deleting, or listing tasks. However, it doesn't explicitly contrast with siblings beyond the core action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for updating tasks, including bulk operations, but doesn't provide explicit guidance on when to use this tool versus alternatives like 'freedcamp_add_task' for new tasks or 'freedcamp_delete_task' for removal. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
freedcamp_add_task - First observed
freedcamp_delete_task - First observed
freedcamp_list_tasks - First observed
freedcamp_update_task
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose targeting different CRUD operations: add_task for creation, delete_task for deletion, list_tasks for retrieval, and update_task for modification. There is no overlap or ambiguity between these functions.
All tools follow a consistent 'freedcamp_verb_task' pattern with snake_case, using clear action verbs (add, delete, list, update). This predictable naming makes it easy to understand each tool's function at a glance.
Four tools is perfectly appropriate for a task management server, covering the essential CRUD operations without being overwhelming. Each tool earns its place with distinct functionality, and the count aligns well with the server's focused scope.
The tool set provides complete CRUD coverage for tasks in Freedcamp, including bulk operations for efficiency. There are no obvious gaps—agents can create, read, update, and delete tasks, covering the full lifecycle without dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that enables advanced task and project management in Todoist via Claude Desktop and other MCP-compatible clients.271 npm2MIT
- AlicenseAqualityBmaintenanceA comprehensive and efficient Model Context Protocol server for task management that works with Claude, Cursor, and other MCP clients, providing powerful search, filtering, and organization capabilities across multiple file formats.5197 npm47MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables seamless integration with Freedcamp API for enterprise-level project management with advanced filtering, full CRUD operations, and extensive customization options.5MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that exposes Kanboard API functionality to Large Language Models (LLMs), enabling AI assistants to interact with Kanboard project management system.2MIT