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.
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_MODELat 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.