使用说明
MCP工具包
单MCP服务器合并 Supabase消息 和 公司充实 工具。暴露MCP 流式HTTP(SSE+POST) 易于部署(例如Vercel)。
工具
- get_linkdin_message –来自Supabase的LinkedIn消息(表LinkedinMessages)
- get_senders –来自Supabase的发件人(表发件人)
- get_contacts –来自Supabase的联系人(表联系人)
- get_conversation_by_contact_name –按姓名查找联系人,返回该联系人+完整的LinkedIn对话(按lead_uuid)
- get_conversation_by_sender -发件人的所有LinkedIn消息(所有对话)(按sender_proprofile_uid)
- get_conversation_by_message –按消息id或对话UUID显示完整对话线程
- get_company_root_context –通过company_id获取公司的根上下文(表CompaniesContext)
- set_company_root_context –按company_id创建或更新公司的根上下文(表CompaniesContext)
- 搜索_公司 –阿波罗组织搜索
- 搜索_人物 -阿波罗人搜索
- search_lookalike_公司 –Ocean.io相似的公司
对话工具——何时使用
| 场景 | MCP工具 | 光标提示示例 |
|---|---|---|
| 按联系人姓名查找对话 | get_conversation_by_contact_name |
“查找与John Doe的对话”/“显示名为Alice Smith的联系人的LinkedIn帖子” |
| 按发件人查找所有对话 | get_conversation_by_sender |
“显示来自发件人uuid abc-123的所有邮件…”/“此发件人的所有对话” |
| 通过特定消息查找对话 | get_conversation_by_message |
“获取消息id xyz的完整线程”/“显示包含此消息的对话” |
MCP调用示例(Cursor/API)
1.按联系人姓名
{ "name": "get_conversation_by_contact_name", "arguments": { "contactFullName": "John Doe" } }
可选: "messageLimit": 500 (默认值500,最大值1000)。
2.按发件人(所有对话)
{ "name": "get_conversation_by_sender", "arguments": { "senderProfileUuid": "550e8400-e29b-41d4-a716-446655440000" } }
可选: "messageLimit": 500.
3.通过消息(完整线程)
按消息id(工具查找 linkedin_conversation_uuid 来自该消息):
{ "name": "get_conversation_by_message", "arguments": { "messageId": "msg-123" } }
通过对话UUID(如果您已经拥有):
{ "name": "get_conversation_by_message", "arguments": { "conversationUuid": "550e8400-e29b-41d4-a716-446655440000" } }
可选: "messageLimit": 500.
4.公司根上下文(get)
{ "name": "get_company_root_context", "arguments": { "companyId": "550e8400-e29b-41d4-a716-446655440000" } }
返回行(id、company_id、rootContext、created_at)或表示未找到。 companyId 是公司UUID(companys.id)。
5.公司根上下文(套)
按company_id创建或更新;如果存在一行,则进行更新,否则插入新行:
{ "name": "set_company_root_context", "arguments": { "companyId": "550e8400-e29b-41d4-a716-446655440000", "rootContext": "Your context text here..." } }
使用 "rootContext": null 以清除。需要Supabase表 CompaniesContext (列:id、created_at、rootContext、company_id)。
深度链接(用于光标/共享的应用程序URL)
使用这些URL打开右侧表格上的web应用程序,以便您可以使用行操作(“按联系人查找对话”、“按消息查找对话”和“按发件人查找所有对话”)。替换 https://your-app.vercel.app 使用您部署的基本URL(或 http://localhost:5173 当在本地运行前端时)。
| 场景 | 深度链接 |
|---|---|
| 按联系人查找对话 | https://your-app.vercel.app/?table=contacts |
| 按消息查找对话 | https://your-app.vercel.app/?table=linkedin_messages |
| 按发件人查找所有对话 | https://your-app.vercel.app/?table=senders |
从每张表中,使用 行动 行上的列(消息图标)用于在模式中加载该对话。您可以使用过滤器和分页共享链接,例如。 ?table=contacts&page=2&cols=name,uuid (请参阅应用程序URL查询参数)。
本地开发
npm install
cp .env.example .env # fill in keys
-
标准(适用于光标/IDE MCP):
npm run dev--在Cursor MCP配置中用作命令:npx tsx src/stdio.ts(或node dist/stdio.js建成后)。 -
HTTP(测试SSE端点):
npm run dev:http--服务器在http://localhost:3000/mcp。在支持流式HTTP/SSE的MCP客户端中使用此URL。 -
前端(Vue 3+TypeScript):
npm run dev:frontend--Vite开发服务器,支持热重载。代理/api到http://localhost:3001默认情况下;跑npm run dev:api在本地API的另一个终端中(或npm run dev:http对于MCP为3000)。之后npm run build,应用程序在public/(建造于frontend/). -
当地API(反映Vercel路线):
npm run dev:api--HTTP服务器位于http://localhost:3001使用GET/POST/api/supabase-state,/api/supabase-table-query,/api/conversation, 获取/发布/api/company-context(公司上下文按id:GET)?company_id=...,POST正文{ "company_id", "rootContext" }). 获取/发布/api/contact-context(联系方式:GET?contact_id=...,POST正文{ "contact_id", "rootContext" }).
部署到Vercel
- 构建:
npm run build(部署前需要;生成dist/). - 部署:
vercel(或连接Vercel仪表板中的仓库)。 - 集 环境变量 Vercel中您使用的工具:
- Supabase:
SUPABASE_URL,SUPABASE_SERVICE_ROLE_KEY,可选SUPABASE_MESSAGES_TABLE - 阿波罗:
APOLLO_API_KEY - 海洋:
OCEAN_API_TOKEN
- Supabase:
- MCP端点:
https://your-app.vercel.app/api/mcp
将此用作Cursor或其他客户端中的MCP服务器URL(流式HTTP/SSE)。
项目布局
src/–后端(MCP服务器、API处理程序)services/–suabase,apollo,海洋,源api,同步suabasetools/–获取linkedin消息、获取发件人、获取联系人、按联系人姓名获取对话、按发件人获取对话、通过消息获取对话、获取公司根上下文、设置公司根上下文,公司丰富server.ts–合并MCP服务器+流式HTTP处理程序stdio.ts–本地MCP的stdio条目standalone-http.ts–本地HTTP服务器
frontend/–Vue 3+TypeScript应用程序(内置于public/)src/–App.vue,组件(计数卡,最新表),类型index.html–Vite入口
api/–Vercel无服务器(mcp、suabase状态、suabaase同步、suababase表查询、对话、公司上下文)