JoeMCP
Connects AI assistants to JoeAPI construction management system, enabling management of clients, contacts, proposals, estimates, action items, project schedules, and financial data through natural language.
README
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
-
JoeAPI running locally:
npm run dev # Start JoeAPI on http://localhost:8080 -
Build MCP server:
npm run mcp:build -
Configure Claude Desktop:
- Copy
mcp/claude-desktop-config.example.json - Update the
commandpath to match your installation - Add to Claude Desktop config
- Copy
Option A: Development Mode (TypeScript)
For rapid development with auto-recompile:
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:
# 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:
~/Library/Application Support/Claude/
Windows:
%APPDATA%\Claude\
Linux:
~/.config/Claude/
Step 2: Edit claude_desktop_config.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: falseto see ALL 18 workflows - Set
autoExecute: truewith workflow name to get step-by-step instructions
18 Pre-Built Workflows
win_loss_rate- Calculate proposal win/loss statisticssales_pipeline- Analyze active proposals in pipelinework_in_process_report- WIP report for active projectsjob_costing_detail- Detailed job costing analysisproject_profitability- Profit analysis by projectcost_variance_analysis- Actual vs. estimated cost variancecash_flow_forecast- Project cash flow projectionsschedule_variance_analysis- Schedule delays and impactsclient_portal_update- Generate client progress updatessubcontractor_performance- Analyze subcontractor metricsmaterial_tracking- Track material costs and usagelabor_productivity- Analyze labor efficiencycost_per_square_foot- Calculate $/sqft by tradechange_order_tracking- Track change orders/revisionsupgrade_pricing- Price client upgrade requestsupdate_schedule- Extend/adjust project schedulesplan_takeoff- Estimate from building plansestimate_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
JOEAPI_BASE_URL=http://localhost:8080 # Local JoeAPI server
Optional (if JoeAPI requires auth)
JOEAPI_API_KEY=your_api_key # API key for JoeAPI
JOEAPI_USER_ID=1 # Dev user ID
Set these in:
-
Claude Desktop config (recommended):
"env": { "JOEAPI_BASE_URL": "http://localhost:8080" } -
Shell environment (alternative):
export JOEAPI_BASE_URL=http://localhost:8080
Troubleshooting
MCP Server Not Connecting
1. Check JoeAPI is running:
curl http://localhost:8080/health
# Should return: {"status":"healthy",...}
2. Check MCP server builds:
npm run mcp:build
# Should complete without errors
3. Check Claude Desktop logs:
macOS:
tail -f ~/Library/Logs/Claude/mcp*.log
Windows:
Get-Content $env:APPDATA\Claude\logs\mcp*.log -Wait
4. Test MCP server manually:
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:
"args": ["/Users/joe/dev/joeapi/mcp-build/local-server.js"]
Not: ["~/dev/joeapi/mcp-build/local-server.js"] ❌
2. Check disabled flag:
"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
-
Edit
mcp/index.ts:{ name: 'my_new_tool', description: 'Description of tool', inputSchema: { type: 'object', properties: { param1: { type: 'string', description: '...' } }, required: ['param1'] } } -
Add handler in
CallToolRequest:case 'my_new_tool': { const { param1 } = args as { param1: string }; result = await callJoeAPI(baseUrl, `/api/v1/endpoint`); break; } -
Rebuild:
npm run mcp:build -
Restart Claude Desktop
Adding New Workflows
-
Add to
promptsarray inmcp/index.ts:{ name: 'my_workflow', description: 'Brief description', arguments: [...], prompt: 'WORKFLOW: My Workflow\n\nPURPOSE: ...\n\nSTEPS:\n1. ...' } -
Rebuild and restart
Scripts Reference
# 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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。