联系信息收集系统
一个强大的B2B联系人数据库和研究自动化系统,采用Claude代码和模型上下文协议(MCP)构建。该系统助您高效研究公司、收集决策者联系方式,并管理您的销售漏斗。
特点/功能
- 自动化公司研究研究公司并提取关键信息的人工智能代理
- 联系数据库管理基于SQLite的存储系统,包含全面的公司和联系人字段
- MCP服务器集成定制的MCP服务器,实现数据库操作无缝衔接
- 批量导入/导出导入公司列表并导出为CSV格式以进行CRM系统集成
- 数据可视化生成表示数据库结构和关系的Mermaid图表
- 隐私合规内置GDPR、CCPA和CAN-SPAM合规性追踪功能
建筑
组件
- 自定义MCP服务器 (
./.claude/mcp-servers/contact-db-server/)
- 基于FastMCP的服务器,提供9种数据库操作 - 带有全面验证功能的Python SQLite后端 - 实时跟踪公司研究动态
- 数据库模式 (
data/schema.sql)
- companies 表格:包含40多个账户级别的数据字段 - contacts 表格:包含25+个字段的个人级数据 - 完整的引用完整性和验证约束
- 人工智能代理 (
./.claude/agents/)
- company-researcher自动化公司研究与信息补充 - 并行执行以支持高通量研究
- 实用脚本 (
scripts/)
- 美人鱼图表生成器(实体关系图和数据可视化) - 用于CRM集成的CSV导出
快速入门
先决条件
- Python 3.10+
- SQLite 3
- Claude CLI 命令行界面
安装
- 克隆仓库:
git clone https://github.com/dot-fun/collect-contact-information.git
cd collect-contact-information- 设置MCP服务器虚拟环境:
cd ./.claude/mcp-servers/contact-db-server
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
cd ../../..- 初始化数据库:
# The database will be initialized automatically when you first use MCP tools
# Or manually with: sqlite3 ./data/contacts.db < ./data/schema.sql基本用法
1. 导入公司名称
创建 ./inputs/companies.txt 每行一个公司名称:
Acme Corp
TechStart Inc
Global Solutions Ltd然后运行导入命令:
# In Claude Code CLI
/ingest-companies这会创建带有占位符的记录,其中 researched=0 状态。
2. 研究公司
使用自动化研究工作流程:
# In Claude Code CLI
/research-all-companies这个命令:
- 生成并行AI代理(默认为10个)
- 对每一家未研究过的公司进行研究
- 查找公司详细信息(网站、领英、行业、所在地)
- 确定关键决策者
- 将联系人添加到数据库
- 标记公司为已研究
3. 导出数据
生成Mermaid图表:
# Database schema diagram
python3 ./scripts/generate_mermaid_from_db.py --mode schema -o ./outputs/schema.md
# Company and contact relationships
python3 ./scripts/generate_mermaid_from_db.py -o ./outputs/company_contacts.md导出为CSV格式:
python3 ./scripts/export_data_to_csv.py -o ./outputs/company_contacts.csvMCP 工具参考手册
自定义的MCP服务器提供了9种工具:
核心业务/核心运营
add_company- 添加公司并填写完整信息add_contact- 将联系人添加到公司get_company- 通过ID或域名检索公司get_contacts_by_company- 列出一家公司的所有联系人list_companies- 浏览所有公司,并可选择过滤
研究工作流程
ingest_companies_from_file- 从文本文件批量导入get_unresearched_companies- 查找标记为未研究的公司mark_company_as_researched- 更新研究状态initialize_database- 运行模式设置
看 ai_docs/mcp-tools-reference.md 以获取详细文档。
文件结构
├── .claude/
│ ├── agents/ # AI agent definitions
│ │ ├── company-researcher.md # Company research agent
│ │ └── README.md
│ ├── commands/ # Custom slash commands
│ │ ├── ingest-companies.md
│ │ └── research-all-companies.md
│ └── mcp-servers/
│ └── contact-db-server/ # Custom MCP server
│ ├── server.py
│ ├── requirements.txt
│ └── venv/
├── ai_docs/ # Documentation for AI agents
│ ├── contact-data-specification.md
│ ├── mcp-tools-reference.md
│ ├── mcp-tools-cheatsheet.md
│ └── mcp-tools-examples.md
├── data/
│ ├── contacts.db # SQLite database
│ ├── schema.sql # Database schema
│ └── migrate_*.sql # Migration scripts
├── inputs/
│ ├── companies.txt # Your company list (gitignored)
│ └── companies.example.txt # Example format
├── outputs/ # Generated reports
│ ├── company_contacts.md
│ ├── company_contacts.csv
│ └── schema.md
├── scripts/
│ ├── generate_mermaid_from_db.py
│ ├── export_data_to_csv.py
│ └── README.md
├── .mcp.json # MCP server configuration
├── AGENTS.md # Agent guidelines
└── CLAUDE.md # Project documentation数据模型
公司字段(40+个)
核心标识符:
- 法定名称,域名,网站网址,公司领英网址
地点:
- 总部国家,总部地区,总部城市,时区
公司概况数据(或企业特征数据):
- 行业、员工范围、成立日期
资金:
- 融资阶段,融资轮次
信号与情报:
- 适配度评分,适配度备注,技术栈,技术信号
- 痛点(pain_points)、意图信号(intent_signals)、参与度评分(engagement_score)
管道:
- 阶段(潜在客户/营销合格线索/销售合格线索/商机/谈判/成交/未成交/培育)
- 所有者,领域,账户类型
- 下一步,下一步截止时间
联系字段(25+)
核心信息:
- 名字,姓氏,电子邮件(需为小写)
- LinkedIn链接、职位、资历、职能
联系方式:
- 电话直拨,主电话,电子邮件状态
关系:
- 在交易中的角色(决策者/影响者/支持者/用户/阻碍者)
- company_id(外键)
合规性:
- 同意基础(合法利益/明确同意/合同/合规审查)
- 同意获取时间,来源,来源网址
- dnc_email(拒绝通信电子邮件)、dnc_phone(拒绝通信电话)、contact_preferences(联系偏好)
- GDPR合规,CCPA合规,合规备注
看 ai_docs/contact-data-specification.md 以获取完整的字段定义。
隐私与合规
该系统在设计时充分考虑了隐私合规性:
- 同意追踪每次接触都需要一个
consent_basis - 来源归属所有数据必须有记录在案的来源
- DNC(分布式数控或直接数字控制)管理电子邮件和电话的“勿扰”标志
- GDPR/CCPA每个联系人跟踪的合规字段
- 数据最小化只收集必要的东西
- 验证电子邮件小写,电话号码E.164格式
请参阅第10节 ai_docs/contact-data-specification.md 以满足全部合规要求。
发展
运行测试
cd ./.claude/mcp-servers/contact-db-server
source venv/bin/activate
pytest数据库查询
# Check unresearched companies
sqlite3 ./data/contacts.db "SELECT legal_name FROM companies WHERE researched=0"
# Count contacts by company
sqlite3 ./data/contacts.db "SELECT c.legal_name, COUNT(ct.id) as contact_count
FROM companies c LEFT JOIN contacts ct ON c.id = ct.company_id
GROUP BY c.id ORDER BY contact_count DESC"
# View all decision-makers
sqlite3 ./data/contacts.db "SELECT c.legal_name, ct.first_name, ct.last_name, ct.title
FROM contacts ct JOIN companies c ON ct.company_id = c.id
WHERE ct.role_in_deal = 'decision-maker'"编码风格
- Python:PEP 8规范,类型提示,4个空格缩进
- SQL:关键字使用大写,内联注释
- Markdown:标题使用首字母大写格式
工作流程
大宗公司研究
- 在(列表/文档等)中添加公司名称
./inputs/companies.txt(每行一个) - 跑
/ingest-companies创建占位符记录 - 跑
/research-all-companies生成并行研究代理 - 监控代理在研究和填充数据过程中的进度
- 导出结果:
python3 ./scripts/export_data_to_csv.py -o ./outputs/output.csv
手动添加公司
# In Claude Code, use MCP tools directly
add_company(
legal_name="Example Corp",
domain="example.com",
website_url="https://example.com",
company_linkedin_url="https://linkedin.com/company/example-corp",
industry="SaaS",
employee_range="51-200",
hq_country="United States",
stage="lead"
)查找联系人
# Get company
company = get_company(domain="example.com")
# Get all contacts for company
contacts = get_contacts_by_company(company_id=company['company_id'])贡献
- 遵循编码风格指南
AGENTS.md - 为新功能添加测试
- 更新文档
- 跑
pytest在提交之前 - 用祈使句编写提交信息
许可证
MIT许可证——您可自由将此系统用于您的B2B研究和拓展活动。
支持
如需报告问题、提出疑问或贡献内容,请在GitHub上提交一个议题。
功劳/学分
构建于:
