mcpField
M
MCP4Go

MCP4Go

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

MCP4Go について

MCP4Goは、MCPを使ったAIアプリケーションを開発するGo開発者向けの純粋なGo SDKです。プロトコルの詳細を抽象化し、リソース、プロンプト、ツールの高水準な機能を提供します。

主な機能

  1. 01純粋なGoによるMCP実装
  2. 02リソースのライフサイクル管理
  3. 03ツールの定義と呼び出し
  4. 04プロンプトとサンプリングパラメーター
  5. 05プラグイン可能な拡張アーキテクチャ
  6. 06ログ、診断、エラー処理

活用シーン

  1. 01GoアプリケーションへのMCP機能の組み込み
  2. 02MCPリソースのライフサイクル管理
  3. 03MCPクライアントへのツール呼び出しの提供
  4. 04独自のMCP機能の拡張

MCP 対応

SDKはJSON-RPC通信を含むMCPプロトコルを実装し、サーバー構築に使えるリソース、プロンプト、ツールなどの機能を提供します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

Go Test Lint codeql GoDoc CodeCover Go Report Card License Release

MCP4Go

MCP4Go は、Model Context Protocol(MCP) の Go 実装です。プロトコルの複雑さを抽象化し、AI アプリケーションの開発を簡素化することを目的としています。

特徴

  • 純粋な Go による MCP プロトコルの完全な実装
  • 一般的な MCP リソースのための高水準な抽象化
  • カスタム拡張に対応するプラグイン可能なアーキテクチャ
  • 包括的なドキュメントとサンプル
  • 堅牢なエラー処理を備えた本番環境対応

インストール

MCP4Go には Go 1.18 以降が必要です。Go modules を使用してインストールします。

go get github.com/mcp4go/mcp4go

はじめに

MCP4Go を使い始めるには、Go アプリケーションにパッケージをインポートします。

package main

import (
	"context"
	"fmt"
	"log"
	"os"
	"os/signal"
	"syscall"
	"time"

	"github.com/mcp4go/mcp4go/pkg/logger"
	"github.com/mcp4go/mcp4go/protocol"
	"github.com/mcp4go/mcp4go/server"
	"github.com/mcp4go/mcp4go/server/iface"
	"github.com/mcp4go/mcp4go/server/transport"

	_ "time/tzdata" // Load all time zones
)

func main() {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	_logger := logger.DefaultLog

	// Listen for interrupt signals for graceful exit
	signalCh := make(chan os.Signal, 1)
	signal.Notify(signalCh, os.Interrupt, syscall.SIGTERM)
	go func() {
		<-signalCh
		_logger.Logf(ctx, logger.LevelWarn, "Received shutdown signal")
		cancel()
	}()

	type timeRequest struct {
		TimeZone string `json:"time_zone,omitempty" description:"time zone default is Asia/Shanghai"`
	}

	// Create standard input/output transport layer
	stdioTransport := transport.NewStdioTransport()
	// Create MCP server and configure options
	srv, cleanup, err := server.NewServer(
		stdioTransport,
		server.WithServerInfo(protocol.Implementation{
			Name:    "time-mcp",
			Version: "0.1.0",
		}),
		server.WithInstructions("Welcome to Time MCP! This server provides Time tools."),
		server.WithToolBuilder(iface.NewFunctionalToolsBuilder(
			iface.NewFunctionalToolWrapper(
				"time",
				"get current time",
				func(ctx context.Context, args timeRequest) ([]protocol.Content, error) {
					if args.TimeZone == "" {
						args.TimeZone = "Asia/Shanghai"
					}

					getTimezoneTime := func(_ context.Context, timeZone string) time.Time {
						if timeZone == "" {
							timeZone = "Asia/Shanghai"
						}
						loc, err := time.LoadLocation(timeZone)
						if err != nil {
							return time.Now()
						}
						return time.Now().In(loc)
					}

					currentTime := getTimezoneTime(ctx, args.TimeZone)

					return []protocol.Content{
						protocol.NewTextContent(fmt.Sprintf("current time is %s", currentTime), nil),
					}, nil
				}),
		)),
	)
	if err != nil {
		log.Printf("Failed to create server: %v\n", err)
		return
	}
	defer cleanup()

	// Start the server
	_logger.Logf(ctx, logger.LevelWarn, "Starting Time MCP server")
	if err := srv.Run(ctx); err != nil {
		_logger.Logf(ctx, logger.LevelError, "Server error: %v", err)
		return
	}

	_logger.Logf(ctx, logger.LevelWarn, "Server shutdown complete")
}

プロトコルの実装

MCP4Go は、次の機能に対応した Model Context Protocol の完全な実装を提供します。

  • JSON-RPC 通信
  • リソースのライフサイクル管理
  • プロンプトエンジニアリング
  • ツールの定義と呼び出し
  • サンプリングパラメーター
  • ロギングと診断

ライセンス

このプロジェクトは MIT License のもとでライセンスされています。

コントリビューション

コントリビューションを歓迎します!詳細については、コントリビューションガイドをご覧ください。

コメント

MCP は初めてですか?

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

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