Universal MCP server for emotional tone analysis and de-escalation in communications
Project description
Emotional De-escalation MCP Server v2
Universal MCP server for emotional tone analysis and de-escalation using a 5-axis communication style model.
Based on: Mistakes to Avoid When Developing Chatbots for User Support
5-Axis Communication Style Model
Every message is characterized by a style vector — 5 independent axes on a discrete scale from -2 to +2:
| Axis | -2 | -1 | 0 | +1 | +2 |
|---|---|---|---|---|---|
| W Warmth | cold, detached | cool | neutral | friendly | warm, empathetic |
| F Formality | slang, crude | casual | balanced | professional | formal, official |
| P Playfulness | dead serious | dry | balanced | light, witty | humorous, ironic |
| A Assertiveness | uncertain, meek | tentative | balanced | confident | demanding, forceful |
| E Expressiveness | terse, reserved | restrained | balanced | animated | emotional, intense |
Style Combinations
| Style | W | F | P | A | E |
|---|---|---|---|---|---|
| Sarcasm | -2 | -1 | +2 | 0 | +1 |
| Friendly humor | +1 | -1 | +2 | -1 | 0 |
| Flirtatious | +2 | -2 | +1 | -1 | +1 |
| Business tone | 0 | +2 | -2 | 0 | -1 |
| Aggression | -2 | -2 | -2 | +2 | +2 |
| Desperation | 0 | -1 | -2 | -1 | +2 |
| Passive-aggression | -1 | 0 | +1 | +1 | -1 |
De-escalation Strategy
Instead of a single coefficient, de-escalation operates per-axis:
| Axis | Shift | Rationale |
|---|---|---|
| Warmth | +1 | Increase empathy |
| Formality | +1 | Slightly more professional |
| Playfulness | → 0 | Reduce sarcasm risk |
| Assertiveness | -1 | Reduce pressure |
| Expressiveness | -1 | Calm down intensity |
This breaks the positive feedback loop by ensuring the bot's response vector is always shifted toward a more constructive zone.
Tools
emotion_analyze
Analyze a message → emotion + style vector + style label.
{
"text": "ну конечно, ваш замечательный бот мне так помог, спасибо огромное",
"language_hint": "ru"
}
Returns:
{
"emotion": "anger",
"intensity": 1,
"style_vector": {"warmth": -2, "formality": -1, "playfulness": 2, "assertiveness": 0, "expressiveness": 1},
"detected_style": "sarcasm",
"explanation": "...",
"triggers": ["ну конечно", "замечательный", "спасибо огромное"]
}
emotion_de_escalate
Rewrite a draft to match a target style vector.
Auto mode (default): analyzes user, applies de-escalation shifts.
Override mode: pass target_style explicitly.
{
"user_message": "what the hell is wrong with the delivery?!",
"draft_response": "Your order should arrive by April 10.",
"target_style": {"warmth": 1, "formality": 1, "playfulness": 0, "assertiveness": 0, "expressiveness": 0}
}
emotion_evaluate_dialogue
Evaluate full dialogue → per-message vectors + trend + feedback loop risk.
{
"messages": [
{"role": "user", "text": "hello"},
{"role": "bot", "text": "Hello! How can I help?"},
{"role": "user", "text": "what the hell is wrong with the delivery?!"},
{"role": "bot", "text": "Your order #3756 arrives April 10."},
{"role": "user", "text": "ok I guess I'll wait"}
],
"response_format": "markdown"
}
Returns a table:
| # | Role | Emotion | W | F | P | A | E | Style |
|---|---|---|---|---|---|---|---|---|
| 1 | user | neutral | 0 | -1 | 0 | 0 | 0 | casual |
| 2 | bot | neutral | +1 | 0 | 0 | 0 | 0 | friendly |
| 3 | user | anger | -2 | -2 | -2 | +2 | +2 | aggressive |
| 4 | bot | neutral | 0 | +1 | -1 | 0 | -1 | business |
| 5 | user | neutral | 0 | -1 | 0 | -1 | 0 | resigned |
Installation & Setup
Prerequisites
- Python 3.11+
- An Anthropic API key (get one here)
Quick Start with Claude Code
The easiest way to use this server is with Claude Code.
Step 1. Install the MCP server (one-time setup):
claude mcp add emotional-deescalation -e ANTHROPIC_API_KEY=sk-ant-your-key-here -- uvx emotional-deescalation-mcp
This command registers the server in Claude Code. Replace
sk-ant-your-key-herewith your actual Anthropic API key.
Step 2. Start Claude Code as usual:
claude
That's it! The tools emotion_analyze, emotion_de_escalate, and emotion_evaluate_dialogue are now available in your Claude Code session. You can ask Claude to analyze messages, de-escalate responses, or evaluate dialogues.
Claude Desktop
Add to your Claude Desktop config file (claude_desktop_config.json):
{
"mcpServers": {
"emotional-deescalation": {
"command": "uvx",
"args": ["emotional-deescalation-mcp"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-your-key-here"
}
}
}
}
Manual / Development Setup
git clone https://github.com/ilyajob05/emo_bot.git
cd emo_bot
uv sync
export ANTHROPIC_API_KEY=sk-ant-your-key-here
python server.py
Adding to any project via .mcp.json
Place an .mcp.json file in the root of your project so that Claude Code automatically connects to the server when opened in that directory:
{
"mcpServers": {
"emotional-deescalation": {
"command": "uvx",
"args": ["emotional-deescalation-mcp"],
"env": {
"ANTHROPIC_API_KEY": ""
}
}
}
}
Set the
ANTHROPIC_API_KEYenvironment variable in your shell, or fill it in directly in the file.
Agent integration
For LLM agents connecting via MCP: see AGENTS.md — a compact instruction file designed to minimize context window usage while providing all necessary tool selection and invocation guidance.
Architecture
MCP Client (Claude Desktop, Claude Code, any MCP host)
│ stdio
▼
emotional_deescalation_mcp
├── emotion_analyze → emotion + style vector W/F/P/A/E
├── emotion_de_escalate → rewrite draft to target vector
└── emotion_evaluate_dialogue → per-message vectors + dynamics
│
▼
Anthropic Claude API (analysis backend)
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emotional_deescalation_mcp-0.1.1.tar.gz.
File metadata
- Download URL: emotional_deescalation_mcp-0.1.1.tar.gz
- Upload date:
- Size: 69.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
18e1a84377fd3aa563057306b73ac5d433f7156e5b371d453ade9c17038bb4d1
|
|
| MD5 |
717956ba194047508c6f9283428d673c
|
|
| BLAKE2b-256 |
77149bc80c96733988e36bde34359be2113c411eb68efa55b6ddbb8b293f363c
|
File details
Details for the file emotional_deescalation_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: emotional_deescalation_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 79.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d10f58fcc877e1f9164b501afb814f0281544dbe7bdcb45a25b206d91f97ba
|
|
| MD5 |
abcc4cfdc7aefb17d6c1aa2d46f3a889
|
|
| BLAKE2b-256 |
23442c3ebc55d2b9d15f2fb51da9672e082ef7d0cd3ba10d9fd7ba2863d0ec98
|