mcp-suite
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 /health、GET /tools、およびリモートMCPクライアント用のSSEエンドポイントが公開されます。
CLIコマンド
コマンド | 説明 |
| サーバーを起動(stdioトランスポート、デフォルト) |
| HTTP + SSEサーバーを起動 |
| 開発用JWTを生成 |
| ドメインごとにグループ化されたすべてのアクティブなツールを表示 |
利用可能なツール
金融市場
Alpha Vantage および CoinGecko を利用。
要件: ALPHA_VANTAGE_API_KEY
ツール | 説明 |
| 米国株式の価格、出来高、変動率(%) |
| 通貨ペアの為替レート(ISO 4217) |
| 暗号資産の価格、時価総額、24時間変動 |
| センチメントスコア付きの金融ニュースヘッドライン |
例:
{ "tool": "get_stock_quote", "arguments": { "ticker": "NVDA" } }Web3 / DeFi
Alchemy、OpenSea、および Blur を利用。
要件: ALCHEMY_API_KEY, OPENSEA_API_KEY
ツール | 説明 |
| OpenSea + Blur全体のベストフロア価格(ETH、Base、Arbitrum) |
| 特徴とマーケットプレイスを含む直近N件の販売履歴 |
| マルチチェーンのトークン + NFT保有状況、ENS解決 |
| Uniswap V2/V3プールの準備金と価格比率 |
| サイズごとの取引スリッページ見積もり |
例:
{ "tool": "get_nft_floor", "arguments": { "collection_slug": "boredapeyachtclub" } }開発者ツール
GitHub API を利用。
要件: GITHUB_TOKEN
ツール | 説明 |
| スター数、フォーク数、イシュー数、言語、最終コミット |
| PR差分の要約、レビュアー、CIチェック、マージステータス |
| ブランチごとの最新のGitHub Actions実行状況 |
| アクティブなデプロイメント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認証情報を設定してください。
ツール | 説明 |
| 患者の人口統計検索 |
| 患者ごとのバイタルおよび検査結果 |
| 患者ごとのアクティブな投薬リスト |
例:
{ "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を出力:ドメイン、ツール名、レイテンシ、キャッシュヒット、ステータス。
ドメインの追加
各ドメインは同じパターンに従います。新しいドメインを追加するには:
src/domains/[name]/にindex.ts、schemas.ts、client.ts、tools/を作成しますDomainオブジェクトをエクスポートします:
export const myDomain: Domain = {
name: 'my-domain',
isAvailable: () => !!config.MY_API_KEY,
registerTools: (server) => { /* server.tool(...) calls */ }
}src/server.tsに登録します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 testHTTPトランスポートエンドポイント
--transport http で実行する場合:
エンドポイント | 認証 | 説明 |
| なし | ドメインごとの可用性ステータス |
| あり | 登録されているすべてのツール(ドメインごとにグループ化) |
| あり | MCPプロトコルエンドポイント(SSE) |
エラーリファレンス
コード | 説明 |
| JWTの欠落、期限切れ、または署名が無効 |
| 入力がZodスキーマ検証に失敗 |
| ドメインのAPIキーが起動時に設定されていない |
| ドメインごとのレート制限を超過 |
| 外部APIがエラーを返したか、タイムアウトした |
ライセンス
MIT — LICENSE を参照
貢献
イシューやPRを歓迎します。提出前に docs/CODING_STANDARDS.md をお読みください。
This server cannot be installed
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