mcpField
M
MCP Go SDK

MCP Go SDK

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

MCP Go SDK について

MCP Go SDKは、サーバー構築とクライアント・サーバー間の双方向通信に使えるGo実装のMCP SDKです。トランスポートやセッションに加え、ツール、リソース、プロンプトを扱えます。

主な機能

  1. 01stdio、SSE、WebSocketのトランスポート
  2. 02双方向通信とセッション管理
  3. 03ツールの登録と実行
  4. 04リソースのパターン照合とアクセス
  5. 05プロンプトテンプレートの描画

活用シーン

  1. 01GoでのMCPサーバー構築
  2. 02複数のトランスポートによるクライアント接続
  3. 03クライアントへのツール、リソース、プロンプト提供

MCP 対応

MCPクライアントとサーバー間の双方向通信を実装します。サーバーからツール、リソース、プロンプトを公開できます。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP Go SDK

この SDK は Model Context Protocol(MCP)の Go 実装を提供し、ツールの実行、リソースへのアクセス、プロンプトの処理において、クライアントとサーバー間の双方向通信を可能にします。

特徴

  • トランスポート層

    • 複数のトランスポートオプション(stdio、SSE、WebSocket)
    • 双方向通信
    • エンドポイントと設定を構成可能
  • サーバーの実装

    • ツールの登録と実行
    • リソースのパターンマッチングとアクセス
    • プロンプトテンプレートのレンダリング
    • セッション管理
    • リフレクションベースのハンドラー呼び出し
  • コアプロトコルの型

    • JSON-RPC メッセージの処理
    • MCP 固有の型(ツール、リソース、プロンプト)
    • ケイパビリティと初期化

インストール

go get github.com/SetiabudiResearch/mcp-go-sdk

クイックスタート

MCP サーバーを作成する簡単な例を紹介します。

package main

import (
    "context"
    "log"
    "github.com/SetiabudiResearch/mcp-go-sdk/pkg/mcp/server"
    "github.com/SetiabudiResearch/mcp-go-sdk/pkg/mcp/transport"
)

func main() {
    // Create a new server
    srv := server.NewServer("Example Server")

    // Add a tool
    srv.AddTool("greet", func(name string) string {
        return "Hello, " + name + "!"
    }, "Greet a person")

    // Create a session
    session := server.NewSession(context.Background(), srv)

    // Create and start a transport
    t := transport.NewStdioTransport(session)
    if err := t.Start(); err != nil {
        log.Fatal(err)
    }
}

使い方ガイド

サーバーの作成
// Create a new server with a name
srv := server.NewServer("My Server")

// Optionally configure server capabilities
srv.WithCapabilities(protocol.ServerCapabilities{
    SupportsAsync: true,
})
ツールの追加
// Add a synchronous tool
srv.AddTool("myTool", func(arg1 string, arg2 int) (string, error) {
    return fmt.Sprintf("Processed %s with %d", arg1, arg2), nil
}, "Tool description")

// Add an asynchronous tool
srv.AddAsyncTool("longRunningTool", func(params string) error {
    // Long-running operation
    return nil
}, "Async tool description")
リソースの追加
// Add a resource with pattern matching
srv.AddResource("files/{path}", func(path string) ([]byte, error) {
    return ioutil.ReadFile(path)
}, "Access files")

// Resource patterns support multiple parameters
srv.AddResource("api/{version}/{endpoint}", func(version, endpoint string) (interface{}, error) {
    return callAPI(version, endpoint)
}, "API access")
プロンプトの追加
// Add a simple text prompt
srv.AddPrompt("confirm", func(action string) string {
    return fmt.Sprintf("Are you sure you want to %s?", action)
}, "Confirmation prompt")

// Add a multi-message prompt
srv.AddPrompt("chat", func(context string) []protocol.PromptMessage {
    return []protocol.PromptMessage{
        {
            Role: protocol.RoleAssistant,
            Content: protocol.TextContent{
                Type: "text",
                Text: "How can I help you with " + context + "?",
            },
        },
    }
}, "Chat prompt")
トランスポートの設定
// Create a session
session := server.NewSession(context.Background(), srv)

// Stdio transport (for CLI applications)
t := transport.NewStdioTransport(session)

// WebSocket transport (for web applications)
t := transport.NewWebSocketTransport(session, transport.WithAddress(":8080"))

// Server-Sent Events transport (for web browsers)
t := transport.NewSSETransport(session, transport.WithAddress(":8080"))

// Start the transport
if err := t.Start(); err != nil {
    log.Fatal(err)
}

アプリケーション例

完全なアプリケーション例については、examples ディレクトリをご覧ください。

コントリビューション

コントリビューションを歓迎します。お気軽に Pull Request を送信してください。

ライセンス

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

コメント

MCP は初めてですか?

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

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