mcpField
M
mcp-tool-factory

mcp-tool-factory

ローカル
github.com/HeshamFS開発ツール137 週間前に更新

mcp-tool-factory について

MCP Tool Factoryは、MCPサーバーを生成するTypeScriptツールです。説明文、API仕様、スキーマ、オントロジーからツールを構築する開発者向けで、MCPサーバーとしても動作し、コマンドラインとプログラム用インターフェースを備えています。

主な機能

  1. 01自然言語の説明から生成
  2. 02OpenAPIとGraphQLスキーマの取り込み
  3. 03データベーススキーマからツールを作成
  4. 04RDF、JSON-LD、YAMLオントロジーから生成
  5. 05ツール、リソース、プロンプトを出力
  6. 06生成したTypeScriptの検証

活用シーン

  1. 01API仕様からMCPサーバーを作成
  2. 02データベース操作をMCPツールとして公開
  3. 03オントロジーからサーバーコードを生成

MCP 対応

MCPサーバーとしても動作し、MCPクライアントに生成ツールとTypeScript検証ツールを公開します。生成されるサーバーはMCPのツール、リソース、プロンプトに対応し、Streamable HTTPトランスポートを使用します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"heshamfs-mcp-tool-factory": {
"command": "npx",
"args": [
"-y",
"@heshamfsalama/mcp-tool-factory"
],
"env": {
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
"CLAUDE_CODE_OAUTH_TOKEN": "<CLAUDE_CODE_OAUTH_TOKEN>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"GOOGLE_API_KEY": "<GOOGLE_API_KEY>"
}
}
}
}
起動コマンドnpx -y @heshamfsalama/mcp-tool-factory
設定が必要な環境変数
ANTHROPIC_API_KEYシークレットAnthropic Claude API key (one of the 4 provider keys is required)
CLAUDE_CODE_OAUTH_TOKENシークレットClaude Code OAuth token (one of the 4 provider keys is required)
OPENAI_API_KEYシークレットOpenAI GPT API key (one of the 4 provider keys is required)
GOOGLE_API_KEYシークレットGoogle Gemini API key (one of the 4 provider keys is required)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@heshamfsalama/mcp-tool-factory0.1.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP Tool Factory(TypeScript)

自然言語の説明、OpenAPI 仕様、データベーススキーマ、GraphQL スキーマ、オントロジーから、本番環境ですぐに使える MCP(Model Context Protocol)サーバーを生成します。

npm version npm downloads CI License: MIT TypeScript Node.js MCP

なぜ MCP なのか?

**Model Context Protocol(MCP)**は、AI アシスタントが外部データソースやツールに安全に接続できるようにするオープン標準です。MCP サーバーは、以下が使用できるツールを公開します。

  • Claude Code と Claude Desktop
  • OpenAI Agents SDK
  • Google ADK(Agent Development Kit)
  • LangChain と CrewAI
  • MCP 互換のあらゆるクライアント

MCP Tool Factory を使えば、本番環境ですぐに使える完全な MCP サーバーを数秒で生成できます。

機能

機能説明
自然言語平易な英語でツールを説明できます
OpenAPI インポートあらゆる REST API 仕様を MCP ツールに変換します
データベース CRUDSQLite または PostgreSQL のスキーマからツールを生成します
GraphQL インポートGraphQL スキーマを MCP ツールに変換します(クエリは読み取りに、ミューテーションは書き込みに変換)
オントロジーのインポートRDF/OWL、JSON-LD、または YAML のオントロジーから生成します
リソースとプロンプトMCP の 3 つのプリミティブ(ツール、リソース、プロンプト)すべてを完全にサポートします
10 種類の LLM プロバイダーAnthropic、OpenAI、Google、Mistral、DeepSeek、Groq、xAI、Azure、Cohere、および Vercel AI SDK 経由の Claude Code
コスト追跡呼び出しごとのコスト計算、予算上限、プロバイダー間のコスト比較
並列生成ツールの実装を並行して生成し、出力を高速化します
LLM 応答のキャッシュ設定可能な TTL により、同一の LLM 呼び出しを重複排除します
Streamable HTTP生成されるサーバーは最新の Streamable HTTP トランスポートを使用します
ウェブ検索より良い生成のため、API ドキュメントを自動取得します
本番環境対応ロギング、メトリクス、レート制限、リトライを標準搭載しています
型安全strict モードによる完全な TypeScript 対応
MCP Registryレジストリへの公開用に server.json を生成します
MCP サーバーとして利用可能Claude から直接利用し、会話を通じてオンザフライでサーバーを生成できます

