Skip to main content
Glama

mcp-suite

AIエージェント(Claude Desktop、Cursor、Windsurf、カスタムエージェント)に対し、金融市場Web3/DeFi開発者ツール、**ヘルスケア(FHIR)**の4つのドメインにわたる実世界のデータへの構造化されたアクセスを提供する、プロダクショングレードのTypeScript MCPサーバーです。

  • 認証ファースト — JWT検証がデフォルトで有効

  • ドメイン分離 — APIキーが欠落していてもサーバー全体ではなく、そのドメインのみが無効化されます

  • レスポンスキャッシュ(LRU + TTL)およびドメインごとのトークンバケットレート制限

  • すべてのツール入力および出力に対する型定義済みスキーマ(Zod)

  • 2つのトランスポート:stdio(ローカル)およびHTTP + SSE(リモート/ホスト型)


クイックスタート

# Run directly (no global install required)
npx mcp-suite

# Or install globally
npm install -g mcp-suite
mcp-suite

要件: Node.js ≥ 20, npm ≥ 10


インストール

1. 環境変数の設定

.env.example.env にコピーし、有効にしたいドメインのキーを入力します:

cp .env.example .env
# Authentication (required in production)
MCP_JWT_SECRET=your-secret-here

# Financial Markets (Alpha Vantage + CoinGecko)
ALPHA_VANTAGE_API_KEY=

# Web3 / DeFi (Alchemy + OpenSea + Blur)
ALCHEMY_API_KEY=
OPENSEA_API_KEY=

# Developer Tools (GitHub)
GITHUB_TOKEN=

# Healthcare / FHIR (optional — defaults to public HAPI sandbox)
FHIR_BASE_URL=https://hapi.fhir.org/baseR4

# Server
LOG_LEVEL=info         # debug | info | warn | error
MCP_PORT=3000          # HTTP transport only
AUTH_DISABLED=false    # set true for local dev only

使用するドメインのキーのみが必要です。キーが欠落しているドメインは、起動時に自動的に無効化されます。

2. 開発用トークンの生成

npx mcp-suite gen-token
# eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

3. Claude Desktopへの追加

~/Library/Application Support/Claude/claude_desktop_config.json(macOS)に追加します:

{
  "mcpServers": {
    "mcp-suite": {
      "command": "npx",
      "args": ["mcp-suite"],
      "env": {
        "MCP_JWT_SECRET": "your-secret-here",
        "ALPHA_VANTAGE_API_KEY": "...",
        "ALCHEMY_API_KEY": "...",
        "OPENSEA_API_KEY": "...",
        "GITHUB_TOKEN": "..."
      }
    }
  }
}

4. HTTPサーバーとして起動(リモート/ホスト型デプロイメント)

npx mcp-suite --transport http --port 3000

これにより、GET /healthGET /tools、およびリモートMCPクライアント用のSSEエンドポイントが公開されます。


CLIコマンド

コマンド

説明

npx mcp-suite

サーバーを起動(stdioトランスポート、デフォルト)

npx mcp-suite --transport http

HTTP + SSEサーバーを起動

npx mcp-suite gen-token

開発用JWTを生成

npx mcp-suite list-tools

ドメインごとにグループ化されたすべてのアクティブなツールを表示


利用可能なツール

金融市場

Alpha Vantage および CoinGecko を利用。 要件: ALPHA_VANTAGE_API_KEY

ツール

説明

get_stock_quote

米国株式の価格、出来高、変動率(%)

get_forex_rate

通貨ペアの為替レート(ISO 4217)

get_crypto_price

暗号資産の価格、時価総額、24時間変動

get_market_news

センチメントスコア付きの金融ニュースヘッドライン

例:

{ "tool": "get_stock_quote", "arguments": { "ticker": "NVDA" } }

Web3 / DeFi

AlchemyOpenSea、および Blur を利用。 要件: ALCHEMY_API_KEY, OPENSEA_API_KEY

ツール

説明

get_nft_floor

OpenSea + Blur全体のベストフロア価格(ETH、Base、Arbitrum)

get_nft_recent_sales

特徴とマーケットプレイスを含む直近N件の販売履歴

get_wallet_balances

マルチチェーンのトークン + NFT保有状況、ENS解決

get_amm_reserves

Uniswap V2/V3プールの準備金と価格比率

get_dex_liquidity

サイズごとの取引スリッページ見積もり

例:

{ "tool": "get_nft_floor", "arguments": { "collection_slug": "boredapeyachtclub" } }

開発者ツール

GitHub API を利用。 要件: GITHUB_TOKEN

ツール

説明

get_repo_stats

スター数、フォーク数、イシュー数、言語、最終コミット

summarize_pr

PR差分の要約、レビュアー、CIチェック、マージステータス

get_pipeline_status

ブランチごとの最新のGitHub Actions実行状況

get_deployment_health

アクティブなデプロイメントURLとステータス

例:

{ "tool": "get_pipeline_status", "arguments": { "repo": "vercel/next.js", "branch": "canary" } }

ヘルスケア (FHIR)

