坎博克斯mcp

MCP服务器 坎博克斯 LinkedIn CRM API。显示两个调度程序工具-- kanbox_read (4项行动)和 kanbox_write (5个动作)-用于Claude Code和其他MCP客户端。
用例
- CRM分类 --搜索未读收件箱邮件,阅读对话,然后起草和发送回复——所有这些都来自你的编辑器。
- 管道管理 --按管道/步骤查询联系人,根据对话上下文更新标签或在步骤之间移动联系人。
- 外联自动化 --建立潜在客户列表,向破冰者发送个性化的连接请求,并在连接后跟进消息。
- 铅富集 --通过LinkedIn URL添加潜在客户,以全面丰富背景,然后调查处理状态,直到完成。
- 联系人查询 --向内部解决LinkedIn个人资料问题
linkedin_id无需离开您的工作流程,即可进行消息传递。
设计
此服务器使用 双刀具调度模式 而不是暴露9个单独的MCP工具。灵感源自 Jesse Vincent关于MCP API设计的文章,目标是:
- 最小的上下文占用空间 --LLM客户端将每个工具定义加载到其上下文窗口中。两个带有动作路由的工具的上下文成本远低于九个单独的工具定义,为实际对话留下了更多空间。
- 自我记录 --每个工具的描述都包括带有参数名称和陷阱的完整操作目录。LLM从工具定义本身获得所需的一切,而不需要系统提示中的外部文档。
- 读/写权限拆分 --MCP客户端可以使用两个工具而不是一个工具自动批准
kanbox_read同时要求明确确认kanbox_write. - 平淡的回答 -Kanbox API将联系人数据嵌套在
lead.*和lnuser.*钥匙。此服务器将响应扁平化,因此字段如下linkedin_id,firstname,email出现在顶层,减少LLM解析嵌套结构所花费的令牌。
关键响应字段
search_members 返回最丰富的数据——这些是您的收件箱/连接联系人:
id,linkedin_id,linkedin_public_id,firstname,lastname,phone,company,job,location,labels,pipeline,step,icebreaker,custom,conversations(与id,last_message,unread_count)
search_leads 返回抓取的潜在客户数据(否 linkedin_id --通过解决 search_members):
linkedin_public_id,firstname,lastname,phone,company,job,location
list_lists 返回列表元数据:
name,count,is_processing
设置
在Kanbox设置中,在“API”部分启用“启用API密钥”,然后在您的环境中设置令牌:
export KANBOX_API_TOKEN=your_api_keyClaude代码配置
添加 ~/.claude/settings.json:
{
"mcpServers": {
"kanbox": {
"command": "npx",
"args": ["-y", "github:flacoste/kanbox-mcp"],
"env": {
"KANBOX_API_TOKEN": "${KANBOX_API_TOKEN}"
}
}
}
}不需要本地克隆——npx获取仓库,安装依赖项,并自动构建。
本地安装
如果您更喜欢本地副本:
git clone https://github.com/flacoste/kanbox-mcp.git
cd kanbox-mcp
npm install # also builds via prepare script然后将配置指向本地构建:
{
"command": "node",
"args": ["/path/to/kanbox-mcp/dist/index.js"],
"env": {
"KANBOX_API_TOKEN": "${KANBOX_API_TOKEN}"
}
}工具
kanbox_read
对Kanbox数据的只读查询。
search_members
搜索收件箱、连接或未读邮件。
| 参数 | 类型 | 必填 | 描述 | ||
|---|---|---|---|---|---|
q | string | no | 模糊名称搜索(单个独特的术语效果最好) | ||
type | inbox | unread_inbox | connections | 否 | 按成员类型筛选 |
pipeline_name | string | no | 按管道名称筛选 | ||
step_title | string | no | 按管道步骤标题筛选 | ||
linkedin_public_ids | string\[\] | no | 用于精确查找的公共配置文件段 | ||
updated_since | string | no | ISO 8601时间戳过滤器 | ||
limit | number | no | 最大结果(1-100) | ||
offset | number | no | 要跳过的结果 |
search_leads
按列表名称或查询搜索抓取的潜在客户。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | string | no | 列表名称筛选器 |
q | string | 否 | 搜索查询 |
limit | number | no | 最大结果(1-100) |
offset | number | no | 要跳过的结果 |
get_messages
获取对话消息。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
conversation_id | 编号 | 是 | 对话ID来自 search_members conversations[].id |
cursor | string | no | 来自上一个响应的分页光标 |
list_lists
列出可用的Kanbox潜在客户名单。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
limit | number | no | 最大结果(1-100) |
offset | number | no | 要跳过的结果 |
kanbox_write
写入操作。所有写入都是异步的(HTTP 202接受)。
update_member
更新成员字段。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
id | 编号 | 是 | 成员ID来自 search_members |
email | string | 否 | 电子邮件地址 |
phone | string | 否 | 电话号码 |
labels | string\[\] | 否 | 完全替换 --传递所有所需标签 |
pipeline | string | 否 | 管道名称 |
step | string | 否 | 管道步骤 |
custom | string | no | 自定义注释 |
icebreaker | string | no | 破冰笔记 |
send_message
发送LinkedIn消息。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
recipient_linkedin_id | 字符串 | 是 | 内部LinkedIn ID(ACoAAA... 格式) |
message | 字符串 | 是 | 消息文本(最多8000个字符) |
send_connection
发送连接请求。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
recipient_linkedin_id | 字符串 | 是 | 内部LinkedIn ID(ACoAAA... 格式) |
message | string | no | 请求消息(最多300个字符) |
add_lead
将结构化潜在客户添加到列表中(仅部分丰富)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
list | 字符串 | 是 | Kanbox列表名称 |
linkedin_public_id | 字符串 | 是 | 公众形象蛞蝓 |
firstname | 字符串 | 是 | 名字 |
lastname | 字符串 | 是 | 姓氏 |
email | string | 否 | 电子邮件地址 |
phone | string | 否 | 电话号码 |
company | string | 否 | 公司名称 |
location | string | 否 | 位置 |
job | string | 否 | 职位名称 |
icebreaker | string | no | 破冰笔记 |
labels | string\[\] | no | 标签 |
pipeline | string | 否 | 管道名称 |
step | string | 否 | 管道步骤 |
add_lead_url
通过LinkedIn URL添加潜在客户,以实现全面丰富(需要几分钟)。
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
linkedin_profile_url | 字符串 | 是 | 完整的LinkedIn个人资料URL |
list | 字符串 | 是 | Kanbox列表名称 |
主要惯例
linkedin_idvs公共蛞蝓 —search_members返回alinkedin_id字段(内部ID以开头ACoAAA...).使用此IDsend_message和send_connection,而不是公众形象。- 标签完全替换 —
update_member标签将替换整个标签集。首先阅读现有标签,然后传递完整的所需列表。 - 异步写入 --所有写入操作都返回HTTP 202。更改可能需要几秒钟才能在后续读取中显示。
- 领导vs成员 —
search_leads不返回linkedin_id.使用search_members和linkedin_public_ids以解析消息传递所需的内部ID。
发展
npm run build # tsc -> dist/
npm run dev # tsx src/index.ts
npm test # vitest run
npm run test:watch # vitest (watch mode)