persona-mcp
Provides tools for structured persona search, aggregation, group comparison, cluster summaries/details, and core persona summaries/details against a PostgreSQL database of Korean synthetic personas.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@persona-mcp한국 40대 여성 중 경기도 거주자는 몇 명이고 주요 직업은?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Korea Persona Intelligence
100만 한국 합성 페르소나 데이터(nvidia/Nemotron-Personas-Korea)를
PostgreSQL + Qdrant + MCP + Nuxt 대시보드로 서비스하고, ChatGPT(및 MCP 지원
클라이언트)가 한국 페르소나에게 "질문"할 수 있게 하는 로컬(192.168.x.x) 전용 시스템.
전체 개발 계획 및 로드맵은 plan.md 참조.
아키텍처
ChatGPT ──MCP──▶ persona-mcp ──┬─ PostgreSQL (조건/통계/클러스터)
└─ Qdrant (의미 검색)서비스 | 역할 | 포트 |
postgres | 100만 페르소나 저장/검색/집계 | 15432 |
qdrant | 벡터 의미 검색 (10K POC) | 16333/16334 |
mcp | MCP 서버 (4 tools) | 19000 |
dashboard | Nuxt 대시보드 | 18080 |
etl | parquet → PostgreSQL 적재 (일회성) | — |
embed | 임베딩 → Qdrant (일회성) | — |
Related MCP server: lawink-mcp
빠른 시작
# 1) 전체 기동 (postgres, qdrant, mcp, dashboard)
docker compose up -d
# 2) 데이터 적재 (최초 1회, 100만 건)
docker compose run --rm etl
# 3) 임베딩 POC (10,000건 → Qdrant)
docker compose run --rm embed접속
서비스 | URL |
대시보드 | |
MCP Server | |
PostgreSQL | postgresql://persona:persona@192.168.31.253:15432/persona |
Qdrant |
MCP 도구 (8개)
Tool | 설명 | 데이터 소스 |
| 구조화 조건 검색 (연령/성별/지역/직업 등) | PostgreSQL |
| 집단 통계 (인구/분포/상위 직업) | PostgreSQL |
| 하이브리드 의미+조건 검색 | Qdrant (LIKE 폴백) |
| 두 집단 비교 (유의미한 차이 축약) | PostgreSQL |
| Micro 클러스터 목록 (924개) | PostgreSQL |
| 클러스터 상세 + 대표 샘플 | PostgreSQL |
| Core Persona 요약 (12개, LLM 별칭 포함) | PostgreSQL |
| Core 상세 + 하위 Major 분해 | PostgreSQL |
ChatGPT 연결
방법 A — 원격 URL (streamable-http)
MCP 지원 클라이언트에 다음 URL을 등록:
http://192.168.31.253:19000/mcp또는 mcp-config.json (프로젝트 루트) 내용을 클라이언트 설정에 복사.
방법 B — stdio (로컬)
{
"mcpServers": {
"persona": {
"command": "docker",
"args": ["exec", "-i", "persona-mcp", "python", "server.py"]
}
}
}예시 질문
ChatGPT에서 연결 후 이런 질문이 동작합니다:
"한국 40대 여성 중 경기도 거주자는 몇 명이고 주요 직업은?"
"서울 30대 1인가구와 경기 40대 자녀가구를 비교해줘"
"자녀 교육과 건강관리에 관심이 많은 수도권 40대 여성 페르소나를 찾아줘"
API 호출 매뉴얼
1. 대시보드 REST API
대시보드 자체 API (PostgreSQL 직접 접근). 기본 주소 http://192.168.31.253:18080
Method | 경로 | 설명 |
GET |
| 전체 통계 (총 인구, 지역/성별/연령 분포) |
GET |
| 구조화 조건 검색 |
GET |
| 키워드 의미 검색 (LIKE 기반) |
GET |
| MCP 툴 목록 조회 (MCP 경유) |
POST |
| MCP 툴 실행 (MCP 경유) |
예시:
# 전체 통계
curl http://192.168.31.253:18080/api/stats
# 구조화 검색 (경기 40대 여성)
curl 'http://192.168.31.253:18080/api/search?province=경기&age_min=40&age_max=49&sex=여자&limit=5'
# 의미 검색
curl 'http://192.168.31.253:18080/api/similar?q=자녀%20교육'
# MCP 툴 목록
curl http://192.168.31.253:18080/api/mcp/tools
# MCP 툴 실행 (집단 통계)
curl -X POST http://192.168.31.253:18080/api/mcp/call \
-H 'Content-Type: application/json' \
-d '{"toolName":"aggregate_persona","args":{"province":"경기","sex":"여자"}}'2. MCP 서버 직접 호출 (streamable-http)
MCP 프로토콜 원격 호출. 주소 http://192.168.31.253:19000/mcp
# initialize (세션 획득)
curl -X POST http://192.168.31.253:19000/mcp \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'MCP는 세션 기반이므로,
initialize응답 헤더의Mcp-Session-Id를 이후 요청에 포함해야 합니다. 실제 클라이언트 연결은mcp-config.json또는 ChatGPT의 원격 URL 등록을 권장합니다.
3. Python 클라이언트 예시
import asyncio, json
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
async with streamablehttp_client('http://192.168.31.253:19000/mcp') as (r, w, _):
async with ClientSession(r, w) as s:
await s.initialize()
res = await s.call_tool('similar_persona', arguments={
'query': '자녀 교육에 관심이 많은 40대 여성',
'province': '경기',
'limit': 5,
})
print(json.loads(res.content[0].text))
asyncio.run(main())종료
docker compose down # 컨테이너만
docker compose down -v # 볼륨(데이터)까지 삭제라이선스
데이터셋
본 프로젝트가 사용하는 nvidia/Nemotron-Personas-Korea 데이터셋은
크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스 (CC BY 4.0)에 따라 제공됩니다.
상업적·비상업적 용도 모두 자유롭게 사용할 수 있으나, **저작자 표시(Attribution)**가 필요합니다.
라이선스: CC BY 4.0
저작자: NVIDIA Corporation
@software{nvidia/Nemotron-Personas-Korea,
author = {Kim, Hyunwoo and Ryu, Jihyeon and Lee, Jinho and Ryu, Hyungon and Praveen, Kiran and Prayaga, Shyamala and Thadaka, Kirit and Jennings, Will and Sadeghi, Bardiya and Sharabiani, Ashton and Choi, Yejin and Meyer, Yev},
title = {Nemotron-Personas-Korea: Synthetic Personas Aligned to Real-World Distributions for Korea},
month = {April},
year = {2026},
url = {https://huggingface.co/datasets/nvidia/Nemotron-Personas-Korea}
}프로그램 (코드)
본 프로젝트의 소스 코드는 Apache License 2.0에 따라 배포됩니다. 전체 내용은 LICENSE 파일을 참조하세요.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcpweaveOAuthcom.mcpweave
Korea-native MCP gateway: Korean commerce, payments, messaging, gov & finance APIs for AI agents.
Free MCP API to create AI chat personas for websites — upload knowledge, search, and chat
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Korean crypto × AI media MCP — channel stance, daily briefs, RAG, canonical store, AI personas.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for querying a database of 1 million Korean personas with full-text search, enabling AI agents to retrieve detailed demographic, professional, and personal profiles.24-
- AlicenseAqualityDmaintenanceEnables querying Korean legal knowledge graph with 160K precedents and 130K statutes via MCP tools for relation exploration and semantic search.71MIT
- AlicenseAqualityDmaintenanceEnables MCP clients like Claude Desktop to search, retrieve, and analyze Korean statistical data from KOSIS OpenAPI.161MIT
- AlicenseNot gradedqualityDmaintenanceMCP server providing access to 1M synthetic Korean personas based on KOSIS statistics, enabling persona sampling, search, and analysis via natural language queries.9 npmMIT