MCP サーバーとして利用する

MCP Tool Factory 自体が MCP サーバーです!Claude Desktop、Claude Code、Cursor、または VS Code に追加すると、会話を通じて MCP サーバーを生成できます。

Tier 1 — 設定不要(Claude Code)

Claude Code は CLAUDE_CODE_OAUTH_TOKEN を自動で注入するため、環境変数は不要です。

claude mcp add mcp-tool-factory -- node /path/to/mcp-tool-factory-ts/bin/mcp-server.js
Tier 2 — 標準(プロバイダーを選択)

API キーを 1 つ設定するだけで使えます。Factory はプロバイダーを自動検出します。

Claude Desktop / Cursor / VS Code — MCP 設定(claude_desktop_config.json、.cursor/mcp.json、または .vscode/mcp.json)に追加します。

{
  "mcpServers": {
    "mcp-tool-factory": {
      "command": "node",
      "args": ["/path/to/mcp-tool-factory-ts/bin/mcp-server.js"],
      "env": {
        "ANTHROPIC_API_KEY": "your-key-here"
      }
    }
  }
}

以下のいずれの API キーも使用できます:ANTHROPIC_API_KEY、OPENAI_API_KEY、GOOGLE_API_KEY、MISTRAL_API_KEY、DEEPSEEK_API_KEY、GROQ_API_KEY、XAI_API_KEY、AZURE_OPENAI_API_KEY、COHERE_API_KEY。

ティア 3 — 完全な制御(プロバイダー + モデル + 予算)

MCP_FACTORY_PROVIDER、MCP_FACTORY_MODEL、MCP_FACTORY_BUDGET を使って、自動検出を上書きします。

{
  "mcpServers": {
    "mcp-tool-factory": {
      "command": "node",
      "args": ["/path/to/mcp-tool-factory-ts/bin/mcp-server.js"],
      "env": {
        "OPENAI_API_KEY": "your-key-here",
        "MCP_FACTORY_PROVIDER": "openai",
        "MCP_FACTORY_MODEL": "gpt-5.2",
        "MCP_FACTORY_BUDGET": "0.50"
      }
    }
  }
}
環境変数用途例
MCP_FACTORY_PROVIDER自動検出されたプロバイダーを上書きopenai、groq、deepseek
MCP_FACTORY_MODELデフォルトのモデルを上書きgpt-5.2、deepseek-chat
MCP_FACTORY_BUDGET生成ごとの予算上限(USD)0.50

完全な制御を行う Claude Code CLI:

claude mcp add mcp-tool-factory \
  -e DEEPSEEK_API_KEY=your-key \
  -e MCP_FACTORY_PROVIDER=deepseek \
  -e MCP_FACTORY_MODEL=deepseek-chat \
  -e MCP_FACTORY_BUDGET=0.25 \
  -- node /path/to/mcp-tool-factory-ts/bin/mcp-server.js
利用可能なツール
ツール説明
generate_mcp_server自然言語による説明から生成
generate_from_openapiOpenAPI 仕様から生成
generate_from_databaseデータベーススキーマから生成
generate_from_graphqlGraphQL スキーマから生成
generate_from_ontologyRDF/OWL、JSON-LD、または YAML オントロジーから生成
validate_typescriptTypeScript コードを検証
list_providers利用可能な LLM プロバイダーを一覧表示
get_factory_infoファクトリーの機能を取得
会話の例

あなた: リポジトリの一覧表示、イシューの作成、プルリクエストの管理を行うツールを備えた GitHub API 用の MCP サーバーを作成してください

Claude: generate_mcp_server ツールを使用

