TypeScript MCP with Filesystem Server and Ollama Integration について
このTypeScriptサンプルは、Ollamaのチャットを設定可能なMCPサーバーに接続し、対話型コマンドラインからモデルがツールを使えるようにします。LLMを使わずにファイルシステムやWeb調査ツールを試せるデモモードも備えています。
主な機能
- 01Ollamaの対話型チャット画面
- 02複数のMCPサーバーを設定
- 03uvxおよびnpxのサーバーに対応
- 04ファイルシステムとWeb調査ツール
- 05LLM不要のデモモード
活用シーン
- 01MCPツールを呼び出せるOllamaモデルとのチャット
- 02LLMなしでファイルシステムやWeb調査ツールを試す
- 03Node.jsまたはPythonのMCPサーバーを設定
MCP 対応
このプロジェクトはMCPクライアントとして動作し、mcp-config.jsonから設定を読み込んで、uvxやnpxで起動するサーバーを含む指定先に接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
14掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | |
| tail | number | いいえ | 指定すると、ファイルの末尾から N 行のみを返します |
| head | number | いいえ | 指定すると、ファイルの先頭から N 行のみを返します |
詳細
TypeScript MCP エージェントと Ollama の統合
このプロジェクトは、Model Context Protocol (MCP) サーバーと Ollama の統合を実演し、AI モデルが統一されたインターフェースを通じてさまざまなツールと連携できるようにします。
✨ 機能
- 複数の MCP サーバーをサポート(uvx と npx の両方でテスト済み)
- ファイルシステム操作と Web リサーチのサポートを標準搭載
claude_desktop_config.jsonと同様のmcp-config.jsonによる簡単な設定- あらゆるツールをサポートすることを目指した、Ollama 統合による対話型チャットインターフェース
- LLM なしで Web ツールとファイルシステムツールをテストできるスタンドアロンデモモード
🚀 はじめに
-
前提条件:
-
Node.js(バージョン 18 以上)
-
Ollama がインストールされ、実行されていること
-
使用したい MCP ツールをグローバルにインストールします:
# ファイルシステム操作用 npm install -g @modelcontextprotocol/server-filesystem # Web リサーチ用 npm install -g @mzxrai/mcp-webresearch
-
-
クローンとインストール:
git clone https://github.com/ausboss/mcp-ollama-agent.git cd mcp-ollama-agent npm install -
mcp-config.jsonでツールと、ツールをサポートする Ollama モデルを設定します:{ "mcpServers": { "filesystem": { "command": "npx", "args": ["@modelcontextprotocol/server-filesystem", "./"] }, "webresearch": { "command": "npx", "args": ["-y", "@mzxrai/mcp-webresearch"] } }, "ollama": { "host": "http://localhost:11434", "model": "qwen2.5:latest" } } -
LLM なしでファイルシステムツールと webresearch ツールをテストするためにデモを実行します:
npx tsx ./src/demo.ts -
または、Ollama とのチャットインターフェースを起動します:
npm start
⚙️ 設定
- MCP サーバー:
mcpServersセクションに MCP 互換のサーバーを追加します - Ollama: ホストとモデルを設定します(関数呼び出しをサポートしている必要があります)
- Python(uvx)と Node.js(npx)の両方の MCP サーバーをサポートします
💡 使用例
この例では、このモデル qwen2.5:latest を使用しました
Chat started. Type "exit" to end the conversation.
You: can you use your list directory tool to see whats in test-directory then use your read file tool to read it to me?
Model is using tools to help answer...
Using tool: list_directory
With arguments: { path: 'test-directory' }
Tool result: [ { type: 'text', text: '[FILE] test.txt' } ]
Assistant:
Model is using tools to help answer...
Using tool: read_file
With arguments: { path: 'test-directory/test.txt' }
Tool result: [ { type: 'text', text: 'rosebud' } ]
Assistant: The content of the file `test.txt` in the `test-directory` is:
rosebud
You: thanks
Assistant: You're welcome! If you have any other requests or need further assistance, feel free to ask.
システムプロンプト
一部のローカルモデルでは、ツールの選択に支援が必要な場合があります。ツールの使用を改善するには、ChatManager.ts のシステムプロンプトをカスタマイズしてください。
🤝 コントリビューション
コントリビューションを歓迎します!お気軽に issue やプルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。