mcpField
M
Model Context Protocol (MCP) Implementation in Go

Model Context Protocol (MCP) Implementation in Go

ローカル
github.com/vishymakthal開発ツール083 週間前に更新

Model Context Protocol (MCP) Implementation in Go について

MCPのGo実装で、MCPサーバーと通信するアプリ向けにスキーマ定義とクライアントを提供します。サンプルクライアントと一般的な操作を支援する機能も含まれています。

主な機能

  1. 01型安全なGo用MCPスキーマ
  2. 02JSON-RPCメッセージ構造
  3. 03クライアントの初期化とリクエスト
  4. 04一般的なMCP操作のヘルパー
  5. 05サンプルクライアント

活用シーン

  1. 01MCPを利用するGoアプリの構築
  2. 02GoクライアントからMCPサーバーへの接続

MCP 対応

MCPスキーマ型とGoクライアントを実装し、MCPサーバーへの接続初期化、リクエスト送信、レスポンス処理を行います。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Go による Model Context Protocol(MCP)の実装

このリポジトリには、LLM を活用するアプリケーションでクライアントとサーバーがやり取りするための JSON-RPC ベースのプロトコルである Model Context Protocol(MCP) の Go 実装が含まれています。

目次

  • mcp/schema.go:TypeScript のスキーマを変換した、MCP スキーマ用の Go 構造体定義
  • mcp/client.go:MCP サーバーとやり取りするためのクライアント実装
  • examples/mcp_client_example.go:クライアントの使用方法を示す簡単な例

MCP の概要

Model Context Protocol(MCP)を使うと、モデルの「ホスト」(LLM クライアントや、LLM と連携するシステムなど)と、「サーバー」(LLM の機能を強化するためにコンテキスト情報、ツール、プロンプト、リソースを提供するシステム)が通信できます。

MCP の主な機能は次のとおりです。

  • リソース:ホストが読み取れるファイル、ドキュメント、その他のデータ
  • ツール:モデルに代わってホストが呼び出せる関数
  • プロンプト:ホストが使用できるテンプレートや事前定義済みのメッセージシーケンス
  • ルート:サーバーが操作できるファイルシステムまたはデータのルート

はじめに

前提条件
  • Go 1.18 以降
サンプルの実行
# Set the MCP server URL (optional, defaults to http://localhost:3000/jsonrpc)
export MCP_SERVER_URL=http://your-mcp-server/jsonrpc

# Run the example
go run examples/mcp_client_example.go

MCP クライアントの使用

import (
    "fmt"
    
    "path/to/mcp"
)

func main() {
    // Create a new client
    client := mcp.NewClient("http://your-mcp-server/jsonrpc")
    
    // Initialize the client
    clientInfo := mcp.Implementation{
        Name:    "My MCP Client",
        Version: "1.0.0",
    }
    
    capabilities := mcp.ClientCapabilities{
        // Specify the capabilities your client supports
    }
    
    err := client.Initialize(clientInfo, capabilities)
    if err != nil {
        // Handle error
    }
    
    // Now you can use various client methods:
    
    // List resources
    resources, err := client.ListResources("")
    
    // Read a resource
    resource, err := client.ReadResource("resource-uri")
    
    // Call a tool
    result, err := client.CallTool("tool-name", map[string]interface{}{
        "argument1": "value1",
        "argument2": 123,
    })
    
    // Get a prompt
    prompt, err := client.GetPrompt("prompt-name", map[string]string{
        "argName": "argValue",
    })
}

実装の詳細

スキーマ

mcp/schema.go の Go スキーマ定義では、MCP メッセージの型安全な構造を定義しています。以下が含まれます。

  • JSON-RPC プロトコルの構造体
  • リソース、プロンプト、ツールの定義
  • テキスト、画像、埋め込みリソース用のコンテンツ構造体
  • json.RawMessage を使って多相型を処理するヘルパー関数
クライアント

mcp/client.go のクライアント実装には、次のメソッドが用意されています。

  • MCP サーバーへの接続を初期化する
  • リクエストを送信し、レスポンスを処理する
  • Go 構造体を JSON-RPC メッセージに変換する
  • 一般的な MCP 操作用のヘルパーメソッド

コントリビュート

コントリビュートを歓迎します。次のような方法で貢献できます。

  • サーバーを実装する
  • クライアントに WebSocket 対応を追加する
  • エラー処理を改善する
  • テストを追加する
  • 追加のユースケースを文書化する

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルをご覧ください。

参考資料

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。