次のツールを備えた完全な MCP サーバーを生成しました。

  • list_repositories - ユーザーのリポジトリを一覧表示
  • create_issue - 新しいイシューを作成
  • list_pull_requests - リポジトリの PR を一覧表示
  • merge_pull_request - PR をマージ

これらのファイルをプロジェクトに書き込みます……

クイックスタート

インストール
# Global installation
npm install -g @heshamfsalama/mcp-tool-factory

# Or use npx
npx @heshamfsalama/mcp-tool-factory generate "Create tools for managing a todo list"
API キーを設定

少なくとも 1 つのプロバイダー API キーが必要です。

# Anthropic Claude (recommended)
export ANTHROPIC_API_KEY=your-key-here

# Or Claude Code OAuth
export CLAUDE_CODE_OAUTH_TOKEN=your-token-here

# Or any other supported provider
export OPENAI_API_KEY=your-key-here
export GOOGLE_API_KEY=your-key-here
export MISTRAL_API_KEY=your-key-here
export DEEPSEEK_API_KEY=your-key-here
export GROQ_API_KEY=your-key-here
export XAI_API_KEY=your-key-here
export AZURE_OPENAI_API_KEY=your-key-here
export COHERE_API_KEY=your-key-here
最初のサーバーを生成
# From natural language
mcp-factory generate "Create tools for fetching weather data by city and converting temperatures"

# From OpenAPI spec
mcp-factory from-openapi ./api-spec.yaml

# From database
mcp-factory from-database ./data.db

# From GraphQL schema
mcp-factory from-graphql ./schema.graphql

# From ontology
mcp-factory from-ontology ./ontology.owl --format rdf

使用方法

自然言語による生成
mcp-factory generate "Create tools for managing a todo list with priorities" \
  --name todo-server \
  --output ./servers/todo \
  --web-search \
  --logging \
  --metrics
OpenAPI 仕様
# From local file
mcp-factory from-openapi ./openapi.yaml --name my-api-server

# With custom base URL
mcp-factory from-openapi ./spec.json --base-url https://api.example.com
データベーススキーマ
# SQLite
mcp-factory from-database ./myapp.db --tables users,posts,comments

# PostgreSQL
mcp-factory from-database "postgresql://user:pass@localhost/mydb" --type postgresql
GraphQL スキーマ
# From a GraphQL SDL file
mcp-factory from-graphql ./schema.graphql --name my-graphql-server

# From a URL endpoint
mcp-factory from-graphql https://api.example.com/graphql --name my-api-server

GraphQL のクエリは読み取り専用の MCP ツールに、ミューテーションは書き込みツールにマッピングされます。GraphQL の型は、Zod の検証スキーマに自動変換されます。

オントロジー
# From RDF/OWL (.owl, .rdf, .ttl)
mcp-factory from-ontology ./ontology.owl --format rdf --name knowledge-server

# From JSON-LD (.jsonld)
mcp-factory from-ontology ./schema.jsonld --format jsonld --name linked-data-server

# From custom YAML ontology
mcp-factory from-ontology ./domain.yaml --format yaml --name domain-server

OWL のクラスは MCP リソースに、ObjectProperty はツールに、DataProperty はツールのパラメーターにマッピングされます。

テストとサーバーの起動
# Run tests
mcp-factory test ./servers/my-server

# Start server for testing
mcp-factory serve ./servers/my-server

生成されるサーバーの構造

servers/my-server/
├── src/
│   └── index.ts          # MCP server with tools, resources, and prompts
├── tests/
│   └── tools.test.ts     # Vitest tests (InMemoryTransport)
├── package.json          # Dependencies
├── tsconfig.json         # TypeScript config
├── Dockerfile            # Container deployment
├── README.md             # Usage documentation
├── skill.md              # Claude Code skill file
├── server.json           # MCP Registry manifest
├── EXECUTION_LOG.md      # Generation trace (optional)
└── .github/
    └── workflows/
        └── ci.yml        # GitHub Actions CI/CD

