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
Visit Server

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>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured