@fruition/fcp-mcp-server
v1.35.0
Published
MCP Server for FCP Launch Coordination System - enables Claude Code to interact with FCP launches and track development time
Readme
FCP MCP Server
MCP (Model Context Protocol) server that gives Claude Code direct access to the FCP Launch Coordination System. Also includes automatic time tracking integration with Unroo.
Features
FCP Launch Management Tools
| Tool | Description |
|------|-------------|
| fcp_list_launches | List launches with optional filters (status, platform, upcoming days) |
| fcp_get_launch | Get detailed launch info including checklist and team |
| fcp_get_legacy_access | Get legacy hosting access info for migrations |
| fcp_get_checklist | Get checklist items with Claude instructions |
| fcp_update_checklist_item | Update checklist item status as you complete work |
| fcp_add_progress_note | Add progress notes to document work done |
| fcp_get_claude_md | Generate CLAUDE.md content for a launch |
Tasker Freeze Management Tools
| Tool | Description |
|------|-------------|
| fcp_list_freezes | List active + scheduled auto-merge freezes and the available repos |
| fcp_freeze_repo | Schedule a freeze (by days or explicit window) to hold a repo's deploys |
| fcp_update_freeze | Edit an existing freeze's window or reason |
| fcp_unfreeze | Remove a freeze by id, or clear all freezes for a repo |
Certificate Tools
| Tool | Description |
|------|-------------|
| fcp_list_certificates | Fleet TLS certs with status/expiry/cluster filters |
| fcp_get_certificate | Single certificate detail (issuer, SANs, expiry) |
| fcp_scan_certificates | Trigger a cert-monitor scan run |
Cluster Gateway Tools
| Tool | Description |
|------|-------------|
| fcp_db_query | Run a read-only SQL query (SELECT/SHOW/EXPLAIN/DESCRIBE) against a site's read-only DB replica |
| fcp_cluster_http | GET/HEAD an in-cluster Kubernetes Service URL through FCP (devs firewalled off the cluster) |
Cluster Safe-Edit Action Tools
Structural, audited mutations (operator tier). The caller supplies ONLY a site (+ optional revision); the target deployment is resolved from the site's stack server-side — no deployment name or raw command is ever accepted. Admin-gated REST routes, CLUSTER_GATEWAY_DISABLED kill-switch, prod-cluster Slack alert.
| Tool | Description |
|------|-------------|
| fcp_restart_varnish | Restart a site's varnish deployment (rollout restart) |
| fcp_rollback_web | Roll back a site's web (nginx + php-fpm) deployment (rollout undo), optional to_revision |
Tasker Job Control Tools
| Tool | Description |
|------|-------------|
| fcp_spawn_task_job | Spawn an automated code-change job for an Unroo task |
| fcp_get_job_status | Job status by job_id/task_id (or all + stats) |
| fcp_list_jobs | List the current Tasker job queue |
| fcp_approve_job | Approve merge for a job needing human sign-off |
| fcp_override_merge_window | Force-allow an auto-merge outside its deploy window (super_admin) |
Site Ops Tools
| Tool | Description |
|------|-------------|
| fcp_dns_current | Current live DNS records (A/CNAME) for a site |
| fcp_dns_history | DNS snapshot history with diffs (filter recordType/limit/since) |
| fcp_list_deployments | Deployments (GitHub Actions runs) across sites + stats |
| fcp_get_deployment_status | Real-time k8s deployment + pod health for a site |
| fcp_purge_cache | Purge edge cache (Varnish + DynamoDB + CloudFront + Cloudflare) (admin) |
| fcp_list_maintenance_windows | List maintenance windows (all, or by-site with websiteId) |
| fcp_create_maintenance_window | Create a recurring maintenance window (admin) |
Unroo Task Management Tools
| Tool | Description |
|------|-------------|
| unroo_list_projects | List all Unroo projects mapped to FCP clients |
| unroo_list_tasks | Query tasks with filters (status, project, assignee) |
| unroo_create_task | Create new tasks for discovered issues or follow-ups |
| unroo_update_task | Update task status, hours logged, priority |
| unroo_get_my_tasks | Get tasks assigned to current user |
| unroo_start_session | Start work session for time tracking |
| unroo_end_session | End work session and log time |
| unroo_create_follow_up | Create follow-up task linked to a parent |
Resources
fcp://launches- List of all launchesfcp://launches/{id}- Single launch details
Setup
1. Install Dependencies
cd mcp-server
npm install2. Build
npm run build3. Configure Environment
Create a .env file or set environment variables:
FCP_API_URL=https://fcp.fru.io # or http://localhost:3090 for local dev
FCP_API_TOKEN=your_api_token # Get from FCP Settings > API Tokens4. Add to Claude Code
Add to your Claude Code settings (~/.claude/settings.json):
{
"mcpServers": {
"fcp": {
"command": "node",
"args": ["/path/to/fcp/mcp-server/dist/index.js"],
"env": {
"FCP_API_URL": "https://fcp.fru.io",
"FCP_API_TOKEN": "your_api_token"
}
}
}
}Or for development:
{
"mcpServers": {
"fcp": {
"command": "npx",
"args": ["tsx", "/path/to/fcp/mcp-server/src/index.ts"],
"env": {
"FCP_API_URL": "http://localhost:3090",
"FCP_API_TOKEN": "dev_token"
}
}
}
}Usage Examples
Once configured, Claude Code can use these tools naturally:
Get launch context for current project
"What's the status of launch 3 and what checklist items are remaining?"Claude will call fcp_get_launch and fcp_get_checklist to get the info.
Work through checklist items
"I've completed the database export. Mark that checklist item as done."Claude will call fcp_update_checklist_item to update the status.
Get legacy access info
"How do I access the legacy hosting for this migration?"Claude will call fcp_get_legacy_access to get hosting, database, and file access details.
Document progress
"Add a note that I've migrated all user accounts successfully."Claude will call fcp_add_progress_note to log the progress.
Development
Run in development mode:
npm run devThis uses tsx to run TypeScript directly without building.
API Token
To get an API token for the MCP server:
- Go to FCP: https://fcp.fru.io/dashboard/settings
- Navigate to "API Tokens" section
- Create a new token with "Launch Management" permissions
- Copy the token to your MCP server configuration
Troubleshooting
"Authentication failed"
- Check that
FCP_API_TOKENis set correctly - Verify the token has the required permissions
"Connection refused"
- Check that
FCP_API_URLis correct - For local dev, ensure FCP is running on port 3090
Tools not appearing
- Restart Claude Code after updating settings
- Check Claude Code logs for MCP server errors
Time Tracking with Unroo
This package also includes unroo-heartbeat, a script that automatically tracks your Claude Code development time in Unroo.
Quick Setup
After installing the package globally (npm install -g @fruition/fcp-mcp-server), configure time tracking:
1. Set your Unroo API key
Add to ~/.bashrc or ~/.zshrc:
export UNROO_API_KEY="mcp_XXXXXX_your_key_here"Get your API key from Unroo: Settings → API Keys → Create with "Time Tracking" enabled.
2. Configure Claude Code hooks
Add to ~/.claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "*",
"hooks": [
{
"type": "command",
"command": "unroo-heartbeat"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "unroo-heartbeat session_end"
}
]
}
]
}
}3. Restart Claude Code
Time tracking is now active. Sessions are automatically mapped to the correct Unroo project based on:
.unroofile in project root (if present)- Saved repo→project mappings (learned from previous sessions)
- Smart matching by repo name to Jira project key
Project Configuration (Optional)
For repos that don't auto-match, create a .unroo file:
echo "project_slug=YOUR_JIRA_KEY" > .unrooThe system learns from this and saves the mapping permanently, so you only need to do this once per repo.
Viewing Time
Log in to Unroo and check My Day or Timesheet to see your tracked sessions.
