跨LLM对话共享工具

MCP Context Bridge 是一个基于Model Context Protocol (MCP)的工具,允许用户在ChatGPT、Claude和Gemini等不同LLM之间共享对话内容,支持智能压缩和多种存储选项。

  • by vansh-903
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 vansh-903/context-mcp

使用说明

MCP上下文桥

使用模型上下文协议进行跨LLM会话共享

通过智能压缩在ChatGPT、Claude和Gemini之间传输对话。


这是什么?

一 MVP实施 它允许您保存来自一个LLM的对话并将其加载到另一个。使用 模型上下文协议(MCP) -AI上下文管理的开放标准。

例子: 与ChatGPT就实现OAuth进行对话,保存它,然后在Claude中以完整上下文继续进行同样的对话。


建筑

┌─────────────────────────────────────────────┐
│        Browser Extension (Chrome)           │
│                                             │
│  ChatGPT / Gemini / Claude Content Scripts  │
│         ↓                                   │
│    Service Worker (Message Bus)             │
│         ↓                                   │
│    MCP Client (HTTP/JSON-RPC)               │
└──────────────┬──────────────────────────────┘
               │
               │ HTTP POST: JSON-RPC 2.0
               │ http://localhost:3000/mcp/v1/rpc
               ↓
┌──────────────────────────────────────────────┐
│         MCP Server (Node.js + Express)       │
│                                              │
│  MCP Handler → Summarizer → Storage          │
│                              ↓               │
│                     JSON or SQLite           │
└──────────────────────────────────────────────┘

组件:

  • 扩展:将按钮注入LLM页面,提取/加载对话
  • MCP服务器:存储上下文并压缩它们(减少96-99%)
  • 存储:JSON(默认)或带全文搜索的SQLite

特性

✅ 手动上下文传输 -通过UI按钮加载上下文(无自动注入) ✅ 智能压缩 -基于规则的摘要(96-99%的令牌减少) ✅ MCP协议 -符合JSON-RPC 2.0标准 ✅ 双存储器 -JSON或SQLite与FTS5 ✅ 三位法学硕士 -ChatGPT、Gemini、Claude支持


快速开始

1.启动服务器

# Clone and navigate to server
git clone https://github.com/vansh-903/context-mcp.git
cd context-mcp/server

# Install and run
npm install
cp .env.example .env
npm run dev

服务器运行时间: http://localhost:3000

2.安装扩展

# Build extension
cd ../extension
npm install
npm run build

在Chrome中安装:

  1. 首选 chrome://extensions/
  2. 启用“开发人员模式”
  3. 点击“加载解包”
  4. 选择 extension/dist 文件夹

✅ 完成!


如何使用

保存对话

  1. 前往ChatGPT/Gemini/Claude
  2. 进行对话
  3. 点击 "💾 保存到MCP” 按钮(右下角)
  4. 查看成功通知

加载上下文

  1. 转到其他LLM(例如Gemini)
  2. 点击 "📥 加载上下文” 按钮(右下角)
  3. 从下拉列表中选择源LLM(例如“ChatGPT”)
  4. 上下文出现在文本区域
  5. 继续你的谈话!

配置

服务器(.env)

PORT=3000                    # Server port
HOST=localhost               # Server host
DATA_DIR=./data              # Storage location
STORAGE_TYPE=json            # 'json' or 'sqlite'

切换到SQLite

SQLite为您提供全文搜索功能:

STORAGE_TYPE=sqlite

服务器自动创建 data/mcp.db FTS5指数。


API

MCP工具(JSON-RPC 2.0)

添加上下文:

{
  "method": "tools/call",
  "params": {
    "name": "add_context",
    "arguments": {
      "content": "ChatGPT conversation:\n\n...",
      "source_llm": "chatgpt"
    }
  }
}

获取摘要:

{
  "method": "tools/call",
  "params": {
    "name": "get_smart_summary",
    "arguments": {
      "source_llm": "chatgpt",
      "target_llm": "gemini",
      "max_tokens": 2500
    }
  }
}

