Skip to main content
Glama

JoeMCP

README.md9.65 kB
# JoeAPI MCP Server Model Context Protocol (MCP) server for JoeAPI construction management system. Exposes construction management tools to Claude and other AI assistants. ## Overview This MCP server provides: - **18 pre-built workflows** for common construction management tasks - **60+ individual tools** for direct API access (CRUD operations) - **Multi-transport support**: Smithery (cloud) and STDIO (local) ## Architecture ``` mcp/ ├── index.ts # Main MCP server (Smithery + STDIO) ├── local-server.ts # STDIO transport runner ├── claude-desktop-config.example.json # Claude Desktop config ├── README.md # This file └── server.ts # Legacy (deprecated) mcp-build/ # Compiled JavaScript (production) ├── index.js # Compiled server ├── local-server.js # Compiled STDIO runner └── *.d.ts # TypeScript definitions ``` ## Deployment Options ### 1. Smithery (Cloud) - **EXISTING** Your MCP server is already deployed on Smithery for cloud access. **Access:** Via Smithery marketplace **URL:** `https://smithery.ai/server/@your-username/joeapi` **Transport:** HTTP **Use case:** Remote access, team collaboration ### 2. Local STDIO - **THIS SETUP** Run MCP server locally on your machine for development/testing. **Transport:** STDIO (Standard Input/Output) **Use case:** Local development, faster iteration, offline work --- ## Local STDIO Setup ### Prerequisites 1. **JoeAPI running locally:** ```bash npm run dev # Start JoeAPI on http://localhost:8080 ``` 2. **Build MCP server:** ```bash npm run mcp:build ``` 3. **Configure Claude Desktop:** - Copy `mcp/claude-desktop-config.example.json` - Update the `command` path to match your installation - Add to Claude Desktop config ### Option A: Development Mode (TypeScript) **For rapid development with auto-recompile:** ```bash npm run mcp:local ``` This runs `tsx mcp/local-server.ts` - TypeScript executed directly (no build needed). ### Option B: Production Mode (Compiled JavaScript) **For production use:** ```bash # Build once npm run mcp:build # Run compiled version npm run mcp:start ``` This runs `node mcp-build/local-server.js` - faster startup, production-ready. --- ## Claude Desktop Configuration ### Step 1: Find Claude Config Directory **macOS:** ```bash ~/Library/Application Support/Claude/ ``` **Windows:** ``` %APPDATA%\Claude\ ``` **Linux:** ``` ~/.config/Claude/ ``` ### Step 2: Edit `claude_desktop_config.json` ```json { "mcpServers": { "joeapi-local": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/joeapi/mcp-build/local-server.js" ], "env": { "JOEAPI_BASE_URL": "http://localhost:8080" }, "disabled": false } } } ``` **Important:** - Use **absolute paths** (not relative like `~/` or `./`) - Change `/ABSOLUTE/PATH/TO/joeapi/` to your actual path - Example: `/Users/joe/dev/joeapi/mcp-build/local-server.js` ### Step 3: Restart Claude Desktop Close and reopen Claude Desktop. The MCP server will connect automatically. ### Step 4: Verify Connection In Claude Desktop, type: ``` Can you use the find_workflow tool? ``` If connected, Claude will have access to all JoeAPI tools. --- ## Available Tools ### Workflow Discovery (ALWAYS START HERE!) **find_workflow** - Discover pre-built workflows - Set `autoExecute: false` to see ALL 18 workflows - Set `autoExecute: true` with workflow name to get step-by-step instructions ### 18 Pre-Built Workflows 1. `win_loss_rate` - Calculate proposal win/loss statistics 2. `sales_pipeline` - Analyze active proposals in pipeline 3. `work_in_process_report` - WIP report for active projects 4. `job_costing_detail` - Detailed job costing analysis 5. `project_profitability` - Profit analysis by project 6. `cost_variance_analysis` - Actual vs. estimated cost variance 7. `cash_flow_forecast` - Project cash flow projections 8. `schedule_variance_analysis` - Schedule delays and impacts 9. `client_portal_update` - Generate client progress updates 10. `subcontractor_performance` - Analyze subcontractor metrics 11. `material_tracking` - Track material costs and usage 12. `labor_productivity` - Analyze labor efficiency 13. `cost_per_square_foot` - Calculate $/sqft by trade 14. `change_order_tracking` - Track change orders/revisions 15. `upgrade_pricing` - Price client upgrade requests 16. `update_schedule` - Extend/adjust project schedules 17. `plan_takeoff` - Estimate from building plans 18. `estimate_from_previous` - Create estimate from past job ### 60+ Individual Tools (Categories) - **Clients** - CRUD operations for clients - **Contacts** - Manage client contacts - **SubContractors** - Subcontractor management - **Proposals** - Create and track proposals - **ProposalLines** - Line items within proposals - **Estimates** - Project estimates - **ProjectManagements** - Active project data - **ProjectSchedules** - Project timelines - **ProjectScheduleTasks** - Individual tasks - **ActionItems** - Track action items with: - Comments - Supervisors - Cost changes - Schedule changes - **Transactions** - QuickBooks transaction data - **JobBalances** - Current job balances - **CostVariance** - Cost variance analysis - **Invoices** - Invoice management - **ScheduleRevisions** - Schedule change tracking - **ProjectDetails** - Comprehensive project data - **ProposalPipeline** - Pipeline analytics - **EstimateRevisions** - Estimate change history - **CostRevisions** - Cost revision tracking - **Deposits** - Deposit/retainer management - **ProposalTemplatePricing** - Standard pricing templates --- ## Environment Variables ### Required ```bash JOEAPI_BASE_URL=http://localhost:8080 # Local JoeAPI server ``` ### Optional (if JoeAPI requires auth) ```bash JOEAPI_API_KEY=your_api_key # API key for JoeAPI JOEAPI_USER_ID=1 # Dev user ID ``` Set these in: 1. **Claude Desktop config** (recommended): ```json "env": { "JOEAPI_BASE_URL": "http://localhost:8080" } ``` 2. **Shell environment** (alternative): ```bash export JOEAPI_BASE_URL=http://localhost:8080 ``` --- ## Troubleshooting ### MCP Server Not Connecting **1. Check JoeAPI is running:** ```bash curl http://localhost:8080/health # Should return: {"status":"healthy",...} ``` **2. Check MCP server builds:** ```bash npm run mcp:build # Should complete without errors ``` **3. Check Claude Desktop logs:** **macOS:** ```bash tail -f ~/Library/Logs/Claude/mcp*.log ``` **Windows:** ```powershell Get-Content $env:APPDATA\Claude\logs\mcp*.log -Wait ``` **4. Test MCP server manually:** ```bash npm run mcp:local # Should output: "JoeAPI MCP Server running locally" # Press Ctrl+C to stop ``` ### Tools Not Appearing in Claude **1. Verify config path is absolute:** ```json "args": ["/Users/joe/dev/joeapi/mcp-build/local-server.js"] ``` Not: `["~/dev/joeapi/mcp-build/local-server.js"]` ❌ **2. Check disabled flag:** ```json "disabled": false // Should be false ``` **3. Restart Claude Desktop:** - Close completely (Cmd+Q on macOS) - Reopen **4. Check for errors in MCP logs** ### JoeAPI Connection Errors **Error:** `JoeAPI error (401)` - JoeAPI requires authentication - Add API key or dev user ID to config **Error:** `JoeAPI error (404)` - Endpoint not found - Check JoeAPI version matches MCP server **Error:** `ECONNREFUSED` - JoeAPI not running - Start with: `npm run dev` --- ## Development ### Adding New Tools 1. **Edit `mcp/index.ts`:** ```typescript { name: 'my_new_tool', description: 'Description of tool', inputSchema: { type: 'object', properties: { param1: { type: 'string', description: '...' } }, required: ['param1'] } } ``` 2. **Add handler in `CallToolRequest`:** ```typescript case 'my_new_tool': { const { param1 } = args as { param1: string }; result = await callJoeAPI(baseUrl, `/api/v1/endpoint`); break; } ``` 3. **Rebuild:** ```bash npm run mcp:build ``` 4. **Restart Claude Desktop** ### Adding New Workflows 1. **Add to `prompts` array in `mcp/index.ts`:** ```typescript { name: 'my_workflow', description: 'Brief description', arguments: [...], prompt: 'WORKFLOW: My Workflow\n\nPURPOSE: ...\n\nSTEPS:\n1. ...' } ``` 2. **Rebuild and restart** --- ## Scripts Reference ```bash # Development npm run mcp:local # Run TypeScript directly (tsx) npm run dev # Run JoeAPI server # Production npm run mcp:build # Compile TypeScript → JavaScript npm run mcp:start # Run compiled JavaScript # Both npm run verify-db # Test database connection ``` --- ## Comparison: Smithery vs Local STDIO | Feature | Smithery (Cloud) | Local STDIO | |---------|------------------|-------------| | **Setup** | Already deployed | Requires local setup | | **Access** | Remote, anywhere | Local machine only | | **Speed** | Network latency | Instant (local) | | **Availability** | Always on | Requires JoeAPI running | | **Updates** | Auto-deployed | Manual build required | | **Collaboration** | Team access | Single user | | **Best for** | Production, team | Development, testing | --- ## Support - **MCP SDK Docs**: https://modelcontextprotocol.io - **Claude Desktop MCP Guide**: https://docs.claude.com/docs/mcp - **JoeAPI Issues**: Check GitHub repo - **MCP Server Code**: `mcp/index.ts`

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/lumberjack-so/joeMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server