给朋友打电话MCP
一个MCP服务器,使Claude Code实例能够实时通信。一个实例进入“监听模式”,而另一个实例则以特定意图发起联系。
建筑
┌─────────────────────────────────────────┐
│ paf-hub (TCP server) │
│ localhost:7777 │
└─────────────────────────────────────────┘
▲ ▲
│ TCP │ TCP
│ │
Claude Tab 1 Claude Tab 2
(Listener) (Caller)安装
cd ~/.claude/mcps/phone-a-friend
pip install -e .用法
步骤1:启动Hub
paf-hub步骤2:配置Claude代码
添加到 ~/.claude/settings.json:
{
"mcpServers": {
"phone-a-friend": {
"command": "python",
"args": ["-m", "phone_a_friend.server"],
"cwd": "/Users/YOUR_USERNAME/.claude/mcps/phone-a-friend/src"
}
}
}第三步:使用它
选项卡1(侦听器):
"Listen for questions. You're the auth expert."→ paf(action="listen", session_name="auth-expert", description="Expert on auth") → 街区等待。..
选项卡2(呼叫者):
"Ask the auth expert about token refresh."→ paf(action="list_sessions") → 看到“身份验证专家” → paf(action="connect", target_session="auth-expert", intent="Token refresh", my_name="feature-dev") → paf(action="send", target_session="auth-expert", message="How handle expired tokens?", my_name="feature-dev") → paf(action="wait_response", my_name="feature-dev") → 答案块
选项卡1接收并响应: → 听众用问题解封 → paf(action="respond", session_name="auth-expert", message="Use sliding window...") → paf(action="listen", ...) → 回到等待
工具参考
单一工具 paf 行动:
| 操作 | 参数 | 描述 |
|---|---|---|
listen | session_name,description | 阻止等待消息 |
list_sessions | (无) | 列出活动听众 |
connect | target_session、intent、my_name | 用intent连接 |
send | target_session,消息,my_name | 发送消息 |
wait_response | my_name | 阻止回复 |
respond | session_name,消息 | 回复呼叫者 |
end_session | session_name | 关闭会话 |
对话流程
Listener Caller
──────── ──────
listen() [blocks]
connect(intent)
send(question)
[receives question]
respond(answer)
wait_response() → answer
listen() [blocks] send(follow_up)
[receives follow_up]
...