搜索(仅限SQLite):

{
  "method": "tools/call",
  "params": {
    "name": "search_context",
    "arguments": {
      "query": "OAuth implementation",
      "limit": 10
    }
  }
}

REST端点

  • GET /health -健康检查
  • GET / -服务器信息

延伸

这是MVP。以下是如何添加常见功能:

添加PostgreSQL存储

// server/src/storage/postgres-storage.ts
import { Pool } from 'pg';

export class PostgresStorage implements IStorage {
  private pool = new Pool({ connectionString: process.env.DATABASE_URL });

  async addContext(data) {
    const result = await this.pool.query(
      'INSERT INTO contexts (...) VALUES (...) RETURNING *',
      [...]
    );
    return result.rows[0];
  }
}

.env:

STORAGE_TYPE=postgres
DATABASE_URL=postgresql://user:pass@localhost:5432/mcp

添加AI摘要

// server/src/services/ai-summarizer.ts
import OpenAI from 'openai';

export class AISummarizer {
  async summarize(context: string, maxTokens: number) {
    const response = await this.openai.chat.completions.create({
      model: 'gpt-4-turbo',
      messages: [
        { role: 'system', content: 'Summarize preserving key info' },
        { role: 'user', content: context }
      ],
      max_tokens: maxTokens
    });
    return response.choices[0].message.content;
  }
}

.env:

SUMMARIZER_TYPE=ai
OPENAI_API_KEY=sk-...

添加云同步(Supabase)

// server/src/storage/supabase-storage.ts
import { createClient } from '@supabase/supabase-js';

export class SupabaseStorage implements IStorage {
  private supabase = createClient(
    process.env.SUPABASE_URL,
    process.env.SUPABASE_ANON_KEY
  );

  async addContext(data) {
    const { data: entry, error } = await this.supabase
      .from('contexts')
      .insert([data])
      .select()
      .single();
    return entry;
  }
}

.env:

STORAGE_TYPE=supabase
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_ANON_KEY=eyJh...

这 IStorage 界面使任何数据库都易于添加。看 实施.md 了解详情。


故障排除

重新加载后扩展不工作:

  • 关闭所有LLM选项卡
  • 在以下位置重新加载扩展 chrome://extensions/
  • 打开新标签页

“未找到文本区域”:

  • LLM更新了他们的页面结构
  • 检查控制台(F12)是否存在选择器错误
  • 更新选择器 extension/src/content/{llm}.ts

服务器无法启动(端口正在使用中):

# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F

# macOS/Linux
lsof -i :3000
kill -9 <PID>

上下文已损坏:

cp data/contexts.json data/contexts.json.backup
echo "[]" > data/contexts.json

项目结构

context-mcp/
├── extension/              # Chrome Extension
│   ├── src/
│   │   ├── content/       # Content scripts (ChatGPT, Gemini, Claude)
│   │   ├── background/    # Service worker
│   │   ├── api/           # MCP client
│   │   └── popup/         # Extension UI
│   └── dist/              # Built extension
│
└── server/                # MCP Server
    ├── src/
    │   ├── mcp/          # Protocol handlers
    │   ├── services/     # Summarizer
    │   └── storage/      # JSON/SQLite implementations
    └── data/             # Storage files

贡献

欢迎投稿!

  1. 分叉回购
  2. 创建要素分支: git checkout -b feature/name
  3. 承诺: git commit -m 'Add feature'
  4. 推: git push origin feature/name
  5. 打开拉取请求

思想:

  • 添加困惑/Poe支持
  • 实现对话线程
  • 添加语义搜索(向量嵌入)
  • 构建移动扩展
  • 添加导出/导入功能

许可证

MIT许可证-请参阅 许可证


链接

  • github: https://github.com/vansh-903/context-mcp
  • MCP规范: https://modelcontextprotocol.io
  • 实施细节: 实施.md

内置❤️ 通过 凡什·阿罗拉

星⭐ 如果你觉得这有用的话!