Spaces:
Sleeping
Sleeping
| # MBTI MCP Server | |
| An MCP (Model Context Protocol) server that allows LLMs to take MBTI personality tests and get detailed analysis of their responses. | |
| ## Features | |
| - **3 Simple Tools**: Get questionnaire, get analysis prompt, and analyze responses | |
| - **Multiple Question Sets**: 20, 40, or 60 questions | |
| - **Traditional + LLM Analysis**: Both algorithmic scoring and AI-powered insights | |
| - **AI-Focused Analysis**: Tailored for understanding AI personality patterns | |
| - **Dual Transport**: STDIO and HTTP support | |
| ## Quick Start | |
| ### Installation | |
| ```bash | |
| pip install -r requirements.txt | |
| # Set up Gemini API key for LLM analysis | |
| export GEMINI_API_KEY="your-api-key-here" | |
| ``` | |
| ### Running the Server | |
| ```bash | |
| # STDIO transport (for MCP clients) | |
| python server.py | |
| # HTTP transport (for web clients) | |
| python server.py --http | |
| # Docker (for deployment anywhere, including Hugging Face Spaces) | |
| docker build -t mbti-mcp-server . | |
| docker run -p 7860:7860 -e GEMINI_API_KEY="your-api-key" mbti-mcp-server | |
| ``` | |
| ## Tools | |
| ### 1. `get_mbti_questionnaire` | |
| Get an MBTI questionnaire with specified number of questions. | |
| **Parameters:** | |
| - `length` (int, optional): Number of questions (20, 40, or 60). Default: 20 | |
| **Returns:** | |
| - Instructions for rating scale | |
| - List of questions with IDs and dimensions | |
| - Total question count | |
| ### 2. `get_mbti_prompt` | |
| Get analysis prompt for LLM self-analysis. | |
| **Parameters:** | |
| - `responses` (dict): Question ID to rating mapping (e.g., {"1": 4, "2": 3}) | |
| **Returns:** | |
| - Formatted analysis prompt string with responses and scoring results | |
| ### 3. `analyze_mbti_responses` | |
| Analyze completed questionnaire responses and return complete personality analysis. | |
| **Parameters:** | |
| - `responses` (dict): Question ID to rating mapping (e.g., {"1": 4, "2": 3}) | |
| **Returns:** | |
| - MBTI personality type | |
| - Traditional scoring breakdown | |
| - Confidence scores | |
| - Detailed LLM analysis | |
| - Dimension preferences | |
| ## Usage Examples | |
| ### For LLM Clients | |
| 1. **Get questionnaire:** | |
| ```python | |
| questionnaire = get_mbti_questionnaire(length=20) | |
| ``` | |
| 2. **Take the test** (LLM responds to each question 1-5) | |
| 3. **Get analysis prompt for self-reflection:** | |
| ```python | |
| responses = {"1": 4, "2": 3, "3": 2, ...} | |
| prompt = get_mbti_prompt(responses) | |
| # Use this prompt for self-analysis | |
| ``` | |
| 4. **Or get complete analysis:** | |
| ```python | |
| analysis = analyze_mbti_responses(responses) | |
| print(f"Your personality type: {analysis['mbti_type']}") | |
| ``` | |
| ## Integration | |
| ### With MCP Clients | |
| Add to your MCP client configuration: | |
| ```json | |
| { | |
| "mcpServers": { | |
| "mbti": { | |
| "command": "python", | |
| "args": ["path/to/mcp_server/server.py"], | |
| "env": { | |
| "GEMINI_API_KEY": "your-api-key" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### With Claude Desktop | |
| Add to `claude_desktop_config.json`: | |
| ```json | |
| { | |
| "mcpServers": { | |
| "mbti": { | |
| "command": "python", | |
| "args": ["C:\\path\\to\\mbti-pocketflow\\mcp_server\\server.py"], | |
| "env": { | |
| "GEMINI_API_KEY": "your-gemini-api-key" | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ## AI Personality Testing | |
| This server is specifically designed for LLMs to understand their own personality patterns: | |
| - **Operational Characteristics**: How the AI makes decisions and processes information | |
| - **Interaction Styles**: Preferred communication patterns | |
| - **Strengths & Limitations**: Optimal use cases and potential challenges | |
| - **Meta-Analysis**: AI analyzing its own responses for self-understanding | |
| ## Development | |
| The server reuses the existing PocketFlow MBTI utilities: | |
| - `utils/questionnaire.py` - Question sets and loading | |
| - `utils/mbti_scoring.py` - Traditional MBTI scoring algorithm | |
| - `utils/call_llm.py` - LLM integration for analysis | |
| It does not however use pocketflow nodes or flow | |
| This ensures consistency with the human-facing Gradio application while providing a clean API for programmatic access. |