MCPサーバー(SSE URL)の使用方法
Model Context Protocol(MCP)サーバーは、専用サーバーを通じてAI機能を強化するCursorの強力な機能です。このガイドでは、CursorのServer-Sent Events(SSE)URLを使用したMCPサーバーの理解と活用方法について説明します。
MCPサーバーとSSEの概要
MCP(Model Context Protocol)サーバーは、CursorとさまざまなAIモデルやサービスの間で動作する特殊なミドルウェアとして機能します。これらのサーバーは、CursorのAI機能を強化する追加のコンテキスト、ツール、機能を提供します。Server-Sent Events(SSE)は、サーバーがHTTP接続を介してクライアントに更新をプッシュできるようにする技術で、リアルタイムの通信を可能にします。
MCPサーバーとは
MCPサーバーは、Model Context Protocolを実装した特殊なサーバーで、Cursorに以下の機能を提供します:
- 追加のツールとリソースへのアクセス
- 外部APIやサービスへの接続
- AIモデルに送信する前のデータの処理と変換
- カスタム機能によるCursorの機能拡張
SSE URLを使用する理由
SSE(Server-Sent Events)URLは、CursorとMCPサーバー間の接続を確立するための標準化された方法を提供し、以下の利点があります:
- リアルタイムの更新とストリーミングレスポンス
- サーバーからクライアントへの効率的な一方向通信
- 自動的な再接続処理
- 標準的なHTTPインフラストラクチャとの互換性
SSE URLの構造の理解
MCPサーバーのSSE URLは通常、以下の構造に従います:
http(s)://<hostname>:<port>/sse?token=<auth_token>
各コンポーネントの説明:
- プロトコル:
http://
またはhttps://
(セキュアな通信、推奨) - ホスト名:サーバーアドレス(例:
localhost
、mcp.example.com
) - ポート:MCPサーバーが待ち受けているポート番号(例:
3000
) - パス:通常、Server-Sent Eventsエンドポイントの
/sse
- トークン:セキュアなアクセスのための認証トークン
設定手順
SSE URLを使用したMCPサーバーの設定と使用には、以下の手順が必要です:
1. 必要な依存関係のインストール
まず、必要な依存関係をインストールします:
npm install @modelcontextprotocol/sdk
2. MCPサーバー設定の作成
MCPサーバーの設定ファイルを作成します。これはCursorの設定ディレクトリに配置できます:
{
"mcpServers": {
"example-server": {
"command": "node",
"args": ["/path/to/your/mcp-server.js"],
"env": {
"API_KEY": "your-api-key-here",
"OTHER_ENV_VAR": "value"
},
"disabled": false,
"autoApprove": ["tool1", "tool2"]
}
}
}
3. SSE接続のセットアップ
MCPサーバーの実装でSSEエンドポイントを設定します:
import express from 'express';
import cors from 'cors';
const app = express();
app.use(cors());
app.get('/sse', (req, res) => {
// トークンの検証
const token = req.query.token;
if (!validateToken(token)) {
return res.status(401).send('Unauthorized');
}
// SSE用のヘッダー設定
res.setHeader('Content-Type', 'text/event-stream');
res.setHeader('Cache-Control', 'no-cache');
res.setHeader('Connection', 'keep-alive');
// 初期接続メッセージの送信
res.write('event: connected\ndata: {"status": "connected"}\n\n');
// クライアント切断の処理
req.on('close', () => {
console.log('Client disconnected');
});
// 定期的なメッセージまたはイベントへの応答の設定
// ...
});
app.listen(3000, () => {
console.log('MCP Server listening on port 3000');
});
4. CursorでのMCPサーバーの設定
MCPサーバーの設定をCursorの設定に追加します:
- Cursorを開く
- 設定(⚙️)に移動
- "MCP"を検索
- サーバー設定を追加
- 変更を保存
使用例
以下は、SSE URLを使用したMCPサーバーの実践的な例です:
例1:基本的なツールの実装
// MCPサーバーの実装内
server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'weather_lookup',
description: '指定した場所の現在の天気を取得',
inputSchema: {
type: 'object',
properties: {
location: {
type: 'string',
description: '都市名または郵便番号'
}
},
required: ['location']
}
}
]
}));
server.setRequestHandler(CallToolRequestSchema, async (request) => {
if (request.params.name === 'weather_lookup') {
const location = request.params.arguments.location;
const weatherData = await fetchWeatherData(location);
return {
content: [
{
type: 'text',
text: JSON.stringify(weatherData, null, 2)
}
]
};
}
});
例2:リソースの実装
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
resources: [
{
uri: 'docs://api/reference',
name: 'APIリファレンスドキュメント',
mimeType: 'text/markdown',
description: 'プロジェクトの完全なAPIリファレンス'
}
]
}));
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
if (request.params.uri === 'docs://api/reference') {
return {
contents: [
{
uri: request.params.uri,
mimeType: 'text/markdown',
text: await fs.readFile('path/to/api-docs.md', 'utf-8')
}
]
};
}
});
一般的な問題のトラブルシューティング
接続拒否
問題:CursorがMCPサーバーに接続できない。
解決策:
- サーバーが実行中であることを確認
- ファイアウォールの設定を確認
- ポートが正しく、アクセス可能であることを確認
- ホスト名が正しく解決されることを確認
認証の失敗
問題:接続時に"Unauthorized"エラーが発生。
解決策:
- トークンが正しく設定されているか確認
- トークン検証ロジックを確認
- 環境変数が適切に設定されているか確認
サーバーのクラッシュ
問題:MCPサーバーが予期せずクラッシュする。
解決策:
- 適切なエラー処理を実装
- 問題特定のためのログ追加
- メモリリークの確認
- 処理前の入力データの検証
応答の遅延
問題:MCPサーバーの応答が遅い。
解決策:
- サーバーコードの最適化
- 適切なキャッシュの実装
- リソースのスケーリングの検討
- ブロッキング操作の確認
ベストプラクティス
セキュリティ
- 本番環境では常にHTTPSを使用
- 適切な認証と認可の実装
- インジェクション攻撃を防ぐための入力検証
- 必要な機能のみを公開
パフォーマンス
- 頻繁にアクセスされるリソースのキャッシュ実装
- 効率的なデータ構造とアルゴリズムの使用
- 大規模データのストリーミングレスポンスの検討
- サーバーパフォーマンスの監視と最適化
信頼性
- 適切なエラー処理の実装
- デバッグ用のログ追加
- ヘルスチェックの設定
- クラッシュしたサーバーの自動再起動の実装
開発ワークフロー
- テスト用のローカル開発環境の使用
- MCPサーバーのバージョン管理の実装
- サーバーの機能と要件のドキュメント化
- サーバー機能の自動テストの作成
結論
SSE URLを使用したMCPサーバーは、カスタム機能や外部サービスでCursorの機能を拡張する強力な方法を提供します。このガイドで説明した設定手順とベストプラクティスに従うことで、開発ワークフローを強化する堅牢で安全、効率的なMCPサーバーを作成できます。
外部APIへの接続、カスタムツールの実装、AIモデルへの追加コンテキストの提供など、MCPサーバーはCursorの機能を拡張するための柔軟で標準化されたアプローチを提供します。