生成されるサーバーは、テストを簡単に行える createServer() ファクトリー関数をエクスポートします。サーバーは Streamable HTTP トランスポートを使用し、単一の /mcp POST エンドポイントと /health GET エンドポイントを備えています。テストでは InMemoryTransport.createLinkedPair() を使用し、vitest で高速かつ信頼性の高いプロセス内テストを実行します。

CLI リファレンス

コマンド説明
generate <description>自然言語から MCP サーバーを生成
from-openapi <spec>OpenAPI 仕様から生成
from-database <path>データベーススキーマから生成
from-graphql <schema>GraphQL スキーマから生成
from-ontology <file>RDF/OWL、JSON-LD、または YAML オントロジーから生成
test <server-path>生成されたサーバーのテストを実行
serve <server-path>テスト用にサーバーを起動
infoファクトリー情報を表示
生成オプション
mcp-factory generate "..." \
  --output, -o <path>           # Output directory (default: ./servers)
  --name, -n <name>             # Server name
  --description, -d <desc>      # Package description
  --github-username, -g <user>  # GitHub username for MCP Registry
  --version, -v <ver>           # Server version (default: 1.0.0)
  --provider, -p <provider>     # LLM provider (anthropic, openai, google, mistral, deepseek, groq, xai, azure, cohere, claude_code)
  --model, -m <model>           # Specific model to use
  --web-search, -w              # Search web for API documentation
  --auth <vars...>              # Environment variables for auth
  --health-check                # Include health check endpoint (default: true)
  --logging                     # Enable structured logging (default: true)
  --metrics                     # Enable Prometheus metrics
  --rate-limit <n>              # Rate limiting (requests per minute)
  --retries                     # Enable retry logic (default: true)
  --budget <amount>             # Maximum spend in USD (aborts if exceeded)
  --compare-costs               # Show cost comparison across providers before generating

設定

環境変数
変数説明必須
ANTHROPIC_API_KEYAnthropic Claude API キー少なくとも 1 つ
CLAUDE_CODE_OAUTH_TOKENClaude Code OAuth トークンプロバイダーキー
OPENAI_API_KEYOpenAI API キーが必要です
GOOGLE_API_KEYGoogle Gemini API キー生成に必要
MISTRAL_API_KEYMistral AI API キー
DEEPSEEK_API_KEYDeepSeek API キー
GROQ_API_KEYGroq API キー
XAI_API_KEYxAI Grok API キー
AZURE_OPENAI_API_KEYAzure OpenAI API キー
COHERE_API_KEYCohere API キー
LLM プロバイダー

