Mini CRM MCP
Enables querying and interacting with a SQLite CRM database of sales leads using natural language, offering tools for pipeline summaries, lead search, and weighted forecasting.
README
Mini CRM MCP
A complete, end-to-end Model Context Protocol server over crm/leads.db (40 sales leads). An
MCP client or LLM can ask "give me the funnel by stage", "what's in Priya's pipeline", or "what's
our weighted forecast" and get structured answers without ever writing SQL.
This is a practical server (like the sibling Mcp_venki is a teaching one). It replaced an
earlier StudentAnalytics prototype — same architecture, pointed at real CRM data.
Pipeline stages: New → Contacted → Qualified → Proposal → Won / Lost.
What it exposes
Tools (model-callable)
| Tool | Purpose |
|---|---|
pipeline_summary() |
The funnel: count + total value per stage |
list_owners() |
Every rep with lead count and total pipeline value |
list_leads(status?, owner?, source?, min_value?, limit=25) |
Filtered lead list (all filters ANDed) |
search_leads(query, limit=25) |
Free-text search across name / company / email |
get_lead(lead_id) |
One full lead record + close probability |
owner_leaderboard() |
Per-rep won / open / weighted-forecast value |
forecast() |
Weighted revenue forecast; streams progress via ctx |
Resources (loadable read-only data)
crm://schema— the table schema + stage ordercrm://lead/{lead_id}— a single lead as a readable card (URI template)
Prompt
pipeline_review(owner?)— template that asks the model to write a pipeline review
The weighted forecast
Each stage has a close probability (New 10%, Contacted 25%, Qualified 50%, Proposal 70%, Won 100%,
Lost 0%). forecast() and owner_leaderboard() multiply each lead's value by its stage probability
and sum — a standard sales-forecasting method. On the current data this yields ≈ $396,755
weighted against a $942,310 raw pipeline.
Safety
The SQLite connection is opened with mode=ro, so the server physically cannot write to the
DB — the engine rejects any mutation. Every query is a parameterized SELECT; tool arguments are
bound, never string-formatted, so they can't inject SQL. A test asserts the read-only guarantee.
Run it
Use any Python (3.10+) that has the mcp SDK installed:
pip install -r requirements.txt
# 1. Drive it end-to-end with a hand-written client (no Claude, no config):
python client_demo.py
# 2. Run the protocol tests (launch the real server over stdio):
python -m pytest test_server.py -q
A demo database ships in data/leads.db, so the server runs out of the box.
CRM_DB (env var) overrides the database path to point at your own leads table.
Registered in Claude
Added to the project .mcp.json as MiniCRM, pointing at the hermes-venv Python and the repo's
crm/leads.db. Restart the app / reconnect MCP servers to pick it up, then the tools appear as
mcp__MiniCRM__* and the prompt as /mcp__MiniCRM__pipeline_review.
Files
server.py— the MCP server (7 tools, 2 resources, 1 prompt)client_demo.py— hand-written stdio client that exercises every primitivetest_server.py— 8 protocol-level tests (all passing)data/leads.db— bundled demo database (40 synthetic leads)requirements.txt/pytest.inidocs/— the illustrated deep-dive PDF and its HTML source
Gotchas (carried over from building the sibling servers)
- FastMCP returns a
listas one content-block per item, and puts the whole value inresult.structuredContent(list/scalar wrapped as{"result": ...}, dict returns as-is). ReadstructuredContent, notcontent[0].text, or you only see the first element. session.read_resource(uri)returns a result with.contents, not a 2-tuple.- Don't hold the MCP session in a
pytest_asyncioasync-generator fixture — anyio's cancel scope is finalized in a different task and every test errors in teardown. Useasync withinside the test body (seetest_server.py).
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。