最近最火の AI 技術は MCP でしょう。MCP の概念をまだ理解していない方は、Model Context Protocol 文書を確認することをお勧めします。そこでは MCP の概念と規範が詳しく説明されています。この記事では公式の TypeScript SDK を使用し、DeepSeek にリクエストを送信し、サーバーからクライアントまで簡単に Sqlite MCP を実装し、MCP 開発を順調に開始します。
プロジェクトの初期化#
本プロジェクトのすべてのリソースはこの git リポジトリTypeScript-MCP-Sqlite-Quickstartにあります。使用する sqlite ファイルが含まれており、直接プルすることも、手順に従って初期化し、自分でデータベースを作成することもできます。
プロジェクトの作成
package.json と tsconfig.json の設定 package.json
tsconfig.json
MCP サーバーの作成#
MCP サーバーには 2 つの起動方法があります。1 つは Stdio、もう 1 つは SSE です。このセクションでは両方を紹介します。まずは Stdio 方式を紹介します。
Stdio トランスポート#
./server/sqlite_stdio.ts ファイルに追加
build を使用して ts ファイルをコンパイルします。inspectorは公式が提供する MCP サーバーの検査ツールで、inspector を使用してサーバーサービスが正常かどうかを確認します。
SSE トランスポート#
./server/sqlite_sse.ts に追加
サーバーの作成が完了したら、同様にコンパイルを行い、express サービスを実行し、Inspector を使用して機能が正常かどうかをテストします。
Inspector を開き、トランスポートタイプを sse に設定し、URL をhttp://localhost:3001/sseに設定して接続をクリックし、ツールをテストします。
#
MCP クライアントの作成#
MCP クライアントも同様に 2 つのトランスポートをサポートしています。1 つは stdio、もう 1 つは sse で、サーバーと対応しています。index.ts に追加します。
MCP クライアントの作成が完了したら、ts をコンパイルし、MCP クライアントを実行します。利用可能なツールリストが表示されれば、クライアントは正常に動作しています。
#
Deepseek にリクエストを送信して MCP を呼び出す#
deepseek は openai sdk を使用してリクエストを送信できます。リクエストを送信する際に、パラメータに tools を含めることができます。openai の Tools パラメータの定義と anthropic の tools パラメータの定義は異なるため、取得した tools を必要に応じて変換します。 変換関数
これで、tools 情報を正常に取得しました。Deepseek にリクエストを送信する際に tools パラメータを含め、response の finish_reason を監視します。もし tools_calls であれば、response の tool_calls 内の name と args を取得します。その後、MCP クライアントの callTool メソッドを呼び出し、取得した結果を Deepseek に再送信します。これで Deepseek はデータベース内の情報を正常に取得できます。
これで Deepseek が MCP を通じてデータベース情報を取得することができました。以下のコマンドで呼び出し状況を確認できます。
次のステップ#
これで最も簡単な MCP プロセスが完了しました。改善できる点がたくさんあります。
-
このプロセスは最も簡単な SQL クエリ機能を提供します。サーバーの説明も粗いものであり、毎回大モデルがツールを正常に呼び出すわけではありません。
-
現在のリクエスト方式は非ストリーミングであり、ストリーミングに改善できます。
-
現在は一度のツール呼び出ししかサポートしておらず、複数回の呼び出しを実現できません。MCP の能力をより良く発揮するために、複数回の呼び出しを許可する必要があります。
-
現在、1 つのクライアントは 1 つのサーバーにしか接続できないようで、複数のサービスがある場合、クライアントを効率的に管理する方法も問題です。