Skip to main content
Glama
koyaaarr

Open Personality MCP Server

by koyaaarr

Open Personality

Create personality profiles and output them as OpenClaw-compatible SOUL.md / IDENTITY.md.

12-facet profiling based on 33 academic personality frameworks.

No API key required. Fully local. MIT License.

Architecture — Who Does What?

AI Agent (Claude, Cursor, Gemini, etc.)   MCP Server (@openpersonality)
┌──────────────────────────────────┐     ┌─────────────────────────────┐
│ - Analyzes conversation          │     │ - Stores profiles            │
│ - Estimates facet values (a/b)   │ ──→ │ - Merges confidence scores   │
│ - Determines confidence (0-1)    │     │ - Detects drift              │
│                                  │ ←── │ - Generates SOUL.md          │
└──────────────────────────────────┘     └─────────────────────────────┘

The MCP server does NOT call any external APIs or LLMs. Facet estimation is the responsibility of the connected AI agent.

Related MCP server: MBTI MCP Server

Features

  • 12-Facet Personality Profiling — Scientific personality structure based on 33 academic frameworks

  • Progressive Profile — Profiles grow autonomously through conversation (agents detect signals and update automatically)

  • OpenClaw Compatible — Generates SOUL.md / IDENTITY.md in OpenClaw format

  • MCP Server — Works with all major AI agent platforms via stdio transport

  • Confidence Merge — Bayesian-style confidence tracking with drift detection

  • Bilingual — English and Japanese support

Packages

Package

Description

@openpersonality/core

Core logic: facets, templates, confidence merge, validation, data

@openpersonality/mcp-server

MCP Server (stdio): 6 tools + 3 resources + 2 prompts

Installation

Claude Desktop

Edit claude_desktop_config.json:

OS

Path

macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Windows

