Demo CRM MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the Streamable HTTP entrypoint (e.g. `PORT=3000 npm run start:http`). The HTTP server listens at `http://localhost:<PORT>/mcp`. | |
| DATA_DIR | No | Override the default data directory (default is `data/` next to the project). Data lives in `data/crm.db`, created and seeded on first run. If `DATA_DIR` isn't set and the default `data/` directory isn't writable, the server falls back to a directory under the OS temp dir. | |
| MCP_API_KEY | No | API key for the Streamable HTTP entrypoint. If set, `/mcp` requests need `Authorization: Bearer <key>` or they get a 401. If unset, the server logs a warning and runs unauthenticated. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_companiesB | List CRM companies, optionally filtered by name search or industry. |
| get_companyC | Get a company's details along with its contacts and deals. |
| create_companyC | Create a new company record in the CRM. |
| update_companyC | Update fields on an existing company. Only provided fields are changed. |
| list_contactsC | List CRM contacts, optionally filtered by company or a name/email search. |
| get_contactC | Get a contact's details along with their company, deals, and activity history. |
| create_contactC | Create a new contact, optionally attached to a company. |
| update_contactB | Update fields on an existing contact. Only provided fields are changed. |
| list_dealsC | List deals in the sales pipeline, optionally filtered by company or stage. |
| get_dealB | Get a deal's details along with its company, contact, and activity history. |
| create_dealC | Create a new deal for a company, optionally linked to a contact. |
| update_deal_stageC | Move a deal to a new pipeline stage. Valid stages: lead, qualified, proposal, negotiation, won, lost. |
| log_activityC | Log a note, call, email, or meeting against a company, contact, or deal. |
| search_crmC | Full-text-ish search across companies, contacts, and deals by name/email/title. |
| get_pipeline_summaryA | Get aggregate pipeline stats: deal count and total value per stage, plus open/won totals. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a clear entity (company, contact, deal) and action. The 'get_' tools may include related data, but list vs get vs create/update boundaries are well-defined.
Most names follow verb_noun snake_case, but 'update_deal_stage' and 'log_activity' break the pure pattern, and 'search_crm' and 'get_pipeline_summary' deviate slightly. Still highly predictable overall.
15 tools is within the ideal 3-15 range and covers core CRM operations without redundancy.
CRUD is complete for companies and contacts, but deals lack create/update/delete beyond stage changes, and there is no delete for any entity or explicit activity retrieval. Notable gaps may force workarounds.