An MCP (Model Context Protocol) server that connects to Close.com API, allowing AI assistants to search and retrieve lead and contact information.
- Lead Management
- Search leads with query and limit
- Get detailed lead information
- Contact Management
- Get detailed contact information
- Email Activity Management
- Get email details
- Create, update, and delete emails
- Support for email templates and attachments
- Task Management
- Create, update, and delete tasks
- Get detailed task information
- Opportunity Management
- Create, update, and delete opportunities
- Get detailed opportunity information
- Track opportunity values and confidence levels
- Manage opportunity status and won dates
- Call Activity Management
- Get call details
- Create, update, and delete calls
- Track call duration, disposition, and cost
- Support for call recordings
- User Management
- Get detailed user information
- List all users
- Check user availability status
- API Connection Testing
- Verify Close.com API connectivity
- Node.js 17 or higher
- Close.com API key
- An MCP client (like Claude Desktop)
-
Install the package globally:
npm install -g @shiftengineering/mcp-close-server
-
Configure Claude Desktop to use this server by editing your
claude_desktop_config.json:
{
"mcpServers": {
"close": {
"command": "npx",
"args": [
"@shiftengineering/mcp-close-server"
],
"env": {
"CLOSE_API_KEY": "your_api_key_here"
}
}
}
}-
Clone this repository:
git clone https://github.com/shiftengineering/mcp-close-server.git cd mcp-close-server -
Install dependencies:
npm install
-
Build the project:
npm run build
Make sure to set your Close.com API key as an environment variable:
export CLOSE_API_KEY="your_api_key_here"
npm start-
If you installed via npm/npx, skip to step 2. If you installed from source, build the project as described above.
-
Configure Claude Desktop to use this server by editing your
claude_desktop_config.json:
{
"mcpServers": {
"close": {
"command": "node",
"args": [
"/absolute/path/to/mcp-close-server/build/index.js"
],
"env": {
"CLOSE_API_KEY": "your_api_key_here"
}
}
}
}- Restart Claude Desktop
After setting up the server with Claude Desktop, you can ask Claude questions like:
- "Can you search for leads related to Acme Corp?"
- "Find any contacts named John Smith"
- "Get details for lead with ID lead_abc123"
- "Search for leads in the Technology sector"
- "Find contacts with email addresses from google.com domain"
- "Can you check if our Close.com API connection is working?"
Search for leads in Close.com.
Parameters:
query(string): Search query string (e.g., company name, contact, etc.)limit(number, optional): Maximum number of results to return (default: 10)
Get detailed information about a specific lead.
Parameters:
lead_id(string): The ID of the lead to retrieve
Get detailed information about a specific contact.
Parameters:
contact_id(string): The ID of the contact to retrieve
Get detailed information about a specific email.
Parameters:
email_id(string): The ID of the email to retrieve
Create a new email in Close.com.
Parameters:
lead_id(string): The ID of the lead to create the email forstatus(string): Email status ('inbox', 'draft', 'scheduled', 'outbox', 'sent')subject(string): Email subjectbody_text(string, optional): Plain text email bodybody_html(string, optional): HTML email bodytemplate_id(string, optional): Email template IDdate_scheduled(string, optional): Scheduled date (ISO format)send_in(number, optional): Seconds until sendingfollowup_date(string, optional): Follow-up date (ISO format)sender(string, optional): Sender email addressattachments(array, optional): Array of attachment objects
Update an existing email in Close.com.
Parameters:
email_id(string): The ID of the email to updatestatus(string, optional): Email statussubject(string, optional): Email subjectbody_text(string, optional): Plain text email bodybody_html(string, optional): HTML email bodydate_scheduled(string, optional): Scheduled date (ISO format)followup_date(string, optional): Follow-up date (ISO format)
Delete an email in Close.com.
Parameters:
email_id(string): The ID of the email to delete
Create a new task in Close.com.
Parameters:
lead_id(string): The ID of the lead to create the task fortext(string): The task descriptiondate(string): The task date (ISO format)assigned_to(string, optional): The ID of the user to assign the task to
Get detailed information about a specific task.
Parameters:
task_id(string): The ID of the task to retrieve
Update an existing task in Close.com.
Parameters:
task_id(string): The ID of the task to updateassigned_to(string, optional): The ID of the user to assign the task todate(string, optional): The new task date (ISO format)is_complete(boolean, optional): Whether the task is completetext(string, optional): The new task description
Delete a task in Close.com.
Parameters:
task_id(string): The ID of the task to delete
Create a new opportunity in Close.com.
Parameters:
lead_id(string, optional): The ID of the leadstatus_id(string, optional): The status IDvalue(number, optional): Opportunity valuevalue_period(string, optional): Value period ('one_time', 'monthly', 'annual')confidence(number, optional): Confidence levelnote(string, optional): Opportunity notecustom(object, optional): Custom fields
Get detailed information about a specific opportunity.
Parameters:
opportunity_id(string): The ID of the opportunity to retrieve
Update an existing opportunity in Close.com.
Parameters:
opportunity_id(string): The ID of the opportunity to updatestatus_id(string, optional): The status IDvalue(number, optional): Opportunity valuevalue_period(string, optional): Value period ('one_time', 'monthly', 'annual')confidence(number, optional): Confidence levelnote(string, optional): Opportunity notecustom(object, optional): Custom fieldsdate_won(string, optional): Date won (ISO format)
Delete an opportunity in Close.com.
Parameters:
opportunity_id(string): The ID of the opportunity to delete
Get detailed information about a specific call.
Parameters:
call_id(string): The ID of the call to retrieve
Create a new call in Close.com.
Parameters:
lead_id(string): The ID of the leadstatus(string, optional): Call status ('completed')direction(string, optional): Call direction ('outbound', 'inbound')duration(number, optional): Call duration in secondsrecording_url(string, optional): URL of call recordingnote_html(string, optional): HTML formatted notenote(string, optional): Plain text notedisposition(string, optional): Call dispositioncost(number, optional): Call cost
Update an existing call in Close.com.
Parameters:
call_id(string): The ID of the call to updatenote_html(string, optional): HTML formatted notenote(string, optional): Plain text noterecording_url(string, optional): URL of call recordingdisposition(string, optional): Call dispositioncost(number, optional): Call cost
Delete a call in Close.com.
Parameters:
call_id(string): The ID of the call to delete
Get detailed information about a specific user.
Parameters:
user_id(string): The ID of the user to retrieve
List all users in the organization.
No parameters required.
Get user availability status.
Parameters:
organization_id(string, optional): The ID of the organization
Test the connection to Close.com API.
No parameters required.
This server performs read and write operations on your Close.com account. The API key should be kept secure and not shared.
MIT