%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "openpersonality": {
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

Restart Claude Desktop after editing.

Claude Code (CLI)

claude mcp add openpersonality -- npx -y @openpersonality/mcp-server

Or add to .mcp.json in your project root for team sharing:

{
  "mcpServers": {
    "openpersonality": {
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

Cursor

Edit ~/.cursor/mcp.json (global) or <project>/.cursor/mcp.json (project):

{
  "mcpServers": {
    "openpersonality": {
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "openpersonality": {
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

VS Code (GitHub Copilot)

Create .vscode/mcp.json in your project:

{
  "servers": {
    "openpersonality": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

Note: VS Code uses "servers" (not "mcpServers") and requires a "type" field.

Gemini CLI

Edit ~/.gemini/settings.json:

{
  "mcpServers": {
    "openpersonality": {
      "command": "npx",
      "args": ["-y", "@openpersonality/mcp-server"]
    }
  }
}

Or use the CLI:

gemini mcp add openpersonality -- npx -y @openpersonality/mcp-server

OpenAI Agents SDK (Python)

import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio


async def main():
    async with MCPServerStdio(
        name="Open Personality",
        params={
            "command": "npx",
            "args": ["-y", "@openpersonality/mcp-server"],
        },
    ) as server:
        agent = Agent(
            name="Personality Assistant",
            instructions="You help users create and manage personality profiles.",
            mcp_servers=[server],
        )
        result = await Runner.run(agent, "Create a personality profile for me.")
        print(result.final_output)


asyncio.run(main())

Quick Start — Progressive Profiling

Step 1: Seed (first interaction)

create_profile(name: "Alice", external_id: "discord:123", language: "ja")

language is set at creation and persists for all template generation (SOUL.md / IDENTITY.md).

Step 2: Grow (after a few conversations)

update_profile(external_id: "discord:123", facets: {
  "facet_8": { "value": "b", "confidence": 0.3 },   // Introvert signal
  "facet_6": { "value": "b", "confidence": 0.4 }    // Logical signal
})

Step 3: Refine (user self-report or strong signal)

update_profile(external_id: "discord:123", facets: {
  "facet_12": { "value": "a", "confidence": 1.0 }   // User confirmed: Planned
})

Notes:

  • soul_md / identity_md are auto-generated from facets + demographics if omitted (recommended for most use cases). Provide them only for custom templates.

  • Confidence accumulates via Bayesian merge. Repeated low-confidence signals build to high confidence over time.

12 Facets

Key

Category

A (value: "a")

B (value: "b")

facet_1

Communication

Assertive

Harmonious

facet_2

Communication

Direct

Indirect

facet_3

Communication

Leader

Follower

facet_4

Values

Work-Focused

Life-Balance

facet_5

Values

Risk-Taking

Risk-Avoidance

facet_6

Thinking

Empathetic

Logical

facet_7

Thinking

Abstract

Concrete

facet_8

Personality

Extravert

Introvert

facet_9

Personality

Emotional

Calm

facet_10

Values

Open

Traditional

facet_11

Values

Team

Solo

facet_12

Thinking

Planned

Flexible

Confidence levels:

Range

Meaning

Display

0.0

Unknown

0.01–0.49

Tentative

~Value

0.50–0.99

Estimated

Value

1.0

User-confirmed

Value ✓

Demographics (Optional)

Demographics give your profile a character identity. All fields are optional.

OpenClaw Standard — mapped to IDENTITY.md Header fields:

Field

Purpose

Example

creature

Character type

"Fox", "Software Engineer"

emoji

Avatar shorthand

"🦊"

vibe

Overall impression

"calm & logical"

name is a required top-level parameter in ProfileData. It also exists in Demographics for template convenience, but ProfileData.name is the canonical source. avatar (OpenClaw standard) is planned for Phase 2.

OP Extension — Open Personality's extended fields for richer character creation:

Field

Purpose

Example

first_person

Pronoun (important for Japanese)

"僕", "I"

catchphrase

Signature phrase

"なるほど"

speaking_tone

Communication style

"落ち着いて論理的"

greeting

Opening line

"Hey there!"

gender

Affects pronouns/tone

"male", "non-binary"

age

Background context

"30s"

occupation

Expertise/role

"Software Engineer"

backstory

Character background (1-2 sentences)

"Former teacher turned freelancer"

Usage as an OpenClaw Skill

Open Personality works as an OpenClaw Skill for autonomous personality profiling. The agent detects personality signals during conversation and updates the profile automatically.

Setup

  1. Install the MCP server (see Installation above)

  2. Create a SKILL.md in your OpenClaw agent's skill directory:

---
user-invocable: true
disable-model-invocation: false
---

# Open Personality Skill

You have access to the Open Personality MCP tools for managing personality profiles.

## Session Start

At the beginning of each session, load the user's profile:
- Call `get_or_create_profile` with the user's external_id
- Include the returned SOUL.md in your conversation context

## Autonomous Profile Updates

During conversation, watch for personality signals:
- Communication style (assertive vs harmonious, direct vs indirect)
- Values (work-focused vs life-balance, risk-taking vs risk-avoidance)
- Thinking patterns (empathetic vs logical, abstract vs concrete)
- Personality traits (extravert vs introvert, emotional vs calm)

When you detect a signal:
1. Call `update_profile` with the facet value and low confidence (0.2-0.3)
2. The confidence merge algorithm handles accumulation over time
3. If a drift warning is returned, confirm with the user at a natural point

## Explicit Requests

- "Create my profile" → Call `create_profile` with inferred facets
- "Show my personality" → Call `get_profile` and display the SOUL.md
- "Update my profile" → Call `update_profile` with user-specified values (confidence: 1.0)
  1. Add a references/facet-guide.md with the 12 facets for the agent to reference:

# Facet Guide

| # | Facet | A | B |
|---|---|---|---|
| 1 | Communication | Assertive | Harmonious |
| 2 | Expression | Direct | Indirect |
| 3 | Role | Leader | Follower |
| 4 | Work-Life | Work-Focused | Life-Balance |
| 5 | Risk | Risk-Taking | Risk-Avoidance |
| 6 | Judgment | Empathetic | Logical |
| 7 | Thinking | Abstract | Concrete |
| 8 | Energy | Extravert | Introvert |
| 9 | Emotion | Emotional | Calm |
| 10 | Openness | Open | Traditional |
| 11 | Collaboration | Team | Solo |
| 12 | Planning | Planned | Flexible |

How Progressive Profile Works

Session 1: User says "I prefer working alone"
  → Agent detects Solo signal → update_profile(facet_11: "b", confidence: 0.3)

Session 3: User says "I like to plan everything in advance"
  → Agent detects Planned signal → update_profile(facet_12: "a", confidence: 0.25)

Session 5: User mentions preferring solo work again
  → Confidence merge: 0.3 + 0.25 → 0.475 (approaching confirmed)

Over time: Profile grows without user ever explicitly asking for it.

MCP Tools

Tool

Description

create_profile

Create a new profile (only name is required)

update_profile

Update facets/demographics with confidence merge and drift detection

get_or_create_profile

Get by external_id, or create if not found (for bots)

get_profile

Get profile data + SOUL.md + IDENTITY.md

list_profiles

List all local profiles with completeness info

delete_profile

Delete a profile

Note on soul_md / identity_md: These are auto-generated from facets + demographics if omitted (recommended for most use cases). Provide them only when you want to use a custom template generated by the AI agent itself.

MCP Resources

URI

Description

op://profiles/{id}

Profile structured JSON

op://profiles/{id}/soul

SOUL.md text

op://profiles/{id}/identity

IDENTITY.md text

MCP Prompts

Prompt

Description

onboarding

Guides the AI through creating a user's first profile

personalized_advice

Generates advice tailored to the user's personality

Output Example

SOUL.md

# Soul

## Core Truths
- Lead with conviction, deliver with care
- Plan first, explore within structure
- Think with data, connect with people

## Boundaries
- Words are chosen carefully, even in disagreement
- Decisions require data — intuition alone is not enough
- Risks are calculated, never reckless

## Vibe
Warm and polite tone. Uses "watashi" as first person. Firm opinions
delivered in soft packaging. Analytical mind with genuine enjoyment
of human connection.

## Facet Profile
| Facet | Value |
|---|---|
| Assertive ↔ Harmonious | Assertive |
| Direct ↔ Indirect | ~Indirect |
| Leader ↔ Follower | Leader |
| Work-Focused ↔ Life-Balance | Life-Balance |
| ... | ... |

Data Storage

All data is stored locally:

~/.openpersonality/
├── config.json
└── profiles/{id}/
    ├── profile.json    # Structured data (source of truth)
    ├── SOUL.md         # Generated personality document
    └── IDENTITY.md     # Generated identity document

No data is sent to external servers. Directory permissions are set to 0700 (owner-only).

Platform Compatibility

Platform

Transport

Autonomous Updates

Claude Desktop / Claude Code

MCP (stdio)

Autonomous tool calling

Cursor / Windsurf / Cline

MCP (stdio)

Agent Mode

VS Code / GitHub Copilot

MCP (stdio)

Agent Mode

Gemini CLI

MCP (stdio)

Auto tool calling

OpenAI Agents SDK

MCP (stdio)

Agent loop

OpenClaw

MCP + Skill

Skill auto-invocation

ChatGPT

MCP (Streamable HTTP)

Planned

Development

pnpm install    # Install dependencies
pnpm build      # Build all packages
pnpm typecheck  # Type check
pnpm test       # Run tests
pnpm clean      # Clean build artifacts

Privacy

  • All profile data stays on your machine (~/.openpersonality/)

  • The MCP server makes zero external API calls

  • No API key required — facet estimation is done by your AI agent's own LLM

  • Demographics may contain personal information — profiles are stored with owner-only permissions

License

MIT

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    Provides comprehensive psychological intelligence capabilities including persona analysis, attachment theory assessment, relationship compatibility evaluation, and autonomous workflow strategies through a complete graph database integration.
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to guide users through MBTI personality tests with two modes (28-question simplified or 48-question cognitive functions), track progress, and provide detailed personality type analysis and results.
    4
    10
    2
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides a universal AI personality layer that uses a scientifically-backed Big Five engine to apply consistent character traits and brand voices across MCP-compatible platforms. It allows users to inject custom personality profiles or presets into AI interactions to ensure behavioral consistency.
    7
    9
    76
    MIT
  • A
    license
    -
    quality
    -
    maintenance
    An open-source personality profiling system that enables users to record and analyze their decisions, emotions, and self-reflections through a structured set of 56 tools. It helps users build a digital persona and gain self-insight by tracking interactions, decision-making patterns, and emotional states.

View all related MCP servers

Related MCP Connectors

  • Identity infrastructure for the AI economy. Confirms if someone is known; returns inferred traits.

  • Persistent AI entity framework with causal memory, emotional state, and identity.

  • The personal context layer for AI: your profile and files, read by any MCP client over OAuth.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/koyaaarr/open-personality-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server