147 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="center" style="margin-bottom: 30px; border-radius: .5em; border: 1px solid var(--vp-c-brand-2); background-color: var(--vp-bg-brand-2); padding: 30px 10px;">
<img src="/images/icons/openmcp-sdk.svg" width="200px"/>
<h3>openmcp-sdk : openmcp 向けデプロイメントフレームワーク</h3>
<h4>実験室から本番環境まで、エージェントを瞬時に展開</h4>
</div>
# 導入 & インストール
## openmcp-sdk.jsとは
OpenMCP Clientは統合されたMCPデバッグソリューションを提供しますが、それだけでは物足りません。
作成したmcpを配布可能なアプリにしたり、サーバー上で関数サービスやマイクロサービスとして展開したい場合、OpenMCP Clientがフロントエンドに大規模モデルとの連携やツール使用ロジックを実装しているため、困難が生じます。
openmcp-sdk.jsはこの問題に対する軽量ソリューションです。Node.jsライブラリとして、完成したmcpをシームレスにエージェントとして展開可能にします。
## インストール
::: code-group
```bash [npm]
npm install openmcp-sdk
```
```bash [yarn]
yarn add openmcp-sdk
```
```bash [pnpm]
pnpm add openmcp-sdk
```
:::
:::warning
現在openmcp-sdkはesmモードのインポートのみサポートしています
:::
## 使用方法
ファイル名main.ts
```typescript
import { TaskLoop } from 'openmcp-sdk/task-loop';
import { TaskLoopAdapter } from 'openmcp-sdk/service';
async function main() {
// 通信とmcp接続を担当するアダプター作成
const adapter = new TaskLoopAdapter();
// mcpサーバー追加
adapter.addMcp({
connectionType: 'STDIO',
commandString: 'node index.js',
cwd: '~/projects/openmcp-tutorial/my-browser/dist'
});
// イベントループドライバー作成verbose値が高いほど詳細なログを出力
const taskLoop = new TaskLoop({ adapter, verbose: 1 });
// 全ツール取得
const tools = await taskLoop.getTools();
// 使用する大規模モデル設定
taskLoop.setLlmConfig({
id: 'deepseek',
baseUrl: 'https://api.deepseek.com/v1',
userToken: process.env['DEEPSEEK_API_TOKEN'],
userModel: 'deepseek-chat'
});
// コンテキスト作成と設定
const storage = {
messages: [],
settings: {
temperature: 0.7,
// 全てのツールを有効化
enableTools: tools,
// システムプロンプト
systemPrompt: 'you are a clever bot',
// 会話コンテキストのターン数
contextLength: 20
}
};
// 質問内容
const message = 'hello world';
// イベントループ開始
await taskLoop.start(storage, message);
// 最終回答を表示messages.at(-1)に格納)
const content = storage.messages.at(-1).content;
console.log('最終回答:', content);
}
main();
```
esmモードで実行するには、まずTypeScriptのesmランチャーをインストール
```bash
npm install tsx --save-dev
```
ファイルを実行:
```bash
npx tsx main.ts
```
出力例:
```
[6/5/2025, 8:16:15 PM] 🚀 [my-browser] 0.1.0 接続済み
[6/5/2025, 8:16:15 PM] タスクループが新規エポックを開始
[6/5/2025, 8:16:23 PM] タスクループがエポックを終了
[6/5/2025, 8:16:23 PM] 🤖 LLMがこれらのツールを呼び出し要求: k_navigate
[6/5/2025, 8:16:23 PM] 🔧 ツールk_navigateを呼び出し中
[6/5/2025, 8:16:34 PM] × ツール呼び出し失敗 McpError: MCP error -32603: net::ERR_CONNECTION_RESET at https://towardsdatascience.com/tag/editors-pick/
[6/5/2025, 8:16:34 PM] タスクループが新規エポックを開始
[6/5/2025, 8:16:40 PM] タスクループがエポックを終了
[6/5/2025, 8:16:40 PM] 🤖 LLMがこれらのツールを呼び出し要求: k_navigate
[6/5/2025, 8:16:40 PM] 🔧 ツールk_navigateを呼び出し中
[6/5/2025, 8:16:44 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:16:44 PM] タスクループが新規エポックを開始
[6/5/2025, 8:16:57 PM] タスクループがエポックを終了
[6/5/2025, 8:16:57 PM] 🤖 LLMがこれらのツールを呼び出し要求: k_evaluate
[6/5/2025, 8:16:57 PM] 🔧 ツールk_evaluateを呼び出し中
[6/5/2025, 8:16:57 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:16:57 PM] タスクループが新規エポックを開始
[6/5/2025, 8:17:06 PM] タスクループがエポックを終了
[6/5/2025, 8:17:06 PM] 🤖 LLMがこれらのツールを呼び出し要求: k_navigate, k_navigate
[6/5/2025, 8:17:06 PM] 🔧 ツールk_navigateを呼び出し中
[6/5/2025, 8:17:09 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:17:09 PM] 🔧 ツールk_navigateを呼び出し中
[6/5/2025, 8:17:12 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:17:12 PM] タスクループが新規エポックを開始
[6/5/2025, 8:17:19 PM] タスクループがエポックを終了
[6/5/2025, 8:17:19 PM] 🤖 LLMがこれらのツールを呼び出し要求: k_evaluate, k_evaluate
[6/5/2025, 8:17:19 PM] 🔧 ツールk_evaluateを呼び出し中
[6/5/2025, 8:17:19 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:17:19 PM] 🔧 ツールk_evaluateを呼び出し中
[6/5/2025, 8:17:19 PM] ✓ ツール呼び出し成功
[6/5/2025, 8:17:19 PM] タスクループが新規エポックを開始
[6/5/2025, 8:17:45 PM] タスクループがエポックを終了
"以下は人気記事の整理済み情報(簡体中文訳):\n\n---\n\n### K1 タイトル\n**『データドリフトは真の問題ではない:監視戦略こそが鍵』**\n\n**概要**\n機械学習分野でデータドリフトはモデル性能低下の原因とされますが、本記事はこの常識を覆します。監視戦略の不備こそが核心的問題だと指摘。eコマース推薦システムや金融リスクモデルなどの実例を通じ、従来の統計的監視の限界を明らかにし、3層監視フレームワークを提案:\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追加調整やコンテンツ補充が必要な場合はお知らせください"