Skip to content

Vue 集成指南

本指南将引导您如何将 McpSynergy Client 集成到一个现有的 Vue 3 + Vite 项目中。

先决条件

  • Node.js >= 18
  • pnpm (推荐)
  • 一个可用的 Vue 3 + Vite 项目

步骤 1: 安装依赖

首先,将 McpSynergy 的 Vue 核心包和专用的 Vite 插件添加到您的项目中。

bash
pnpm add @mcp-synergy/vue @mcp-synergy/client-core
pnpm add -D @mcp-synergy/vite-plugin-comp-vue

步骤 2: 配置 Vite 插件

在您的 vite.config.ts 文件中,导入并使用 MCPCompVue 插件。

ts
// vite.config.ts
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { MCPCompVue } from "@mcp-synergy/vite-plugin-comp-vue"; // 1. 导入Vue插件

export default defineConfig({
  plugins: [
    vue(),
    MCPCompVue(), // 2. 添加插件
  ],
});

了解更多插件配置和 React 的用法,请查阅 Vite 插件 文档。

步骤 3: 创建您的第一个 MCP 组件

在您的组件目录(例如 src/components)下,创建一个新的 .vue 文件。我们将以一个 UserProfile 卡片为例。

src/components/UserProfile.vue:

vue
<script setup lang="ts">
import { defineProps } from "vue";

// 1. 定义组件的 Props 接口
interface UserProfileProps {
  user: {
    name: string;
    title: string;
    avatar: string;
  };
}

// 2. 使用 defineProps 声明 props
const props = defineProps<UserProfileProps>();

// 3. 使用 defineMCPComponent 宏“注册”该组件
defineMCPComponent({
  name: "UserProfile",
  description: "显示用户信息的卡片。",
  // 从 UserProfileProps 中挑选 'user' 属性,将其 props 的信息加入 schema
  pickProps: ["user"],
  // 定义 AI 调用此工具所需的输入参数
  inputSchema: {
    required: ["name"],
    properties: {
      name: {
        type: "string",
        description: "需要查询的用户名",
      },
    },
  },
});
</script>

<template>
  <div
    v-if="props.user"
    style="border: 1px solid #ccc; padding: 16px; border-radius: 8px;"
  >
    <img
      :src="props.user.avatar"
      :alt="props.user.name"
      style="width: 80px; height: 80px; border-radius: 50%;"
    />
    <h2>{{ props.user.name }}</h2>
    <p>{{ props.user.title }}</p>
  </div>
  <div v-else>用户不存在</div>
</template>

步骤 4: 在您的应用中使用 ChatComponent

现在,在您的聊天界面中,使用 <ChatComponent /> 来处理来自服务器的响应。

vue
<!-- src/views/ChatView.vue (或您的聊天界面组件) -->
<script setup lang="ts">
import { ref, onMounted } from "vue";
import { ChatComponent } from "@mcp-synergy/vue";

// 模拟从服务器获取的响应
const fakeServerResponse = {
  code: 0,
  data: {
    content: "这是用户的个人资料。",
    meta: {
      serverName: "mcp-component-render",
      toolName: "UserProfile", // AI决定调用这个工具
      componentProps: {
        // AI准备好的props
        user: {
          name: "Jay",
          title: "全栈工程师",
          avatar: "https://api.dicebear.com/7.x/miniavs/svg?seed=2",
        },
      },
    },
  },
};

const response = ref<any>(null);

// 模拟API请求
onMounted(() => {
  setTimeout(() => {
    response.value = fakeServerResponse;
  }, 1000);
});
</script>

<template>
  <div>
    <h1>我的 Vue 聊天应用</h1>
    <div v-if="!response">正在等待AI响应...</div>
    <div v-else>
      <ChatComponent
        v-if="
          response.data.meta?.toolName && response.data.meta.toolName !== 'null'
        "
        :name="response.data.meta.toolName"
        :props="response.data.meta.componentProps"
      >
        <template #fallback>
          <div>组件加载中...</div>
        </template>
      </ChatComponent>
      <div v-else>
        {{ response.data.content }}
      </div>
    </div>
  </div>
</template>

步骤 5: 启动项目

运行您的开发服务器:

bash
pnpm dev

现在您应该能看到 UserProfile 组件被成功渲染出来了。

您已经成功集成了 McpSynergy Client 的 Vue 版本!接下来,您可以查阅 API 参考API 协议 来了解更多细节。

基于 ISC 协议发布