Convert your ChatGPT export into a personal context profile for Claude and GitHub Copilot
Project description
chatgpt-to-claude-mcp
Turn your ChatGPT export into a personal context profile for Claude and GitHub Copilot.
Instead of manually writing a system prompt, this tool mines your actual conversation history — your word patterns, recurring topics, and habits of thought — and distils them into a ~3k character profile that meaningfully changes how an AI responds to you.
How it works
The pipeline runs entirely locally. It never sends your conversation data anywhere.
- Stream
conversations-*.jsonusingijson— never loads the full file into memory - Extract user-only messages (assistant responses are just mirrors of your input)
- Score lines by a weighted blend of word frequency relevance (60%) and Shannon entropy (40%), with context window expansion (±0–3 surrounding lines)
- Surface the top proper nouns from your history — names, projects, companies — and ask which to exclude as noise (old employers, irrelevant contacts, etc.)
- Re-run with updated banned phrases for a cleaner signal
- Synthesise a profile via the LLM from the dense signal text
- Install globally at
~/.config/profile.mdwith symlinks for Claude (~/.claude/CLAUDE.md) and Copilot (~/.copilot/copilot-instructions.md)
Banned phrases are persisted to {export_dir}/banned_phrases.json so they survive reruns.
Requirements
- Python 3.11+
- uv (recommended) or pip
Add to Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"chatgpt-to-claude": {
"command": "uvx",
"args": ["chatgpt-to-claude-mcp"]
}
}
}
Then restart Claude Desktop and say:
"Build my profile from my ChatGPT export at ~/Downloads/chatgpt-export"
Add to GitHub Copilot (VS Code)
.vscode/mcp.json:
{
"servers": {
"chatgpt-to-claude": {
"type": "stdio",
"command": "uvx",
"args": ["chatgpt-to-claude-mcp"]
}
}
}
Install via pip
pip install chatgpt-to-claude-mcp
chatgpt-to-claude-mcp
Tools
process_export(export_dir, banned_phrases?)
Runs the full pipeline. Returns:
top_proper_nouns— review these with the user, flag irrelevant onesdense_signal— scored excerpts for profile synthesissynthesis_prompt— prompt to use when synthesising the profile
save_profile(profile_content, export_dir)
Writes the synthesised profile and installs symlinks.
Getting your ChatGPT export
Settings → Data Controls → Export Data. You'll get a zip with conversations-*.json files.
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 chatgpt_to_claude_mcp-0.1.0.tar.gz.
File metadata
- Download URL: chatgpt_to_claude_mcp-0.1.0.tar.gz
- Upload date:
- Size: 11.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3cbd2b3a06c5f458f67351a82cbb3669312d2eaa73e758d21952597758b18a43
|
|
| MD5 |
ac71c9c990b54a6432053a8bb095246d
|
|
| BLAKE2b-256 |
220a50ca6873f418280d6728dc5ed9e9751ad1d665c57d636977c2c1223e2d0c
|
Provenance
The following attestation bundles were made for chatgpt_to_claude_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on tencircles/chatgpt-to-claude-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatgpt_to_claude_mcp-0.1.0.tar.gz -
Subject digest:
3cbd2b3a06c5f458f67351a82cbb3669312d2eaa73e758d21952597758b18a43 - Sigstore transparency entry: 1032043399
- Sigstore integration time:
-
Permalink:
tencircles/chatgpt-to-claude-mcp@4e6876688550ce286878061fcbedccc432f421da -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tencircles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4e6876688550ce286878061fcbedccc432f421da -
Trigger Event:
push
-
Statement type:
File details
Details for the file chatgpt_to_claude_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: chatgpt_to_claude_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55a4f203c96e7357d0777ab946f5d57d81a912215b0cb7c91eb5376f9c316cde
|
|
| MD5 |
d239fbe8e13a50e6fa3ab6cb772742d9
|
|
| BLAKE2b-256 |
1bfb532f8727886d42b8da41c6912fea6fe1f0c710dd00fc900a92ba70a0ef41
|
Provenance
The following attestation bundles were made for chatgpt_to_claude_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on tencircles/chatgpt-to-claude-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
chatgpt_to_claude_mcp-0.1.0-py3-none-any.whl -
Subject digest:
55a4f203c96e7357d0777ab946f5d57d81a912215b0cb7c91eb5376f9c316cde - Sigstore transparency entry: 1032043511
- Sigstore integration time:
-
Permalink:
tencircles/chatgpt-to-claude-mcp@4e6876688550ce286878061fcbedccc432f421da -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/tencircles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4e6876688550ce286878061fcbedccc432f421da -
Trigger Event:
push
-
Statement type: