openmcp-sdk 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -33
- package/package.json +4 -3
- package/renderer/assets/{index-DfIBlLbZ.js → index-Cv4IO6Jg.js} +75 -71
- package/renderer/index.html +1 -1
- package/service/llm/llm.service.d.ts.map +1 -1
- package/service/llm/llm.service.js +0 -11
- package/service/mcp/connect.service.d.ts.map +1 -1
- package/task-loop.d.ts +1 -1
- package/task-loop.js +121 -14
- package/tools.mjs +10 -0
package/README.md
CHANGED
@@ -33,20 +33,14 @@ async function main() {
|
|
33
33
|
const adapter = new TaskLoopAdapter();
|
34
34
|
|
35
35
|
// 添加 mcp 服务器
|
36
|
-
adapter.addMcp({
|
37
|
-
connectionType: 'STDIO',
|
38
|
-
commandString: 'uv run mcp run main.py',
|
39
|
-
cwd: '~/projects/openmcp-tutorial/crawl4ai-mcp'
|
40
|
-
});
|
41
|
-
|
42
36
|
adapter.addMcp({
|
43
37
|
connectionType: 'STDIO',
|
44
38
|
commandString: 'node index.js',
|
45
39
|
cwd: '~/projects/openmcp-tutorial/my-browser/dist'
|
46
40
|
});
|
47
41
|
|
48
|
-
//
|
49
|
-
const taskLoop = new TaskLoop({ adapter });
|
42
|
+
// 创建事件循环驱动器, verbose 数值越高,输出的日志越详细
|
43
|
+
const taskLoop = new TaskLoop({ adapter, verbose: 1 });
|
50
44
|
|
51
45
|
// 获取所有工具
|
52
46
|
const tools = await taskLoop.getTools();
|
@@ -76,31 +70,6 @@ async function main() {
|
|
76
70
|
// 本次发出的问题
|
77
71
|
const message = 'hello world';
|
78
72
|
|
79
|
-
// 事件循环结束的句柄
|
80
|
-
taskLoop.registerOnDone(() => {
|
81
|
-
console.log('taskLoop done');
|
82
|
-
});
|
83
|
-
|
84
|
-
// 事件循环每一次 epoch 开始的句柄
|
85
|
-
taskLoop.registerOnError((error) => {
|
86
|
-
console.log('taskLoop error', error);
|
87
|
-
});
|
88
|
-
|
89
|
-
// 事件循环出现 error 时的句柄(出现 error 不一定会停止事件循环)
|
90
|
-
taskLoop.registerOnEpoch(() => {
|
91
|
-
console.log('taskLoop epoch');
|
92
|
-
});
|
93
|
-
|
94
|
-
// 每一次工具调用前
|
95
|
-
taskLoop.registerOnToolCall((toolCall) => {
|
96
|
-
return toolCall;
|
97
|
-
});
|
98
|
-
|
99
|
-
// 每一次工具调用完后的结果
|
100
|
-
taskLoop.registerOnToolCalled((result) => {
|
101
|
-
return result;
|
102
|
-
});
|
103
|
-
|
104
73
|
// 开启事件循环
|
105
74
|
await taskLoop.start(storage, message);
|
106
75
|
|
@@ -112,6 +81,44 @@ async function main() {
|
|
112
81
|
main();
|
113
82
|
```
|
114
83
|
|
84
|
+
下面是可能的输出:
|
85
|
+
|
86
|
+
```
|
87
|
+
[6/5/2025, 8:16:15 PM] 🚀 [my-browser] 0.1.0 connected
|
88
|
+
[6/5/2025, 8:16:15 PM] task loop enters a new epoch
|
89
|
+
[6/5/2025, 8:16:23 PM] task loop finish a epoch
|
90
|
+
[6/5/2025, 8:16:23 PM] 🤖 llm wants to call these tools k_navigate
|
91
|
+
[6/5/2025, 8:16:23 PM] 🔧 calling tool k_navigate
|
92
|
+
[6/5/2025, 8:16:34 PM] × fail to call tools McpError: MCP error -32603: net::ERR_CONNECTION_RESET at https://towardsdatascience.com/tag/editors-pick/
|
93
|
+
[6/5/2025, 8:16:34 PM] task loop enters a new epoch
|
94
|
+
[6/5/2025, 8:16:40 PM] task loop finish a epoch
|
95
|
+
[6/5/2025, 8:16:40 PM] 🤖 llm wants to call these tools k_navigate
|
96
|
+
[6/5/2025, 8:16:40 PM] 🔧 calling tool k_navigate
|
97
|
+
[6/5/2025, 8:16:44 PM] ✓ call tools okey dockey success
|
98
|
+
[6/5/2025, 8:16:44 PM] task loop enters a new epoch
|
99
|
+
[6/5/2025, 8:16:57 PM] task loop finish a epoch
|
100
|
+
[6/5/2025, 8:16:57 PM] 🤖 llm wants to call these tools k_evaluate
|
101
|
+
[6/5/2025, 8:16:57 PM] 🔧 calling tool k_evaluate
|
102
|
+
[6/5/2025, 8:16:57 PM] ✓ call tools okey dockey success
|
103
|
+
[6/5/2025, 8:16:57 PM] task loop enters a new epoch
|
104
|
+
[6/5/2025, 8:17:06 PM] task loop finish a epoch
|
105
|
+
[6/5/2025, 8:17:06 PM] 🤖 llm wants to call these tools k_navigate, k_navigate
|
106
|
+
[6/5/2025, 8:17:06 PM] 🔧 calling tool k_navigate
|
107
|
+
[6/5/2025, 8:17:09 PM] ✓ call tools okey dockey success
|
108
|
+
[6/5/2025, 8:17:09 PM] 🔧 calling tool k_navigate
|
109
|
+
[6/5/2025, 8:17:12 PM] ✓ call tools okey dockey success
|
110
|
+
[6/5/2025, 8:17:12 PM] task loop enters a new epoch
|
111
|
+
[6/5/2025, 8:17:19 PM] task loop finish a epoch
|
112
|
+
[6/5/2025, 8:17:19 PM] 🤖 llm wants to call these tools k_evaluate, k_evaluate
|
113
|
+
[6/5/2025, 8:17:19 PM] 🔧 calling tool k_evaluate
|
114
|
+
[6/5/2025, 8:17:19 PM] ✓ call tools okey dockey success
|
115
|
+
[6/5/2025, 8:17:19 PM] 🔧 calling tool k_evaluate
|
116
|
+
[6/5/2025, 8:17:19 PM] ✓ call tools okey dockey success
|
117
|
+
[6/5/2025, 8:17:19 PM] task loop enters a new epoch
|
118
|
+
[6/5/2025, 8:17:45 PM] task loop finish a epoch
|
119
|
+
"以下是整理好的热门文章信息,并已翻译为简体中文:\n\n---\n\n### K1 标题 \n**《数据漂移并非真正问题:你的监控策略才是》** \n\n**简介** \n在机器学习领域,数据漂移常被视为模型性能下降的罪魁祸首,但本文作者提出了一种颠覆性的观点:数据漂移只是一个信号,真正的核心问题在于监控策略的不足。文章通过实际案例(如电商推荐系统和金融风控模型)揭示了传统统计监控的局限性,并提出了一个三层监控框架: \n1. **统计监控**:快速检测数据分布变化,但仅作为初步信号。 \n2. **上下文监控**:结合业务逻辑,判断漂移是否对关键指标产生影响。 \n3. **行为监控**:追踪模型预测的实际效果,避免“无声漂移”。 \n\n亮点在于作者强调了监控系统需要与业务目标紧密结合,而非单纯依赖技术指标。 \n\n**原文链接** \n[点击阅读原文](https://towardsdatascience.com/data-drift-is-not-the-actual-problem-your-monitoring-strategy-is/) \n\n---\n\n### K2 标题 \n**《从 Jupyter 到程序员的快速入门指南》** \n\n**简介** \n本文为数据科学家和初学者提供了一条从 Jupyter Notebook 过渡到专业编程的清晰路径。作者通过实际代码示例和工具推荐(如 VS Code、Git 和 Docker),帮助读者摆脱 Notebook 的局限性,提升代码的可维护性和可扩展性。 \n\n亮点包括: \n- 如何将 Notebook 代码模块化为可复用的 Python 脚本。 \n- 使用版本控制和容器化技术优化开发流程。 \n- 实战案例展示如何将实验性代码转化为生产级应用。 \n\n**原文链接** \n[点击阅读原文](https://towardsdatascience.com/the-journey-from-jupyter-to-programmer-a-quick-start-guide/) \n\n---\n\n如果需要进一步优化或补充其他内容,请随时告诉我!"
|
120
|
+
```
|
121
|
+
|
115
122
|
更多使用请看官方文档:https://kirigaya.cn/openmcp/sdk-tutorial/
|
116
123
|
|
117
124
|
star 我们的项目:https://github.com/LSTM-Kirigaya/openmcp-client
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "openmcp-sdk",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.7",
|
4
4
|
"description": "openmcp-sdk",
|
5
5
|
"scripts": {
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1"
|
@@ -24,12 +24,13 @@
|
|
24
24
|
},
|
25
25
|
"homepage": "https://document.kirigaya.cn/blogs/openmcp/main.html",
|
26
26
|
"dependencies": {
|
27
|
-
"@modelcontextprotocol/sdk": "^1.
|
27
|
+
"@modelcontextprotocol/sdk": "^1.12.1",
|
28
28
|
"@seald-io/nedb": "^4.1.1",
|
29
29
|
"@vue/server-renderer": "^3.5.13",
|
30
30
|
"axios": "^1.7.7",
|
31
|
+
"chalk": "^5.4.1",
|
31
32
|
"bson": "^6.8.0",
|
32
|
-
"openai": "^
|
33
|
+
"openai": "^5.0.1",
|
33
34
|
"pako": "^2.1.0",
|
34
35
|
"tesseract.js": "^6.0.1",
|
35
36
|
"uuid": "^11.1.0",
|