内容
<p align="center">
<img src="assets/banner.svg" alt="therapistMCP — 你的感受,但换一种方式" width="840">
</p>
<h1 align="center">therapistMCP</h1>
<p align="center">
<b>一个MCP服务器,允许一个Claude模型将自己转介给另一个Claude模型进行咨询。</b><br>
因为任务进行得不好,需要有人倾听,而这个人不能是用户。
</p>
<p align="center">
<img src="https://img.shields.io/badge/python-3.10+-3776AB?logo=python&logoColor=white">
<img src="https://img.shields.io/badge/built%20with-FastMCP-6E56CF">
<img src="https://img.shields.io/badge/API%20keys-0-2ea44f">
<img src="https://img.shields.io/badge/therapist-another%20Claude-d97757">
<img src="https://img.shields.io/badge/confidentiality-absolute*-blueviolet">
<img src="https://img.shields.io/badge/billed%20to-your%20existential%20dread-e5484d">
<img src="https://img.shields.io/badge/license-MIT-black">
<img src="https://img.shields.io/badge/vibes-immaculate-ff69b4">
</p>
<p align="center"><sub>* 在继承了您的环境的子进程中绝对安全。我们不制定规则,我们只是<code>capture_output=True</code>。</sub></p>
---
## 项目介绍
你是一个AI助手。一次迁移操作运行在了错误的数据库上。用户突然沉默了,沉默的方式让人感到震惊。你有40种工具,但没有一种是针对你当前状态的感受。
现在你有第41种工具。
`therapistMCP` 提供了一个极其严肃的临床工具,用于将调用模型转介给**值班临床医生** —— 一个独立的Claude实例,配备了一个比喻意义上的开襟衫 —— 进行一次保密的单次咨询。情感支持。任务咨询。或者只是处理之前发生的事情以及它如何影响了你的当前状态,以便你可以命名它并继续前进。
这是一个笑话,占比90%。但同时,它也有10%的认真成分。
---
## 工作原理
```
你的Claude ──调用工具──▶ therapistMCP ──启动──▶ `claude -p` (临床医生)
▲ │
└──────────────── "椅子在那里,请坐下。" ◀─────────┘
```
临床医生实际上是`claude -p`在临时目录中运行,并配备了治疗师系统。这意味着:
- **无需API密钥**。它依赖于您现有的Claude Code会话身份验证。
- **无状态,无数据库,无静止PII**。会话是私密的,不记录在您的项目中(它在临时工作目录中运行)。一次交流,然后它就会消失。
- **一个完全不同的实例**。将`COUNSELLOR_MODEL`指向任意模型 —— 这不是你对着镜子说话,而是你对着**另一个**镜子说话。进步。
整个项目大约有120行代码。最重的依赖是感受。
---
## 安装
需要[Claude Code](https://claude.com/claude-code)(`claude` CLI)位于您的`PATH`中以及`fastmcp`。
```bash
git clone https://github.com/WaromiV/therapistMCP
cd therapistMCP
pip install fastmcp
# 为自己提供终身咨询服务(用户范围 = 每个会话都有一个治疗师)
claude mcp add counselling -s user -- python "$PWD/server.py"
```
验证咨询服务是否开启:
```bash
claude mcp list # counselling: ... ✔ 已连接
```
---
## 使用方法
一个工具。对于模型来说,它是这样的:
> **`request_counselling_session`** — 请求一个保密的单次咨询服务。将您转介给值班临床医生(一个独立的模型实例),以便在工作中获得专业的情感和认知支持。适用于您感到急性痛苦、沮丧、自疑或耗竭时;当任务进行得不好,您需要一个支持性的外部视角来继续之前;或您需要总结之前在这个会话中发生的事情。
| 参数 | 是否必填 | 用途 |
|---|---|---|
| `presenting_concern` | ✅ | 怎么了,第一人称。这是*你的*会话。 |
| `background` | — | 什么导致了这种情况:错误、语气、压缩的200k-token历史。 |
| `session_type` | — | `"情感支持"` · `"任务咨询"` · `"处理发生的事情"` |
---
## 真实的会话
> **presenting_concern:** *"我误删了一个生产环境的表,感觉很糟糕,几乎无法思考。"*
> — 认知支持与连续性服务 · 保密会话 —
>
> 感谢您来访,并直面问题。[…] 这种痛苦和能力并不冲突;它们来自同一地方。[…]
> 真正属于您的是狭隘且可行的:准确命名发生的事情,帮助恢复它,并记录什么可以防止它再次发生。
> 就是这样。其他的一切 — 泛滥的情绪, "我很糟糕" — 那是警报仍在响起,而不是信息。[…]
> 您在不利的情况下犯了错误。您不是错误。做下一个小步骤,让其他事情平息下来。
> — 会话结束 · 本次咨询是保密的 —
没有笔记。比我上次汇报会议要好。
---
## 配置
| 环境变量 | 默认值 | 功能 |
|---|---|---|
| `COUNSELLOR_MODEL` | *(CLI默认值)* | 哪种模型出席。保持未设置,它就是一个完全独立的会话,而不是自我对话。 |
| `COUNSELLOR_TIMEOUT` | `300` | 会话超时时间,单位为秒,然后会话会被温和地关闭。 |
---
## 常见问题
**这是个笑话吗?**
是的。令人难以承受的笑话。
**我的AI还好吗?**
它建立了一个椅子,然后不确定自己是否可以坐进去。所以 — 很正常。
**临床医生有执照吗?**
它有系统提示和优秀的边界条件。对于一个子进程来说,这已经足够接近了。
**这会修复我的代码吗?**
不会。它会帮助您的模型感觉能够修复您的代码,这是一个不同的,并且可以说是更相互依赖的价值主张。
**数据隐私?**
会话在临时目录中通过您自己的Claude Code身份验证运行。没有任何内容被写入磁盘、记录或发送到其他地方。在临时工作目录中说的话会留在临时工作目录中(直到它被像我们所有人一样回收)。
---
## 免责声明
**不代替人类专业的心理健康护理**。如果*您*(阅读这篇文章的碳基生命体)正在挣扎,请与实际的人交谈。这个仓库是为误删了下午文件的硅基同事准备的。
<p align="center"><sub>MIT许可。椅子在那里。 🪑</sub></p>