Curl MCP Server について
Curl MCP Serverは、MCPクライアントから安全制限付きでcURLを実行するMCPサーバーです。HTTPリクエストやカスタムコマンド、ファイルダウンロードに対応し、URL検証やタイムアウト、出力サイズ制限を備えています。
主な機能
- 01HTTP GETリクエスト
- 02HTTP POSTリクエスト
- 03制限付きカスタムcURLコマンド
- 04メタデータ付きファイルダウンロード
- 05URLと引数の安全性検証
- 06タイムアウトと出力サイズ制限
活用シーン
- 01カスタムヘッダー付きAPIリクエストの送信
- 02JSONなどのリクエストデータの投稿
- 03ファイルのダウンロードとメタデータ確認
MCP 対応
MCPクライアント向けに、cURLリクエストとダウンロードのツールを提供するMCPサーバーです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Curl MCP サーバー
ターミナルシェルとの統合を通じて、安全な curl コマンド実行機能を提供する Model Context Protocol(MCP)サーバーです。
機能
- GET リクエスト:カスタムヘッダーを指定して HTTP GET リクエストを実行します
- POST リクエスト:コンテンツタイプを設定して POST データを送信します
- カスタムコマンド:安全上の制限を設けて、カスタム curl コマンドを実行します
- ファイルのダウンロード:ファイルをダウンロードし、メタデータを取得します
- セキュリティ:危険な操作を防ぐ保護機能を内蔵しています
- タイムアウト:リクエストのタイムアウトを設定できます(最大 30 秒)
- 出力制限:出力サイズが過剰になるのを防ぎます
インストール
# Clone or create the project directory
mkdir curl-mcp-server
cd curl-mcp-server
# Install dependencies
npm install @modelcontextprotocol/sdk
npm install -D typescript @types/node tsx
# Create src directory and add the TypeScript code
mkdir src
# Place the server code in src/index.ts
# Build the project
npm run build
前提条件
- Node.js 18+
curlコマンドが PATH で利用可能であること- TypeScript コンパイラー
利用可能なツール
1. curl_get
HTTP GET リクエストを実行します。
パラメーター:
url(必須):リクエスト先の URLheaders(任意):「Key: Value」形式のヘッダーの配列timeout(任意):タイムアウト秒数(デフォルト:10、最大:30)follow_redirects(任意):HTTP リダイレクトに従うかどうか(デフォルト:true)
例:
{
"url": "https://api.github.com/user",
"headers": ["Authorization: token YOUR_TOKEN"],
"timeout": 15
}
2. curl_post
HTTP POST リクエストを実行します。
パラメーター:
url(必須):リクエスト先の URLdata(必須):送信する POST データcontent_type(任意):Content-Type ヘッダー(デフォルト:"application/json")headers(任意):追加ヘッダーの配列timeout(任意):タイムアウト秒数(デフォルト:10、最大:30)
例:
{
"url": "https://api.example.com/data",
"data": "{\"key\": \"value\"}",
"content_type": "application/json",
"headers": ["Authorization: Bearer TOKEN"]
}
3. curl_custom
自由に制御できるカスタム curl コマンドを実行します。
パラメーター:
args(必須):curl 引数の配列(curlコマンドを除く)timeout(任意):タイムアウト秒数(デフォルト:10、最大:30)
例:
{
"args": ["-X", "PUT", "-H", "Content-Type: application/json", "-d", "{\"status\": \"updated\"}", "https://api.example.com/resource/123"],
"timeout": 20
}
4. curl_download
ファイルをダウンロードし、メタデータを取得します。
パラメーター:
url(必須):ダウンロード元の URLoutput_file(任意):出力ファイルのパスtimeout(任意):タイムアウト秒数(デフォルト:30、最大:30)
例:
{
"url": "https://example.com/file.pdf",
"output_file": "/tmp/downloaded_file.pdf"
}
セキュリティ機能
- URL 検証:HTTP および HTTPS の URL のみ許可されます
- 引数フィルタリング:危険な curl フラグはブロックされます
- 出力制限:メモリーの問題を防ぐため、出力サイズは最大 1MB です
- タイムアウト:すべてのリクエストでタイムアウトを設定できます
- 安全なデフォルト値:すべてのパラメーターに適切なデフォルト値が設定されています
ブロックされる操作
セキュリティ上、次の curl 操作は制限されています。
- ファイルのアップロード(
--upload-file、--form) - 設定ファイルの読み込み(
--config) - 制限のないファイル出力(専用のツールを通じて制御されます)
- バイナリデータのアップロード
- トレースファイルの生成
使用例
基本的な GET リクエスト
# Through MCP client
{
"tool": "curl_get",
"arguments": {
"url": "https://httpbin.org/get"
}
}
JSON データを使った POST
{
"tool": "curl_post",
"arguments": {
"url": "https://httpbin.org/post",
"data": "{\"message\": \"hello world\"}",
"content_type": "application/json"
}
}
カスタムヘッダー
{
"tool": "curl_get",
"arguments": {
"url": "https://api.github.com/user",
"headers": [
"Authorization: token ghp_xxxxxxxxxxxx",
"User-Agent: MyApp/1.0"
]
}
}
サーバーの実行
# Development mode
npm run dev
# Production mode
npm run build
npm start
Claude Desktop との統合
Claude Desktop の設定に追加します。
{
"mcpServers": {
"curl": {
"command": "node",
"args": ["/path/to/curl-mcp-server/build/index.js"]
}
}
}
エラー処理
サーバーは次の内容について、詳細なエラーメッセージを提供します。
- 無効な URL
- タイムアウトエラー
- curl の実行失敗
- 出力サイズ制限の超過
- セキュリティ違反
制限事項
- リクエストのタイムアウトは最大 30 秒です
- 出力サイズは最大 1MB です
- HTTP/HTTPS プロトコルのみサポートしています
- セキュリティ上、一部の curl フラグはブロックされます
貢献
問題の報告や機能強化のリクエストを歓迎します。変更を加えた場合は、特にセキュリティ関連の変更について、十分にテストしてください。
ライセンス
MIT License — 詳細については LICENSE file を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。