角色风格响应转换服务

ShapeShifter-MCP是一个模型上下文协议服务器,能够将Perplexity API的响应转换为选定角色的风格,支持通过标准化API与多种AI角色互动。

  • by patrykmurzyn
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 patrykmurzyn/shapeshifter-mcp

使用说明

变形器MCP

ShapeShifter-MCP是一个MCP(模型上下文协议)服务器,它将困惑API的响应转换为所选角色的风格。它允许您通过标准化的API与各种人工智能角色进行交互。

特性

  • 使用困惑AI的基于字符的响应
  • 支持多个虚构角色(里克、尤达、夏洛克、苏格拉底)
  • 具有特定于模型的超时的多个困惑模型
  • MCP兼容接口,便于与MCP客户端集成
  • 可定制的字符提示
  • 速率限制和重试处理
  • 在单独的配置文件中轻松配置

先决条件

  • Node.js(>=14)
  • npm或纱线
  • 困惑API键

环境变量

创建一个 .env 包含以下变量的文件:

PERPLEXITY_API_KEY=your_api_key_here
PORT=3000                     # Optional (default: 3000)
PERPLEXITY_MODEL=sonar        # Optional (default: sonar)
PERPLEXITY_TIMEOUT_MS=30000   # Optional (default: model-specific)
PERPLEXITY_MAX_RETRIES=3      # Optional (default: 3)

可用型号

型号 默认超时 功能
声纳深度研究 30分钟 相关问题,结构化输出
声纳推理专业版 5分钟 图像、相关问题、搜索域过滤器、结构化输出
声纳推理 5分钟 图像、相关问题、搜索域过滤器、结构化输出
sonar pro 5分钟 图像、相关问题、搜索域过滤器、结构化输出
声纳 5分钟 图像、相关问题、搜索域过滤器、结构化输出
r1-1776 10分钟 结构化输出

设置

  1. 安装依赖项:

    npm install
    # or with yarn
    yarn install
    
  2. 复制示例环境文件并设置您的困惑API密钥:

    cp .env.example .env
    # Edit the .env file with your API key
    
  3. 构建项目:

    npm run build
    # or with yarn
    yarn build
    
  4. 以开发模式启动:

    npm run dev
    # or with yarn
    yarn dev
    

API终点

POST/mcp

接受MCP格式请求的主MCP端点。

MCP请求示例:

{
  "jsonrpc": "2.0",
  "method": "mcp.prompt",
  "params": {
    "name": "ask",
    "params": {
      "question": "What is the meaning of life?",
      "character": "rick"
    }
  },
  "id": "1"
}

模型选择工具调用示例:

{
  "jsonrpc": "2.0",
  "method": "mcp.tool",
  "params": {
    "name": "ask-perplexity",
    "params": {
      "question": "What is quantum physics?",
      "character": "yoda",
      "model": "sonar-deep-research"
    }
  },
  "id": "2"
}

可用字符

  • rick里克·桑切斯来自《瑞克与莫蒂》
  • yoda:《星球大战》中的尤达
  • sherlock:夏洛克·福尔摩斯
  • socrates希腊哲学家苏格拉底

配置

该应用程序使用单独的配置文件以便于维护:

  • 角色:在中添加新字符 src/config/characterConfig.ts
  • 模型:在中配置困惑模型 src/config/modelConfig.ts
  • 服务器:常规服务器设置位于 src/config.ts

发展

添加新角色

  1. 在中创建系统提示文件 src/prompts/[character]-system-prompt.ts
  2. 将角色添加到 src/config/characterConfig.ts:
// Example adding a new character
export const CHARACTERS: Record<CharacterKey, CharacterConfig> = {
  // Existing characters...

  // New character
  batman: {
    name: "Batman",
    promptFn: getBatmanSystemPrompt,
    description: "Dark knight detective from Gotham City",
  },
};
  1. 更新 CharacterKey 使用新字符名称键入

添加新模型

要添加新的困惑模型,请编辑 src/config/modelConfig.ts:

// Example adding a new model
export const PERPLEXITY_MODELS = {
  // Existing models...

  // New model
  "new-model-name": {
    timeoutMs: 15 * 60 * 1000, // 15 minutes
    capabilities: "Some capabilities",
    description: "Description of the new model",
  },
};

许可证

麻省理工学院