Skip to main content

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

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-here with 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_KEY environment 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

emotional_deescalation_mcp-0.1.1.tar.gz (69.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

emotional_deescalation_mcp-0.1.1-py3-none-any.whl (79.0 kB view details)

Uploaded Python 3

File details

Details for the file emotional_deescalation_mcp-0.1.1.tar.gz.

File metadata

File hashes

Hashes for emotional_deescalation_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 18e1a84377fd3aa563057306b73ac5d433f7156e5b371d453ade9c17038bb4d1
MD5 717956ba194047508c6f9283428d673c
BLAKE2b-256 77149bc80c96733988e36bde34359be2113c411eb68efa55b6ddbb8b293f363c

See more details on using hashes here.

File details

Details for the file emotional_deescalation_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for emotional_deescalation_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 95d10f58fcc877e1f9164b501afb814f0281544dbe7bdcb45a25b206d91f97ba
MD5 abcc4cfdc7aefb17d6c1aa2d46f3a889
BLAKE2b-256 23442c3ebc55d2b9d15f2fb51da9672e082ef7d0cd3ba10d9fd7ba2863d0ec98

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page