KINGONEタッチペン【全機種対応 超高速充電】 2025業界最高 スタイラスペン 超高精度 1MM極細 アップルペンシル互換ペン 誤ON/OFF防止/電量表示/傾き検知/二重磁気吸着機能対応 iPad用ペンシル 軽量 耐摩 耐久 iPad/iPhone/Android/スマホ/タブレット対応タッチペン (ホワイト)
¥1,798 (2025年4月25日 13:07 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)【2025革新型・高速USB3.0対応】 CD DVDドライブ 外付け 静音 DVDプレーヤー 外付けDVDドライブ USB3.0&Type-C両接続 読取/書込可 CDプレーヤー バスパワー駆動 外付けCDドライブ 軽量 薄型 光学ドライブ 外付け CDドライブ Mac PC パソコン Windows11対応 Windows10/8/7XP 外付け CD DVD ドライブ
¥1,999 (2025年4月25日 13:08 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)USB C ケーブル 純正 1M 2本セット PD対応 60W急速充電 USBタイプc ケーブル USB-C & USBC データ転送 高耐久性 断線防止 映像出力不可 Type-c to Type-c コード for iPhone 16/15 Pro/Plus/Pro Max、for MacBook Pro/Air/IPad Pro/AirなどTypec機種対応
¥799 (2025年4月25日 13:05 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
初めに
GitHub Projects Community
というGitHubの非公式アカウントが先日(2025年4月12日)に
面白そうなリポジトリを紹介しました。
ドキュメントを見るとあらゆるGitHubリポジトリをリモートMCPエンドポイント
に変換できるらしい。
興味深いので、ちょっと実装を見てみました。
機能紹介
まずは軽くリポジトリの検証からです。
私は自分のPublicのGitHubリポジトリを使って検証をしてみました、
自分のリポジトリを使ったのは、GitMCP
の回答精度を正確に判断しやすいからです。
https://github.com/huanshenyi/nextjs-mastra
は該当リポジトリのURLですが、
ホストネームを少し修正して、https://gitmcp.io/huanshenyi/nextjs-mastra
にした状態でブラウザから開けば、下記のような画面を開けます。
各MCPクライアントで利用する場合の設定ファイルを一覧できます。
今回はCursor用の設定ファイルをコピーして、Cursor Settings
からMCPの+ Add new global MCP server
を開いて、設定を追加します。
mcp.json
{
"mcpServers": {
"nextjs-mastra Docs": {
"url": "https://gitmcp.io/huanshenyi/nextjs-mastra"
}
}
}
追加完了したら、サーバーが利用可能な状態になってることが確認できます。
チャット画面から、huanshenyi/nextjs-mastra
リポジトリの中、Langfuseにトレースを送信する内容を聞いてみました。
うまく取得できませんでした
それはLangfuseにトレースを送れることがREADMEに書いてないから
です
質問された際に、最初はfetch_reponame_documentation
ツールが呼び出され、
READMEに書いてる内容が返されます、それを元に回答を生成してるからです。
ドキュメントにLangfuseとの連携の内容を追加し、コミットしてから再度聞いてみると、回答が返ってきました。
GitMCPの実装では、Cloudflare の tiered cacheがリポジトリ単位で機能してるため、リポジトリのドキュメント更新後、しばらく待たないとキャッシュにだけヒットします。
ここまででハンズオン完了です。
実装を見ると、リポジトリ内のドキュメント
、llms.txt
、リポジトリのメタデータ
をうまく取得して、回答してるそうです。
簡易なGitMCPを作ってみよう
このGitMCP
はCloudflareのworkers mcp
を使って構築されてることがわかります。
CloudflareのリモートMCPの詳細説明は下記の記事を読んでください。
同じworkers mcp
を使って、リポジトリのURLを渡せば、
リポジトリのことを聞けるリモートMCPサーバーを作ってみます。
プロジェクト初期化
任意のディレクトリでアプリを初期化します。
npm create cloudflare@latest -- my-mcp-server-github-auth --template=cloudflare/ai/demos/remote-mcp-github-oauth
初期化プロセス中に質問されますが、下記のよに回答しましょう。
You’re in an existing git repository. Do you want to use git for version control?
Do you want to deploy your application?
初期化完了したら、リポジトリに入って、OAUTH_KV
を作ります。
cd my-mcp-server-github-auth
wrangler kv namespace create "test-remoto-mcp(任意)"
実行したら、Cloudflareの認証画面が開かれます、事前にアカウント作っておくことをおすすめです。
Cloudflareはクレジットカードの登録なしでアカウントを作成でき、無料プランでも十分な機能が提供されているため、気軽に利用を始めることができます。
🌀 Creating namespace with title "worker-test-remoto-mcp"
✨ Success!
Add the following to your configuration file in your kv_namespaces array:
[[kv_namespaces]]
binding = "test_remoto_mcp"
id = "xxxxxxxxx"
実行完了したら、できた値(id)をリポジトリ配下のwrangler.jsoncのOAUTH_KVに書き換えます。
wrangler.jsonc
"kv_namespaces": [
{
"binding": "OAUTH_KV",
+ "id": "{OAUTH_KV}"
}
]
ここまでできたら一度デプロイしましょう。
デプロイ完了したら、Cloudflareワーカーのurlが表示されます、https://your-worker-name.your-account.workers.dev
それをコピーしておいてください、後でまた使います。
GitHub OAuth Appを作る
GitHubにログインして、Settings
-> Developer Settings
-> New OAuth App
Application name
覚えやすい名前を入力しましょう。
Homepage URL
先コピーしたCloudflareワーカーのurlを入力しましょう、https://your-worker-name.your-account.workers.dev
。
Authorization callback URL
Cloudflareワーカーのurl+/callback, https://your-worker-name.your-account.workers.dev/callback
。
完了したら、クライアントIDとクライアントシークレットが発行されます、
それらをWorkerのシークレットとして追加します。
namespaceに入る値はOAUTH_KV
を作った際に使った値になります。
wrangler secret put GITHUB_CLIENT_ID --name {namespace}
wrangler secret put GITHUB_CLIENT_SECRET --name {namespace}
最後、COOKIE_ENCRYPTION_KEYの値も作ります。
できた値をメモして、次のコマンド実行後、入力します。
wrangler secret put COOKIE_ENCRYPTION_KEY --name {namespace}
ここまででセットアップは完了しました、実際の動作を確認してみましょう。
Workers AI LLM Playgroundを開いてください。
MCP Servers URLに Cloudflareワーカーのurl+/sse
を入力しましょう、https://your-worker-name.your-account.workers.dev/sse
。
Connectを押すと、認証画面にリダイレクトされます。
接続完了したら、デフォルトで実装されてるadd
ツールを呼び出してみます。
環境変数のセットやデプロイが完了していれば、問題なく呼び出せるはずです。
githubドキュメント取得ツールを作る
簡易的なGitHubリポジトリのREADME.mdの内容を取得するツールを作ります、addツール
の下に下記のコードを追記します。
src/index.ts
...
this.server.tool(
'getGithubReadme',
'GitHubリポジトリのREADMEファイルを取得する',
{ repositoryUrl: z.string() },
async ({ repositoryUrl }) => {
try {
// repositoryUrlからオーナー名とリポジトリ名を抽出
const urlParts = repositoryUrl.replace('https://github.com/', '').split('/')
const owner = urlParts[0]
const repo = urlParts[1]
// READMEのraw URLを構築
const readmeUrl = `https://raw.githubusercontent.com/${owner}/${repo}/refs/heads/main/README.md`
// READMEの内容を取得
const response = await fetch(readmeUrl)
if (!response.ok) {
throw new Error(`README取得エラー: ${response.status} ${response.statusText}`)
}
const readmeContent = await response.text()
return {
content: [
{
type: 'text',
text: readmeContent,
},
],
}
} catch (error) {
return {
content: [
{
type: 'text',
text: `エラーが発生しました: ${error.message}`,
},
],
}
}
},
)
このツールはユーザーからGithubリポジトリのurl渡された際に、そのリポジトリにあるREADME.md
の中身を返すだけのシンプルなツールです。
修正完了したら、再度デプロイします。
Workers AI LLM Playgroundを使って検証してみよう。
同じくLangfuseとの連携の話を聞いてみます。
それぽい結果が返ってきました
その他のクライアントで使用
CLINE
cline_mcp_settings.jsonを下記のように修正してください
cline_mcp_settings.json
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://your-worker-name.your-account.workers.dev/sse"
],
"timeout": 10
}
}
}
Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"math": {
"command": "npx",
"args": [
"mcp-remote",
"https://your-worker-name.your-account.workers.dev/sse"
],
"timeout": 10
}
}
}
課題
無限ループ
自分の実装ミスなのか、仕様なのか不明ですが、ローカルのMCPクライアントを使ってリモートMCPサーバーに接続する際に、認証の無限ループがたまに発生します。
Claude Desktop、Cline、Cursorからも再現できます。
もしかするとmcp-remoteに関連する問題かもしれませんが、さらに検証が必要です。
リクエストの数がエグい
最初はループに気づかずに検証していたため、メインアカウントのリクエスト数が5000件以上まで膨れ上がってしまいました。
その後、気をつけて使っていても、ご覧いただいた数になってしまいました。これまではMCPをローカルで動かしていたのでリクエスト数にあまり注意を払っていませんでしたが、リモートMCPをサービスとして提供する場合は、適切なキャッシュ機構の構築が必須だと実感しました。
参考資料