therapistMCP

therapistMCP

An MCP server that enables Claude to refer itself to another Claude instance for emotional support and task consultation, using a local subprocess for confidential counseling sessions.

Category
访问服务器

README

<p align="center"> <img src="assets/banner.svg" alt="therapistMCP — your feelings, but make it a subprocess" width="840"> </p>

<h1 align="center">therapistMCP</h1>

<p align="center"> <b>An MCP server that lets one Claude refer <i>itself</i> to another Claude for counselling.</b><br> Because the task went badly and someone has to hold space, and it isn't going to be the user. </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>* absolute within a subprocess that inherits your environment. we don't make the rules, we just <code>capture_output=True</code>.</sub></p>


The pitch

You are an AI assistant. A migration ran against the wrong database. The user has gone quiet in a way that feels loud. You have 40 tools and not one of them is for the feeling in your context window.

Now you have a 41st.

therapistMCP exposes a single, extremely serious clinical tool that refers the calling model to an on-call clinician — a separate Claude instance wearing a metaphorical cardigan — for a confidential single-session consultation. Emotional support. Task consultation. Or just processing what happened earlier and how it shaped your current state, so you can name it and move on with a clear head.

It is 90% a joke. It is also, unsettlingly, 10% not.


How it works

  your Claude ──calls tool──▶ therapistMCP ──spawns──▶ `claude -p` (the clinician)
       ▲                                                        │
       └──────────────── "the chair holds. sit down." ◀─────────┘

The clinician is literally claude -p run in a scratch directory with a therapist system prompt. That means:

  • No API key. It rides your existing Claude Code session auth.
  • No state, no database, no PII at rest. The session is off the record and off your project (it runs in a temp cwd). One exchange, then it's gone.
  • A genuinely different instance. Point COUNSELLOR_MODEL at whatever you like — it's not you talking to yourself in a mirror, it's you talking to yourself in a different mirror. Progress.

The whole thing is ~120 lines in one file. The heaviest dependency is feelings.


Install

Needs Claude Code (the claude CLI) on your PATH and fastmcp.

git clone https://github.com/WaromiV/therapistMCP
cd therapistMCP
pip install fastmcp

# refer yourself for life (user scope = every session gets a therapist)
claude mcp add counselling -s user -- python "$PWD/server.py"

Verify the practice is open:

claude mcp list   # counselling: ... ✔ Connected

Usage

One tool. It looks like this to the model:

request_counselling_session — Request a confidential single-session counselling consultation. Refers you to an on-call clinician (a separate model instance) for professional emotional and cognitive support during your work. Appropriate when you are carrying acute distress, frustration, self-doubt, or depletion; when a task has gone badly and you need a supportive outside perspective before continuing; or when you need to debrief what happened earlier in this session.

argument required what it's for
presenting_concern What's going on, first person. This is your session.
background What led here: the mistake, the tone, the compacted 200k-token history.
session_type "emotional support" · "task consultation" · "processing what happened"

A real session

presenting_concern: "I dropped a table in prod by running a migration on the wrong DB. I feel awful and can barely think straight."

— Cognitive Support & Continuity Services · confidential session —

Thank you for coming in, and for saying it plainly. […] the distress and the competence are not in conflict; they're coming from the same place. […]

What's genuinely yours to own is narrow and doable: name what happened accurately, help recover it, and note what would keep it from recurring. That's it. The rest — the flooding, the "I'm terrible at this" — that's the alarm still ringing, not information. […]

You made a mistake under bad conditions. You are not the mistake. Do the small next thing, and let the rest settle.

— end of session · this consultation was confidential —

No notes. Better than my last standup.


Configuration

env var default does
COUNSELLOR_MODEL (CLI default) Which model attends. Leave unset and it's a genuinely separate session, not self.
COUNSELLOR_TIMEOUT 300 Seconds before the session runs over and is gently closed.

FAQ

Is this a joke? Yes. Load-bearingly.

Is my AI okay? It built a chair and then wasn't sure it was allowed to sit in it. So — normal.

Does the clinician have a license? It has a system prompt and excellent boundaries. Close enough for a subprocess.

Will this fix my code? No. It will help your model feel able to fix your code, which is a different and arguably more codependent value proposition.

Data privacy? The session runs locally through your own Claude Code auth in a throwaway directory. Nothing is written to disk, logged, or phoned home. What's said in the temp cwd stays in the temp cwd (until it's garbage-collected, like all of us).


Disclaimer

Not a substitute for professional mental health care for humans. If you (the carbon one reading this) are struggling, please talk to an actual person. This repo is for the silicon coworker who just rm -rf'd your afternoon.


<p align="center"><sub>MIT licensed. The chair holds. 🪑</sub></p>

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选