すべてのプロバイダーは、遅延動的インポートを使用する統合 UnifiedLLMProvider クラスを介して Vercel AI SDK を利用します。実行時に読み込まれるのは、選択したプロバイダー用の @ai-sdk/* パッケージのみです。

プロバイダーモデル最適な用途
Anthropicclaude-opus-4-6, claude-sonnet-4-5, claude-haiku-4-5最高品質
OpenAIgpt-5.2, gpt-5.2-codex, o3, o4-mini高速生成
Googlegemini-3-pro, gemini-3-flash, gemini-2.5-proコスト効率
Mistralmistral-large, codestral, magistral欧州の AI、コード
DeepSeekdeepseek-chat, deepseek-reasoner極めて低コスト
Groqllama-3.3-70b, llama-4-maverick超高速推論
xAIgrok-4, grok-3, grok-code-fast推論
Azuregpt-4o (Azure-hosted)エンタープライズ向けコンプライアンス
Coherecommand-a, command-r+RAG、エンタープライズ検索
Claude Codeclaude-sonnet-4-5 (OAuth)Claude Code ユーザー

プログラムからの使用

基本的な使い方
import { ToolFactoryAgent, writeServerToDirectory, formatCost } from '@heshamfsalama/mcp-tool-factory';

// Create agent (auto-detects provider from env vars)
const agent = new ToolFactoryAgent();

// Generate from description
const server = await agent.generateFromDescription(
  'Create tools for managing a todo list with priorities',
  {
    serverName: 'todo-server',
    webSearch: true,
    parallel: true,           // Enable parallel generation (default)
    maxConcurrency: 5,        // Max concurrent LLM calls (default)
    budget: 1.00,             // Optional: abort if cost exceeds $1.00
    productionConfig: {
      enableLogging: true,
      enableMetrics: true,
    },
  }
);

// Cost tracking — see how much the generation cost
if (server.executionLog) {
  console.log(`Cost: ${formatCost(server.executionLog.totalCost)}`);
}

// Write to directory
await writeServerToDirectory(server, './servers/todo');
OpenAPI から
import { ToolFactoryAgent, writeServerToDirectory } from '@heshamfsalama/mcp-tool-factory';
import { readFileSync } from 'fs';
import yaml from 'js-yaml';

const spec = yaml.load(readFileSync('./openapi.yaml', 'utf-8'));
const agent = new ToolFactoryAgent({ requireLlm: false });

const server = await agent.generateFromOpenAPI(spec, {
  serverName: 'my-api-server',
  baseUrl: 'https://api.example.com',
});

await writeServerToDirectory(server, './servers/api');
データベースから
import { ToolFactoryAgent, writeServerToDirectory } from '@heshamfsalama/mcp-tool-factory';

const agent = new ToolFactoryAgent({ requireLlm: false });

// SQLite (auto-detected from file path)
const server = await agent.generateFromDatabase('./data/app.db', {
  serverName: 'app-database-server',
  tables: ['users', 'posts', 'comments'],
});

// PostgreSQL (auto-detected from connection string)
const pgServer = await agent.generateFromDatabase(
  'postgresql://user:pass@localhost/mydb',
  { serverName: 'postgres-server' }
);

await writeServerToDirectory(server, './servers/app-db');
GraphQL から
import { ToolFactoryAgent, writeServerToDirectory } from '@heshamfsalama/mcp-tool-factory';
import { readFileSync } from 'fs';

const schema = readFileSync('./schema.graphql', 'utf-8');
const agent = new ToolFactoryAgent({ requireLlm: false });

const server = await agent.generateFromGraphQL(schema, {
  serverName: 'my-graphql-server',
});

await writeServerToDirectory(server, './servers/graphql');
オントロジーから
import { ToolFactoryAgent, writeServerToDirectory } from '@heshamfsalama/mcp-tool-factory';
import { readFileSync } from 'fs';

const ontologyData = readFileSync('./ontology.owl', 'utf-8');
const agent = new ToolFactoryAgent({ requireLlm: false });

const server = await agent.generateFromOntology(ontologyData, {
  serverName: 'knowledge-server',
  format: 'rdf',
});

await writeServerToDirectory(server, './servers/knowledge');
コード検証
import { validateTypeScriptCode, validateGeneratedServer } from '@heshamfsalama/mcp-tool-factory';

// Validate TypeScript syntax
const result = await validateTypeScriptCode(code);
// { valid: false, errors: [{ line: 4, column: 1, message: "'}' expected." }] }

// Validate complete server
const serverResult = await validateGeneratedServer(serverCode);
// { valid: true, errors: [], summary: 'Generated server code is syntactically valid' }

AI フレームワークとの連携

Claude Code / Claude Desktop

MCP 設定(claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["tsx", "./servers/my-server/src/index.ts"]
    }
  }
}
OpenAI Agents SDK
from agents import Agent
from agents.mcp import MCPServerStdio

async with MCPServerStdio(
    command="npx",
    args=["tsx", "./servers/my-server/src/index.ts"]
) as mcp:
    agent = Agent(
        name="My Agent",
        tools=mcp.list_tools()
    )
Google ADK
from google.adk.tools.mcp_tool import MCPToolset

tools = MCPToolset(
    connection_params=StdioServerParameters(
        command="npx",
        args=["tsx", "./servers/my-server/src/index.ts"]
    )
)
LangChain
from langchain_mcp_adapters.client import MCPClient

client = MCPClient(
    command="npx",
    args=["tsx", "./servers/my-server/src/index.ts"]
)
tools = client.get_tools()

本番環境向け機能

構造化ログ
mcp-factory generate "..." --logging

pino を使用した構造化 JSON ロギングを備えたサーバーを生成します。

const logger = pino({ level: 'info' });
logger.info({ tool: 'get_weather', params }, 'Tool called');
Prometheus メトリクス
mcp-factory generate "..." --metrics

prom-client のメトリクスを備えたサーバーを生成します。

  • mcp_tool_calls_total - ツール呼び出し数のカウンター
  • mcp_tool_duration_seconds - 実行時間のヒストグラム
レート制限
mcp-factory generate "..." --rate-limit 100

スライディングウィンドウ方式により、クライアントごとにレート制限を設定できます。

リトライロジック
mcp-factory generate "..." --retries

一時的な障害に対して、指数バックオフによるリトライを行います。

構造化エラーコード

生成されるサーバーでは、一貫したエラー処理のために構造化エラーコードを使用します。

  • INVALID_INPUT - 形式不正または無効なツールパラメーター
  • NOT_FOUND - 要求されたリソースが存在しません
  • AUTH_ERROR - 認証または認可の失敗
  • INTERNAL_ERROR - 予期しないサーバーエラー
強化されたヘルスチェック

/health エンドポイントは、詳細なサーバーの状態を返します。

{
  "status": "ok",
  "version": "1.0.0",
  "uptime": 3600,
  "memory": { "rss": 52428800, "heapUsed": 20971520 },
  "transport": "streamable-http"
}

MCP Registry への公開

生成したサーバーを MCP Registry に公開して、見つけやすくしましょう。

Registry 対応で生成する
mcp-factory generate "Create weather tools" \
  --name weather-server \
  --github-username your-github-username \
  --description "Weather tools for Claude" \
  --version 1.0.0

これにより、Registry に準拠したファイルが生成されます。

package.json:

{
  "name": "@your-github-username/weather-server",
  "mcpName": "io.github.your-github-username/weather-server"
}

server.json:

{
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "name": "io.github.your-github-username/weather-server",
  "packages": [{
    "registryType": "npm",
    "identifier": "@your-github-username/weather-server",
    "transport": { "type": "stdio" }
  }],
  "tools": [...]
}
公開ワークフロー
# 1. Build and publish to npm
cd ./servers/weather-server
npm install && npm run build
npm publish --access public

# 2. Install mcp-publisher
brew install modelcontextprotocol/tap/mcp-publisher

# 3. Authenticate
mcp-publisher login github

# 4. Publish to registry
mcp-publisher publish

詳しい手順については、公開ガイドを参照してください。

アーキテクチャ

┌───────────────────────────────────────────────────────────────────────┐
│                         MCP Tool Factory                               │
├───────────────────────────────────────────────────────────────────────┤
│  Input Sources                                                         │
│  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌─────────┐│
│  │ Natural   │ │  OpenAPI  │ │ Database  │ │ GraphQL   │ │Ontology ││
│  │ Language  │ │   Spec    │ │  Schema   │ │  Schema   │ │RDF/YAML ││
│  └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └────┬────┘│
│        └──────────┬───┴─────────────┴─────────────┴────────────┘     │
│                   ▼                                                    │
│  ┌────────────────────────────────────────────────────────────────┐   │
│  │                     ToolFactoryAgent                            │   │
│  │  ┌─────────────────────────────────────────────────────────┐   │   │
│  │  │  UnifiedLLMProvider (Vercel AI SDK)                      │   │   │
│  │  │  Anthropic │ OpenAI │ Google │ Mistral │ DeepSeek       │   │   │
│  │  │  Groq │ xAI │ Azure │ Cohere + Claude Code OAuth       │   │   │
│  │  └─────────────────────────────────────────────────────────┘   │   │
│  │  ┌──────────────┐ ┌──────────────┐ ┌───────────────────────┐  │   │
│  │  │  LLM Cache   │ │  Cost        │ │ Parallel Generation   │  │   │
│  │  │  (TTL-based) │ │  Tracking    │ │ (max concurrency: 5)  │  │   │
│  │  └──────────────┘ └──────────────┘ └───────────────────────┘  │   │
│  └────────────────────────────────────────────────────────────────┘   │
│                   │                                                    │
│                   ▼                                                    │
│  ┌────────────────────────────────────────────────────────────────┐   │
│  │                       Generators                                │   │
│  │  ServerGenerator  │  DocsGenerator  │  TestsGenerator          │   │
│  └────────────────────────────────────────────────────────────────┘   │
│                   │                                                    │
│                   ▼                                                    │
│  ┌────────────────────────────────────────────────────────────────┐   │
│  │                     GeneratedServer                             │   │
│  │  Tools │ Resources │ Prompts │ Tests │ Docs │ Dockerfile       │   │
│  └────────────────────────────────────────────────────────────────┘   │
│                   │                                                    │
│                   ▼                                                    │
│  ┌────────────────────────────────────────────────────────────────┐   │
│  │                Streamable HTTP Transport                        │   │
│  │          POST /mcp  │  GET /health                             │   │
│  └────────────────────────────────────────────────────────────────┘   │
└───────────────────────────────────────────────────────────────────────┘

開発

# Clone the repository
git clone https://github.com/HeshamFS/mcp-tool-factory-ts.git
cd mcp-tool-factory-ts

# Install dependencies
pnpm install

# Build
pnpm run build

# Run tests
pnpm test

# Type check
pnpm run typecheck

# Lint
pnpm run lint

プロジェクト構成

mcp-tool-factory-ts/
├── src/
│   ├── agent/              # Main ToolFactoryAgent
│   ├── auth/               # OAuth2 providers
│   ├── cache/              # LLM response caching with configurable TTL
│   ├── cli/                # Command-line interface
│   ├── config/             # Configuration management
│   ├── database/           # Database introspection (SQLite, PostgreSQL)
│   ├── execution-logger/   # Execution logging
│   ├── generators/         # Code generators (server, docs, tests)
│   ├── graphql/            # GraphQL SDL parsing and server generation
│   ├── middleware/         # Validation middleware
│   ├── models/             # Data models
│   ├── observability/      # Telemetry and tracing
│   ├── ontology/           # Ontology parsing (RDF/OWL, JSON-LD, YAML)
│   ├── openapi/            # OpenAPI spec parsing
│   ├── production/         # Production code generation
│   ├── prompts/            # LLM prompt templates
│   ├── providers/          # LLM providers (10 providers via Vercel AI SDK + Claude Code)
│   ├── security/           # Security scanning
│   ├── server/             # MCP server mode (factory-as-a-server)
│   ├── templates/          # Handlebars templates for generated files
│   ├── validation/         # Code validation and Zod schemas
│   └── web-search/         # Web search integration
├── docs/                   # Documentation
├── tests/                  # Test files
└── dist/                   # Built output

ドキュメント

トラブルシューティング

よくある問題

API キーが見つからない

# Check your environment
echo $ANTHROPIC_API_KEY

# Set it
export ANTHROPIC_API_KEY=your-key-here

生成されたサーバーが起動しない

# Install dependencies first
cd ./servers/my-server
npm install
npx tsx src/index.ts

TypeScript エラー

# Validate generated code
import { validateGeneratedServer } from '@heshamfsalama/mcp-tool-factory';
const result = await validateGeneratedServer(code);
console.log(result.errors);

その他の解決策については、トラブルシューティングガイドを参照してください。

変更履歴

v0.3.0
  • Vercel AI SDK への移行 - すべての LLM プロバイダーが、遅延動的インポートに対応した単一の UnifiedLLMProvider クラスを通じて Vercel AI SDK を使用するようになりました。プロバイダー固有の実装を約 473 行削除しました。選択したプロバイダー用の @ai-sdk/* パッケージのみが実行時に読み込まれます。
  • 10 種類の LLM プロバイダー - 既存の Anthropic、OpenAI、Google、Claude Code プロバイダーに加えて、Mistral、DeepSeek、Groq、xAI、Azure、Cohere を追加しました。すべて同じ統合インターフェースを使用します。
  • コスト追跡 - すべての LLM 呼び出しで、50 種類以上のモデルを対象とした組み込みの料金表を使って推定コストを計算するようになりました。呼び出しごとのコスト、生成の合計コスト、フェーズごとの内訳(ツール抽出、実装、テスト、ドキュメント)を表示します。詳細なトークン内訳には、AI SDK によるキャッシュ読み取り/書き込みトークンと推論トークンも含まれます。
  • 予算上限(--budget <amount>)- USD で最大支出額を設定します。累積コストが予算を超えると、BudgetExceededError によって生成を正常に中止します。
  • プロバイダーのコスト比較(--compare-costs)- 生成前に、利用可能なすべてのプロバイダーでコストを推定し、並べ替えた比較表を表示します。追加の API 呼び出しは不要です。静的な料金表を使用します。
  • フェーズごとのコスト内訳 - CLI の出力と実行ログに、どの生成ステップに最もコストがかかったか(ツール抽出、実装、リソース抽出、プロンプト抽出、テスト生成、ドキュメント生成)が表示されます。
  • OpenAI 推論モデルのサポート - OpenAI o-series および gpt-5.x モデルでサポートされていない場合、Temperature パラメーターが自動的に省略されます。
v0.2.0
  • Streamable HTTP トランスポート - 生成されるサーバーは、Express/SSE(2025 年 6 月に非推奨)ではなく、ネイティブの http モジュールを使用する StreamableHTTPServerTransport を使います。単一の /mcp POST エンドポイントと /health GET エンドポイントを備えています。
  • MCP SDK v1.26.0 - ^1.0.0 から ^1.26.0 に更新しました。
  • リソースとプロンプト - 3 つすべての MCP プリミティブを完全にサポートしました。リソースは構造化データ(ドキュメント、DB レコード、ファイルツリー)を公開します。プロンプトは、LLM のワークフローをガイドする再利用可能なテンプレートを提供します。エージェントは LLM を通じて、説明からリソースとプロンプトを自動的に抽出します。
  • GraphQL 入力ソース - 新しい from-graphql CLI コマンドと generate_from_graphql MCP ツールを追加しました。クエリは読み取りツールに、ミューテーションは書き込みツールに対応し、GraphQL の型は Zod スキーマに変換されます。
  • オントロジー入力ソース - 新しい from-ontology CLI コマンドと generate_from_ontology MCP ツールを追加しました。RDF/OWL、JSON-LD、カスタム YAML 形式をサポートします。OWL Class はリソースに、ObjectProperty はツールに、DataProperty はツールのパラメーターに対応します。
  • LLM 応答のキャッシュ - 設定可能な TTL を使って、同一の LLM 呼び出しを重複排除します。skipCache オプションでキャッシュを迂回できます。
  • 並列生成 - デフォルトでツールの実装を並行して生成します(parallel: true、maxConcurrency: 5)。複数のツールを持つサーバーでは、大幅な速度向上が得られます。
  • InMemoryTransport によるテスト - 生成されるテストでは、サブプロセスの起動ではなく InMemoryTransport.createLinkedPair() を使用します。テスト可能にするため、サーバーは createServer() ファクトリー関数をエクスポートします。
  • 本番環境向けの強化 - ツールハンドラーにレート制限、構造化ログ、メトリクス、処理時間の追跡を組み込みました。バージョン、稼働時間、メモリ、トランスポート情報を含むヘルスチェックを強化しました。構造化されたエラーコードとして、INVALID_INPUT、NOT_FOUND、AUTH_ERROR、INTERNAL_ERROR を追加しました。
v0.1.0
  • TypeScript の初回リリース
  • Claude、Claude Code、OpenAI、Google Gemini による自然言語生成
  • OpenAPI 3.0 以降の仕様のインポート
  • データベース CRUD の生成(SQLite、PostgreSQL)
  • 本番環境向け機能(ログ、メトリクス、レート制限)
  • MCP Registry の server.json 生成
  • TypeScript 構文の検証
  • API ドキュメントのウェブ検索
  • GitHub Actions CI/CD の生成
  • Claude を使ったオンザフライ生成向けの MCP サーバーモード

ライセンス

MIT

Links

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。