MCP-Haskell (hs-mcp) について
MCP-Haskell(hs-mcp)は、MCP サーバーを構築するための Haskell 実装のモデルコンテキストプロトコルです。Haskell アプリケーションから Claude などのクライアントに、ツール、リソース、プロンプトを公開できます。Haskell で MCP サーバーを書きたい開発者を対象としています。
主な機能
- 01MCP プロトコルの中核機能の実装
- 02ローカルプロセス通信向けの StdIO トランスポート
- 03JSON-RPC によるメッセージ処理
- 04ツール、リソース、プロンプトのサポート
- 05テストスイートの同梱
活用シーン
- 01Haskell でカスタム MCP サーバーを作成する
- 02同梱のエコーサーバーで MCP 機能を検証する
- 03MCP Inspector や Claude Desktop でサーバーをデバッグする
MCP 対応
サーバー側のライブラリとして、Haskell アプリケーションがツール、リソース、プロンプトを Claude Desktop などの MCP クライアントに公開します。記載されているトランスポートは StdIO のみです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP-Haskell (hs-mcp)
Model Context Protocol (MCP) の Haskell 実装です。
概要
MCP-Haskell (hs-mcp) は Model Context Protocol の Haskell 実装を提供し、Haskell アプリケーションから Claude などの MCP 互換クライアントにツール、リソース、プロンプトを公開できます。
主な機能:
- MCP プロトコルの完全な実装
- ローカルプロセス通信用の StdIO トランスポート
- JSON-RPC メッセージング
- リソース、ツール、プロンプトのサポート
- 包括的なテストスイート
インストール
# Clone the repository
git clone github.com:buecking/hs-mcp.git
cd hs-mcp
# direnv
# echo 'use flake' > .envrc
direnv allow
# nix
nix develop
# Build the project
cabal build
使用方法
シンプルなサーバーの作成
import Network.MCP.Server
import Network.MCP.Types
import Network.MCP.Server.StdIO
main :: IO ()
main = do
-- Create server
let serverInfo = Implementation "my-server" "1.0.0"
serverCapabilities = ServerCapabilities
{ resourcesCapability = Just $ ResourcesCapability True
, toolsCapability = Just $ ToolsCapability True
, promptsCapability = Nothing
}
server <- createServer serverInfo serverCapabilities
-- Register resources (optional)
let resource = Resource
{ resourceUri = "my://resource"
, resourceName = "My Resource"
, resourceDescription = Just "Description"
, resourceMimeType = Just "text/plain"
, resourceTemplate = Nothing
}
registerResources server [resource]
-- Register resource read handler
registerResourceReadHandler server $ \request -> do
-- Implement resource reading logic
...
-- Register tools (optional)
let tool = Tool
{ toolName = "my-tool"
, toolDescription = Just "My tool"
, toolInputSchema = "{...}" -- JSON schema
}
registerTools server [tool]
-- Register tool call handler
registerToolCallHandler server $ \request -> do
-- Implement tool execution logic
...
-- Start the server with StdIO transport
runServerWithSTDIO server
サーバーの例
このプロジェクトには、MCP の機能を実演するエコーサーバーの例が含まれています。
# Build and run the example server
cabal run mcp-echo-server
MCP Inspector または Claude Desktop でテストできます。
テスト
テストスイートを実行します。
cabal test
プロトコルの互換性
この実装は Model Context Protocol の仕様に準拠しており、次のものと互換性があります。
- Claude Desktop
- MCP Inspector
- 仕様に準拠したその他の MCP クライアント
プロジェクト構成
src/Network/MCP/Types.hs- MCP の中核となる型src/Network/MCP/Transport/- トランスポートの実装src/Network/MCP/Server/- サーバーの実装Examples/- 実装例Test/- テストスイート
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは BSD-3-Clause License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。