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


Related MCP server: APIbase

インストール

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 /health、GET /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

Alchemy、OpenSea、および 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クォータを保護します。

  • エラー型: AuthError、ValidationError、DomainUnavailableError、UpstreamError、RateLimitError — すべて構造化されたMCPエラーレスポンスを生成します。

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


ドメインの追加

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

  1. src/domains/[name]/ に index.ts、schemas.ts、client.ts、tools/ を作成します

  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 をお読みください。

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    A production-ready TypeScript MCP server providing basic tools (add, echo, timestamp), resources (server info, greetings, data access), and prompt templates (analyze, code-review, summarize). Serves as a foundation for building custom MCP servers with extensible architecture.
    325 npm
    -
  • A
    license
    A
    quality
    A
    maintenance
    Unified MCP gateway for AI agents with 56+ tools and growing. Travel (Amadeus, Sabre GDS), e-commerce, local services, financial markets (Polymarket), and marketing APIs — all through a single endpoint. Pay-per-call via x402 micropayments in USDC.
    100
    8 npm
    10
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A unified MCP server providing AI agents with 40+ developer APIs including geolocation, crypto prices, DNS lookup, and web scraping. Enables natural language access to various tools through a single gateway.
    1
    MIT