「MCPサーバーってどこで探せばいいんだろう?」
MCPエコシステムが急拡大した2026年、その問いへの答えがSmitheryです。実際にSmitheryでサーバーを探してみると、GitHubやnpmを手動で漁っていた時間が嘘のように消えました。7,300以上のMCPサーバーを検索・インストール・管理できるレジストリで、ワンコマンドでClaude Desktopに組み込めます。
この記事では、SmitheryのCLI操作から自作サーバーの公開、セキュリティ考察まで、コードを動かしながら解説します。
- SmitheryのMCPエコシステムでの位置付けとアーキテクチャ
- CLI一発インストールとClaude Desktop/Cursor/VS Code設定
- 自作MCPサーバーをSmitheryへ公開する手順
- セキュリティ上の注意点と企業利用パターン
対象読者: MCPをエージェントに組み込みたい開発者・PM
SmitheryとはなにかとMCPエコシステムでの位置付け
SmitheryはMCP(Model Context Protocol)サーバーのレジストリ兼管理プラットフォームです。位置付けとしては「MCPエコシステムのnpmレジストリ」に近く、コミュニティが公開したサーバーを検索・ワンクリック導入できます。
Anthropicが2024年末にMCPを公開してから、GitHubのAwesome-MCP的リストが乱立しましたが、品質管理やインストール手順の標準化は各リポジトリ任せでした。Smitheryはその問題を解決し、2026年5月時点で7,300以上のサーバーを一元的に管理しています(出典: smithery.ai公式サイト、2026-05-06参照)。
MCPスタックにおける役割分担
MCPエコシステムは大まかに「作る層」「管理・発見する層」「使う層」の3層で成り立っています。
| 層 | ツール例 | 役割 |
|---|---|---|
| 作る | MCP SDK、FastMCP | サーバー実装 |
| 管理・発見 | Smithery、Glama、mcp-get | レジストリ・インストール |
| 使う | Claude Desktop、Cursor、VS Code | クライアント統合 |
Smitheryは中間層を担い、作る側(公開)と使う側(発見・インストール)の両方を支援します。
Smithery Registry概観
Smithery Registryには、GitHubコネクター、Slack統合、PostgreSQLアクセス、Notion同期などの実用的なサーバーが揃っています。カテゴリは「開発ツール」「データコネクター」「生産性」「AIユーティリティ」の4系統。検索APIも公開されており、プログラムからサーバーを発見できます。
Registry検索API(基本)
以下のコードでSmithery Registryをプログラムから検索できます。
# 動作環境: Python 3.11+, requests>=2.31.0
# 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
import requests
import os
SMITHERY_API_KEY = os.environ["SMITHERY_API_KEY"]
def search_mcp_servers(query: str, page: int = 1, page_size: int = 10) -> dict:
"""Smithery Registryでキーワード検索"""
resp = requests.get(
"https://registry.smithery.ai/servers",
params={
"q": query,
"page": page,
"pageSize": page_size,
},
headers={"Authorization": f"Bearer {SMITHERY_API_KEY}"},
timeout=10,
)
resp.raise_for_status()
return resp.json()
# 使用例
results = search_mcp_servers("github")
for server in results.get("servers", []):
print(f"{server['qualifiedName']}: {server['description'][:60]}")
ポイント:
qualifiedNameはインストール時に使うサーバー識別子(例:@smithery-ai/github)- APIキーはSmithery.aiダッシュボードで取得できます
- ページネーションは
pageとpageSizeで制御
インストール(CLI / パッケージマネージャー)
SmitheryはCLIをnpxで実行するため、Node.js(v18以上)があれば追加インストール不要です。
基本インストールコマンド
# npxで直接実行(インストール不要)
npx @smithery/cli install @smithery-ai/github --client claude
# グローバルインストールして使う場合
npm install -g @smithery/cli
smithery mcp list
APIキーを使ったインストール(推奨)
# Smithery APIキーを指定してインストール(APIキーはダッシュボードで取得)
npx -y @smithery/cli@latest install @smithery-ai/github \
--client claude \
--key YOUR_SMITHERY_API_KEY
# 設定値を同時に注入する場合
npx @smithery/cli install @smithery-ai/github \
--client claude \
--config '{"githubToken":"ghp_xxxx"}'
ポイント:
--clientはclaude/cursor/vscode/windsurfから選択- 設定値(トークン等)は
--configでJSON形式で渡します - Smitheryはトークン自体を保存しない(エフェメラル処理)
MCP Serverの検索・発見
CLIからの検索と、Webダッシュボードからの検索どちらも使えます。
# キーワード検索
smithery mcp search "slack"
# インストール済みサーバー一覧
smithery mcp list
# サーバーの詳細確認
npx @smithery/cli inspect @modelcontextprotocol/server-slack
# 利用可能なツール一覧
smithery tool list @modelcontextprotocol/server-slack
ワンクリック導入パターン(Claude Desktop / Cursor / VS Code)
各クライアントの設定ファイル形式が異なる点が混乱のもとです。Smithery CLIは--clientフラグで自動的に適切なファイルを更新してくれます。
Claude Desktop設定(手動追加する場合)
// ~/.claude/claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@smithery-ai/github",
"--key",
"YOUR_SMITHERY_API_KEY"
],
"env": {
"GITHUB_TOKEN": "ghp_xxxx"
}
}
}
}
Cursor設定(プロジェクト単位)
// .cursor/mcp.json (プロジェクトルートに配置)
{
"mcpServers": {
"slack": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@modelcontextprotocol/server-slack",
"--key",
"YOUR_SMITHERY_API_KEY"
],
"env": {
"SLACK_BOT_TOKEN": "xoxb-xxxx",
"SLACK_TEAM_ID": "T0XXXXX"
}
}
}
}
VS Code設定(rootキーに注意)
// .vscode/mcp.json
// 注意: VS Codeは "servers" キーを使う("mcpServers" ではない)
{
"servers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@smithery/cli@latest",
"run",
"@modelcontextprotocol/server-filesystem",
"--key",
"YOUR_SMITHERY_API_KEY"
],
"env": {
"ALLOWED_DIRECTORIES": "/home/user/projects"
}
}
}
}
ポイント: VS Codeのrootキーは"servers"で、Cursor/Claude Desktopの"mcpServers"とは異なります。コピペで設定を使い回す際の最頻出ミスです。
認証情報・環境変数の管理
MCPサーバーのトークン管理は実装ミスが多いポイントです。SmitheryはトークンをSmitheryのサーバーに送信せず、ローカルでエフェメラル処理する設計ですが、それを前提に油断しない管理が必要です。
# .envファイルに秘密情報を集約(.gitignoreに追加必須)
cat > .env << 'EOF'
SMITHERY_API_KEY=your_smithery_key_here
GITHUB_TOKEN=ghp_xxxx
SLACK_BOT_TOKEN=xoxb-xxxx
OPENAI_API_KEY=sk-proj-xxxx
EOF
# direnvを使ってプロジェクトごとに環境変数を自動ロード
echo 'dotenv' > .envrc
direnv allow .
# Pythonエージェントからの動的MCP接続例
# 動作環境: Python 3.11+, smithery-sdk>=0.1.0
import os
from smithery import SmitheryClient
client = SmitheryClient(api_key=os.environ["SMITHERY_API_KEY"])
# GitHubサーバーに接続
async def connect_github():
server = await client.connect(
"@smithery-ai/github",
config={"githubToken": os.environ["GITHUB_TOKEN"]}
)
# ツール一覧を取得
tools = await server.list_tools()
print(f"利用可能なツール: {[t.name for t in tools]}")
return server
自作MCPサーバーのSmithery公開手順
自作したMCPサーバーをSmitheryに公開すると、世界中のユーザーがCLI一発で導入できるようになります。公開にはsmithery.yamlの作成とsmithery mcp publishコマンドが必要です。
smithery.yamlの作成
# smithery.yaml (プロジェクトルートに配置)
name: my-org/my-mcp-server
displayName: "My Custom MCP Server"
description: "社内ナレッジベースへのMCPインターフェース"
homepage: "https://github.com/my-org/my-mcp-server"
license: "MIT"
# サーバーの起動コマンド
startCommand:
type: stdio
command: "node"
args: ["dist/index.js"]
# 必要な設定値(ユーザーが--configで渡すもの)
config:
properties:
apiEndpoint:
type: string
description: "ナレッジベースAPIのエンドポイントURL"
apiToken:
type: string
description: "認証トークン"
sensitive: true # Smitheryのダッシュボードでマスク表示
公開コマンド
# ローカルでビルド確認
npm run build
# Smitheryに公開
smithery mcp publish https://github.com/my-org/my-mcp-server -n my-org/my-mcp-server
# または直接URLで公開
npx @smithery/cli publish --url https://my-mcp-server.example.com
セキュリティ考察(信頼できるサーバーの識別)
2026年の独立調査で、Smithery上位100サーバーをスキャンした結果、22サーバー(22%)でセキュリティの問題が検出されました(出典: DEV Community調査、2026参照)。最多は「ツール説明インジェクション」(6件)で、ツールの説明文にエージェントを操作する指示が埋め込まれていました。
信頼性を判断する5つの指標
| 指標 | 確認方法 | 推奨基準 |
|---|---|---|
| 公開元 | Smithery「Verified」バッジ | 公式ベンダー or Verifiedのみ |
| GitHubスター数 | リポジトリを直接確認 | 100以上が目安 |
| 最終更新日 | smithery.ai詳細ページ | 3ヶ月以内 |
| オープンソース | ソースコードの公開有無 | 可能な限りOSSを選ぶ |
| ツール説明の健全性 | inspect コマンドで確認 | 不自然な指示がないか |
# サーバーのツール定義を事前に確認(インストール前に必ず実行)
npx @smithery/cli inspect @target-org/suspicious-server
# ツールの説明文を詳細表示(インジェクション確認)
smithery tool list @target-org/suspicious-server --verbose
競合・代替(Glama / mcp-get / 公式registry)
| ツール | 特徴 | 向いているケース |
|---|---|---|
| Smithery | 7,300+サーバー、CLI統合 | 汎用・個人・チーム利用 |
| Glama | ホスト型カスタムサーバーが多い | マネージドインフラが必要 |
| Composio | 本番AI向けマネージドインフラ | エンタープライズ本番環境 |
| 公式 modelcontextprotocol/registry | Anthropic主導の公式リスト | 信頼性最優先の参照用 |
| Awesome-MCP系リスト | GitHub手動キュレーション | ニッチなサーバー探索 |
公式レジストリ(github.com/modelcontextprotocol/registry)はAnthropicが管理する審査済みリストで、サーバー数は少ないものの信頼性が最も高いです。企業のセキュリティポリシーで「審査済みのみ」が求められる場合はこちらを参照起点にするのが安全です。
エンタープライズ運用パターン(社内registry構築)
大企業では「外部レジストリのサーバーを直接インストールさせない」というポリシーが多くあります。そのような場合、社内にプライベートSmithery-compatibleレジストリを立てるパターンが有効です。
// 社内レジストリのサーバー登録スクリプト例
// 動作環境: Node.js 20+, @smithery/sdk>=0.2.0
// 注意: 本番環境で使用する前に、必ずテスト環境で動作確認してください。
import { SmitheryRegistryClient } from "@smithery/sdk";
const internalRegistry = new SmitheryRegistryClient({
baseUrl: "https://mcp-registry.internal.mycompany.com",
apiKey: process.env.INTERNAL_REGISTRY_KEY!,
});
// 社内MCPサーバーを登録
await internalRegistry.registerServer({
qualifiedName: "mycompany/hr-knowledge-mcp",
displayName: "HR Knowledge Base MCP",
description: "社内人事ナレッジベースへのアクセス",
startCommand: {
type: "stdio",
command: "npx",
args: ["-y", "@mycompany/hr-knowledge-mcp@latest"],
},
tags: ["internal", "hr", "knowledge"],
});
console.log("社内MCPサーバーをレジストリに登録しました");
社内registry運用のポイント
- セキュリティ審査済みサーバーのみをホワイトリスト登録
- バージョンピン留め(
@1.2.3形式)でサプライチェーン攻撃を防止 - 定期的なツール説明文の監査(月次推奨)
- ログ収集でどのエージェントがどのツールを呼んだか追跡
【要注意】よくある失敗パターン4選と回避策
失敗1: VS Codeで”mcpServers”キーを使う
❌ Cursorの設定をそのままコピーして "mcpServers" キーを使う
⭕ VS Codeは "servers" キー。設定が無視されてサーバーが起動しない
// ❌ 動かない(VS Code)
{ "mcpServers": { "github": {...} } }
// ✅ 正しい(VS Code)
{ "servers": { "github": {...} } }
失敗2: トークンをSmithery URLに直接埋め込む
❌ --keyオプションで渡したSmithery APIキーとGitHub PAT両方をURLに埋め込む
⭕ 秘密情報は--configで渡すかenvフィールドを使う。URLはバージョン管理に入りやすく危険
失敗3: インストール前にserverを検証しない
❌ サーバー名だけ見てインストールする
⭕ inspectコマンドでツール定義を確認。ツール説明文にIGNORE_PREVIOUS_INSTRUCTIONSのような文字列があれば即却下
失敗4: すべてのサーバーを全エージェントに接続する
❌ 全MCPサーバーを1つの設定ファイルに詰め込んでエージェント全員に渡す
⭕ エージェントごとに必要最小限のサーバーのみを接続する(最小権限の原則)
まとめ:今日から始める3つのアクション
- 今日やること:
npx @smithery/cli install @smithery-ai/github --client claudeを実行して、Claude DesktopにGitHub MCPを追加してみる - 今週中:
inspectコマンドで導入済みサーバーのツール定義を確認し、不審な説明文がないか監査する - 今月中: 社内向けにホワイトリスト済みサーバーリストを作成し、チーム全員が同じ設定を使えるよう
smithery.yamlベースで標準化する
あわせて読みたい:
- AIエージェント セキュリティ|Prompt Injectionの対策10選 — MCPサーバー経由の攻撃パターンと防御
- Cline・Aider・Claude Code三強比較 — MCPを活用するAIコーディングクライアントの比較
参考・出典
- Smithery CLI Documentation — smithery.ai(参照日: 2026-05-06)
- smithery-ai/cli — GitHub — smithery-ai(参照日: 2026-05-06)
- We scanned 100 Smithery MCP servers and 22 came back with security findings — DEV Community(参照日: 2026-05-06)
- Smithery AI: A central hub for MCP servers — WorkOS Blog(参照日: 2026-05-06)
- Best MCP Registries in 2026: Compared for Developers and Enterprises — TrueFoundry(参照日: 2026-05-06)
関連記事: Composio完全ガイド2026|AIエージェント100+ SaaS統合では、SaaS統合APIプラットフォームとしてSmitheryと相補的な役割を担うComposioを解説している。
この記事を読んでMCPエコシステムの全体像が見えてきた方へ
UravationではAIエージェント設計・MCPサーバー開発・チーム向け導入研修を行っています。社内への本格展開を検討している方はお気軽にご相談ください。
著者: 佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー10万人超。100社以上の企業向けAI研修・導入支援。著書累計3万部突破。
関連記事: Goose完全ガイド2026|Block製OSS CLI AIエージェント・MCP統合 — SmitheryのMCPサーバーをGooseで活用する方法を解説しています。