AIエージェント開発

Smithery完全ガイド2026|MCP Serverレジストリ・発見・管理

SmitheryのMCPサーバーレジストリ管理画面

この記事の結論

SmitheryはMCP Serverの発見・インストール・管理を一元化するレジストリ。7,300以上のサーバーをCLI一発で導入。Claude Desktop/Cursor/VS Code対応の設定・公開手順・セキュリティまで解説。


「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ダッシュボードで取得できます
  • ページネーションはpagepageSizeで制御

インストール(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"}'

ポイント:

  • --clientclaude / 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つのアクション

  1. 今日やること: npx @smithery/cli install @smithery-ai/github --client claude を実行して、Claude DesktopにGitHub MCPを追加してみる
  2. 今週中: inspectコマンドで導入済みサーバーのツール定義を確認し、不審な説明文がないか監査する
  3. 今月中: 社内向けにホワイトリスト済みサーバーリストを作成し、チーム全員が同じ設定を使えるようsmithery.yamlベースで標準化する

あわせて読みたい:


参考・出典


関連記事: 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で活用する方法を解説しています。

Need help moving from reading to rollout?

この記事を読んで導入イメージが固まってきた方へ

Uravationでは、AIエージェントの要件整理、PoC設計、社内導入、研修まで一気通貫で支援しています。

この記事をシェア

X Facebook LINE

※ 本記事の情報は2026年5月時点のものです。サービスの料金・仕様は変更される可能性があります。最新情報は各サービスの公式サイトをご確認ください。

関連記事