diff --git a/renderer/package-lock.json b/renderer/package-lock.json
index fbe73c5..575027b 100644
--- a/renderer/package-lock.json
+++ b/renderer/package-lock.json
@@ -9,7 +9,7 @@
"version": "0.1.0",
"dependencies": {
"core-js": "^3.8.3",
- "element-plus": "^2.9.7",
+ "element-plus": "^2.9.9",
"katex": "^0.16.21",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
@@ -6119,9 +6119,9 @@
"license": "ISC"
},
"node_modules/element-plus": {
- "version": "2.9.7",
- "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.7.tgz",
- "integrity": "sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==",
+ "version": "2.9.9",
+ "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.9.tgz",
+ "integrity": "sha512-gN553+xr7ETkhJhH26YG0fERmd2BSCcQKslbtR8fats0Mc0yCtZOXr00bmoPOt5xGzhuRN1TWc9+f1pCaiA0/Q==",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
diff --git a/renderer/package.json b/renderer/package.json
index adee342..a4f2514 100644
--- a/renderer/package.json
+++ b/renderer/package.json
@@ -9,7 +9,7 @@
},
"dependencies": {
"core-js": "^3.8.3",
- "element-plus": "^2.9.7",
+ "element-plus": "^2.9.9",
"katex": "^0.16.21",
"lodash": "^4.17.21",
"markdown-it": "^14.1.0",
diff --git a/renderer/public/images/openmcp.png b/renderer/public/images/openmcp.png
index 4a77fd6..43d8b1b 100644
Binary files a/renderer/public/images/openmcp.png and b/renderer/public/images/openmcp.png differ
diff --git a/renderer/public/mcp.css b/renderer/public/mcp.css
index 5a1f2be..10631bf 100644
--- a/renderer/public/mcp.css
+++ b/renderer/public/mcp.css
@@ -204,6 +204,13 @@ a {
background-position: center;
}
+.openmcp-image {
+ background-image: url('./images/openmcp.png');
+ background-size: contain;
+ background-repeat: no-repeat;
+ background-position: center;
+}
+
.el-button:hover {
color: var(--foreground) !important;
}
diff --git a/renderer/src/App.vue b/renderer/src/App.vue
index c4b7782..0f855ca 100644
--- a/renderer/src/App.vue
+++ b/renderer/src/App.vue
@@ -2,6 +2,8 @@
+
+
@@ -15,10 +17,12 @@ import MainPanel from '@/components/main-panel/index.vue';
import { setDefaultCss } from './hook/css';
import { greenLog, pinkLog } from './views/setting/util';
import { useMessageBridge } from './api/message-bridge';
-import { connectionArgs, connectionMethods, doConnect, loadEnvVar } from './views/connect/connection';
-import { loadSetting } from './hook/setting';
+import { doConnect, loadEnvVar } from './views/connect/connection';
+import { getTour, loadSetting } from './hook/setting';
import { loadPanels } from './hook/panel';
import { getPlatform } from './api/platform';
+import Tour from '@/components/guide/tour.vue';
+import { userHasReadGuide } from './components/guide/tour';
const bridge = useMessageBridge();
@@ -28,7 +32,6 @@ bridge.addCommandListener('hello', data => {
greenLog(`version: ${data.version}`);
}, { once: true });
-
const route = useRoute();
const router = useRouter();
@@ -63,6 +66,9 @@ onMounted(async () => {
// 设置环境变量
loadEnvVar();
+ // 获取引导状态
+ getTour();
+
// 尝试进行初始化连接
await doConnect({
namespace: platform,
diff --git a/renderer/src/components/guide/tour-title.vue b/renderer/src/components/guide/tour-title.vue
new file mode 100644
index 0000000..dc7cbd5
--- /dev/null
+++ b/renderer/src/components/guide/tour-title.vue
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/renderer/src/components/guide/tour.ts b/renderer/src/components/guide/tour.ts
new file mode 100644
index 0000000..16fe469
--- /dev/null
+++ b/renderer/src/components/guide/tour.ts
@@ -0,0 +1,3 @@
+import { ref } from "vue";
+
+export const userHasReadGuide = ref(true);
diff --git a/renderer/src/components/guide/tour.vue b/renderer/src/components/guide/tour.vue
new file mode 100644
index 0000000..ddc9c68
--- /dev/null
+++ b/renderer/src/components/guide/tour.vue
@@ -0,0 +1,285 @@
+
+
+
+
+ 介绍
+
+
+
+ 欢迎来到大模型与 mcp 的世界!
+
+
+
+ OpenMCP 将会助力你快速将任何奇思妙想开发成 mcp 服务器,通过接入大模型,让你的任何 idea 都可以快速落地。
+
+
+
+ 倘若阁下是第一次使用 OpenMCP,请务必走完我们准备好的引导。
+
+
+
+
+
+
+
+ 引导
+
+
+ 这里会显示当前调试的 mcp 服务器的名称(缩写)和连接状态。只有当连接状态为「已连接」,调试工作才能开始。
+
+
+
+
+ OpenMCP 通过服务器名称对项目所的所有服务进行统一管理,请避免在同一个项目中使用相同的名称。
+
+
+
+
+
+
+ 连接
+
+
+ 如果显示「未连接」或阁下想要更改连接参数或者连接方式,可以点击这里进入连接面板。
+
+
+
+
+
+ 连接
+
+
+ 阁下可以在左侧面板选择与您心爱的 mcp 服务器进行连接的方式,并填入对应的连接参数。
+
+
+
+ 对于 openmcp vscode/trae/cursor 插件端的用户,当您通过面板按钮进入 openmcp 的时候,默认就会选择 STDIO 作为连接方式,并根据你的上下文生成启动参数。
+ openmcp desktop 的用户可能就需要自己填写了。Anyway,这总比在你的好友电脑中植入 chrome 浏览器密码破解木马简单。
+
+
+
+
+
+ 连接
+
+
+ 连接响应会在这个地方打印出来,如果出现绿色背景的信息,代表连接成功。
+
+
+
+
+
+ 调试
+
+
+ 假设你已经成功连接了 mcp 服务器,那么点击调试按钮,你可以开始你的调试工作。
+
+
+
+
+
+ 调试
+
+
+ 我们目前提供了四种主要调试选项,「资源」、「提词」、「工具」分别和 MCP 协议中的 resources、prompts、tools 对应。
+
+ 而「交互测试」则允许你直接将写好的 mcp 服务器放入大模型中直接做全链路测试,从而更加获取更加真实的反馈和数据,进而改进的你的 mcp 服务器。
+
+
+
+ 基于我们在 agent 和 rl 方向的最佳实践,我们后续还会推出更多的调试和数据集聚合制作选项,请期待吧!
+
+
+
+
+
+ 设置
+
+
+ 如果要进行交互测试,请不要忘记先配置你常用的大模型 API
+
+
+
+
+
+
+ 设置
+
+
+ OpenMCP 目前支持所有支持 openai 接口规范的大模型,比如 deepseek,openai,kimi 等等。
+ 本地部署的 ollama 也正在支持。
+
+
+
+
+
+
+ 设置
+
+
+ 如果需要添加自定义的大模型服务,请点击这里。比如火山云,阿里云,硅基流动等。
+
+
+
+
+
+
+ 设置
+
+
+ 填写完成连接签名后,点击这里来测试 大模型服务是否可以访问。
+
+
+
+
+
+
+ 设置
+
+
+ 最后请不要忘记点击保存按钮,保存你的设置。
+
+
+
+
+
+
+ 🎉恭喜
+
+
+ 🎉恭喜,我的朋友,现在的你已经是半个 mcp 专家了,请充好一杯咖啡,慢慢享用快乐的开发时间吧!
+
+
+
+ 如果是插件用户,左侧面板的最下面「入门与帮助」有一些我们准备好的资料,希望能帮到阁下优雅地开发你的 mcp 服务器。
+ 让我们一起把越来越多的 api 和 sdk 接入 大模型吧。
+
+
+
+
+
+
+ 终章?
+
+
+
(base) ➜ .openmcp cat KEY
+直面恐惧,创造未来
+Face your fears, create the future
+恐怖に直面し、未来を創り出
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/renderer/src/components/sidebar/connected.vue b/renderer/src/components/sidebar/connected.vue
index 846cb13..03b8607 100644
--- a/renderer/src/components/sidebar/connected.vue
+++ b/renderer/src/components/sidebar/connected.vue
@@ -1,5 +1,6 @@
diff --git a/renderer/src/components/sidebar/sidebar-item-container.vue b/renderer/src/components/sidebar/sidebar-item-container.vue
index afc7d07..aa0f725 100644
--- a/renderer/src/components/sidebar/sidebar-item-container.vue
+++ b/renderer/src/components/sidebar/sidebar-item-container.vue
@@ -1,6 +1,8 @@