HAPI FHIR R4 を利用。 要件: なし(デフォルトでパブリックサンドボックスを使用)またはカスタムエンドポイント用の FHIR_BASE_URL

HIPAAに関する注意: すべてのヘルスケアツールは、合成データのみを含むパブリックサンドボックスに接続します。実際の患者の健康情報(PHI)にはアクセスしません。本番環境で使用する場合は、FHIR_BASE_URL をHIPAA準拠のEHRエンドポイントに置き換え、適切なSMART on FHIR OAuth 2.0認証情報を設定してください。

ツール

説明

lookup_patient

患者の人口統計検索

get_observations

患者ごとのバイタルおよび検査結果

get_medications

患者ごとのアクティブな投薬リスト

例:

{ "tool": "lookup_patient", "arguments": { "name": "Smith", "birth_date": "1980-01-15" } }

認証

認証はデフォルトで有効です。すべてのツール呼び出しには有効なJWTが必要です。

本番環境

MCP_JWT_SECRET に強力なシークレットを設定してください。本番モードでは、これが設定されていないとサーバーは起動を拒否します。

開発環境

オプションA — 認証を完全に無効化(ローカルのみ):

AUTH_DISABLED=true

オプションB — 開発用JWTを使用:

npx mcp-suite gen-token

生成されたトークンを、MCPリクエストの _meta フィールド(stdio)または Authorization: Bearer ヘッダー(HTTP)で渡します。

JWT構造

{
  "sub": "your-client-id",
  "scope": "mcp:tools",
  "iat": 1713484800,
  "exp": 1716076800
}

アーキテクチャ

MCP Clients (Claude Desktop · Cursor · Windsurf · Custom Agents)
        │  MCP Protocol
┌───────▼────────────────────────────────────────┐
│  Transport Layer  (stdio  |  HTTP + SSE)        │
├────────────────────────────────────────────────┤
│  Auth Middleware  (JWT validation / bypass)     │
├────────────────────────────────────────────────┤
│  Tool Registry    (register · list · route)     │
├──────────┬──────────┬──────────┬───────────────┤
│Financial │  Web3    │ DevTools │  Healthcare   │
├──────────┴──────────┴──────────┴───────────────┤
│  Shared: Rate Limiter · Cache · Logger · Errors │
└─────────────────────────────────────────────────┘
         │           │          │          │
   Alpha Vantage  Alchemy   GitHub API  HAPI FHIR
   CoinGecko      OpenSea
                  Blur
  • キャッシュ: プロセス内LRU + TTLキャッシュ(node-cache)。TTLはドメインに適した値(暗号資産は15秒、GitHubリポジトリ統計は300秒)に設定されています。

  • レート制限: ドメインごとのトークンバケットにより、無料枠のAPIクォータを保護します。

  • エラー型: AuthErrorValidationErrorDomainUnavailableErrorUpstreamErrorRateLimitError — すべて構造化されたMCPエラーレスポンスを生成します。

  • ログ: すべてのツール呼び出しで構造化JSONを出力:ドメイン、ツール名、レイテンシ、キャッシュヒット、ステータス。


ドメインの追加

各ドメインは同じパターンに従います。新しいドメインを追加するには:

  1. src/domains/[name]/index.tsschemas.tsclient.tstools/ を作成します

  2. Domain オブジェクトをエクスポートします:

export const myDomain: Domain = {
  name: 'my-domain',
  isAvailable: () => !!config.MY_API_KEY,
  registerTools: (server) => { /* server.tool(...) calls */ }
}
  1. src/server.ts に登録します

  2. docs/API.md にツールをドキュメント化します

完全なパターンについては docs/TDD.md §5 および docs/CODING_STANDARDS.md を参照してください。


開発

git clone https://github.com/ayenisholah/mcp-suite.git
cd mcp-suite
npm install
cp .env.example .env   # fill in your API keys

npm run build          # compile TypeScript → dist/
npm run dev            # watch mode
npm run typecheck      # type check without emit
npm run lint           # ESLint
npm test               # unit tests (Vitest)
npm run test:coverage  # tests + coverage report

# Integration tests — hits real APIs, requires .env keys
RUN_INTEGRATION=true npm test

HTTPトランスポートエンドポイント

--transport http で実行する場合:

エンドポイント

認証

説明

GET /health

なし

ドメインごとの可用性ステータス

GET /tools

あり

登録されているすべてのツール(ドメインごとにグループ化)

POST /mcp

あり

MCPプロトコルエンドポイント(SSE)


エラーリファレンス

コード

説明

AUTH_ERROR

JWTの欠落、期限切れ、または署名が無効

VALIDATION_ERROR

入力がZodスキーマ検証に失敗

DOMAIN_UNAVAILABLE

ドメインのAPIキーが起動時に設定されていない

RATE_LIMITED

ドメインごとのレート制限を超過

UPSTREAM_ERROR

外部APIがエラーを返したか、タイムアウトした


ライセンス

MIT — LICENSE を参照


貢献

イシューやPRを歓迎します。提出前に docs/CODING_STANDARDS.md をお読みください。

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcp-nexus/mcp-suite'

If you have feedback or need assistance with the MCP directory API, please join our Discord server