会话管理服务

用于管理ThinkDrop AI中会话和消息的MCP服务,支持会话创建、消息添加、语义搜索等功能。

  • by lukaizhi5559
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 lukaizhi5559/thinkdrop-conversation

使用说明

对话服务

MCP服务,用于管理ThinkDrop AI中的对话会话和消息。

概述

  • 端口: 3004
  • 数据库:本地DuckDB(./data/conversation.duckdb)
  • 认证:API密钥通过 X-API-Key 标题(set CONVERSATION_API_KEY 在 .env)
  • 表格: conversation_sessions, conversation_messages
  • 外部部门:Phi4服务(http://127.0.0.1:3003)用于嵌入(可选,优雅地失败)

行动

会话管理

  • session.create -创建新的对话会话
  • session.list -列出所有会话
  • session.get -获取会话详细信息
  • session.update -更新会话(标题、上下文数据)
  • session.delete -删除会话及其消息
  • session.getActive -获取当前活动的会话
  • session.switch -切换活动会话

消息管理

  • message.add -向会话添加消息(通过Phi4自动生成嵌入)
  • message.list -列出会话中的消息
  • message.get -获取特定消息
  • message.update -更新消息
  • message.delete -删除邮件
  • message.search -跨会话消息的语义搜索

设置

cd mcp-services/conversation-service
yarn install
cp .env.example .env   # Edit API keys as needed

跑步

# Development (auto-reload)
yarn dev

# Production
yarn start

卷曲测试命令(黑盒测试)

首先设置API密钥变量:

API_KEY="0ShtCz7JyDnpGdWcGP2br4Jhl4eRA3Kg"
BASE="http://localhost:3004"

健康与信息(无身份验证)

curl $BASE/health
curl $BASE/info

创建会话

curl -s -X POST $BASE/session.create \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "session.create",
    "requestId": "test_1",
    "payload": { "title": "Test Session" }
  }' | jq .

列出会话

curl -s -X POST $BASE/session.list \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "session.list",
    "requestId": "test_2",
    "payload": { "limit": 10 }
  }' | jq .

获取会话(替换session_ID)

curl -s -X POST $BASE/session.get \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "session.get",
    "requestId": "test_3",
    "payload": { "sessionId": "SESSION_ID" }
  }' | jq .

添加消息(替换SESSION_ID)

curl -s -X POST $BASE/message.add \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "message.add",
    "requestId": "test_4",
    "payload": {
      "sessionId": "SESSION_ID",
      "text": "Hello, this is a test message",
      "sender": "user"
    }
  }' | jq .

列出消息(替换SESSION_ID)

curl -s -X POST $BASE/message.list \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "message.list",
    "requestId": "test_5",
    "payload": { "sessionId": "SESSION_ID", "limit": 20 }
  }' | jq .

语义搜索(替换SESSION_ID,需要运行Phi4)

curl -s -X POST $BASE/message.search \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "message.search",
    "requestId": "test_6",
    "payload": {
      "sessionId": "SESSION_ID",
      "query": "test message",
      "limit": 5
    }
  }' | jq .

删除会话(替换session_ID)

curl -s -X POST $BASE/session.delete \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "version": "mcp.v1",
    "service": "conversation",
    "action": "session.delete",
    "requestId": "test_7",
    "payload": { "sessionId": "SESSION_ID" }
  }' | jq .