mcp-tool-factory について
MCP Tool Factoryは、MCPサーバーを生成するTypeScriptツールです。説明文、API仕様、スキーマ、オントロジーからツールを構築する開発者向けで、MCPサーバーとしても動作し、コマンドラインとプログラム用インターフェースを備えています。
主な機能
- 01自然言語の説明から生成
- 02OpenAPIとGraphQLスキーマの取り込み
- 03データベーススキーマからツールを作成
- 04RDF、JSON-LD、YAMLオントロジーから生成
- 05ツール、リソース、プロンプトを出力
- 06生成したTypeScriptの検証
活用シーン
- 01API仕様からMCPサーバーを作成
- 02データベース操作をMCPツールとして公開
- 03オントロジーからサーバーコードを生成
MCP 対応
MCPサーバーとしても動作し、MCPクライアントに生成ツールとTypeScript検証ツールを公開します。生成されるサーバーはMCPのツール、リソース、プロンプトに対応し、Streamable HTTPトランスポートを使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @heshamfsalama/mcp-tool-factoryANTHROPIC_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Tool Factory(TypeScript)
自然言語の説明、OpenAPI 仕様、データベーススキーマ、GraphQL スキーマ、オントロジーから、本番環境ですぐに使える MCP(Model Context Protocol)サーバーを生成します。
なぜ 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 ツールに変換します |
| データベース CRUD | SQLite または 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_openapi | OpenAPI 仕様から生成 |
generate_from_database | データベーススキーマから生成 |
generate_from_graphql | GraphQL スキーマから生成 |
generate_from_ontology | RDF/OWL、JSON-LD、または YAML オントロジーから生成 |
validate_typescript | TypeScript コードを検証 |
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_KEY | Anthropic Claude API キー | 少なくとも 1 つ |
CLAUDE_CODE_OAUTH_TOKEN | Claude Code OAuth トークン | プロバイダーキー |
OPENAI_API_KEY | OpenAI API キー | が必要です |
GOOGLE_API_KEY | Google Gemini API キー | 生成に必要 |
MISTRAL_API_KEY | Mistral AI API キー | |
DEEPSEEK_API_KEY | DeepSeek API キー | |
GROQ_API_KEY | Groq API キー | |
XAI_API_KEY | xAI Grok API キー | |
AZURE_OPENAI_API_KEY | Azure OpenAI API キー | |
COHERE_API_KEY | Cohere API キー |
LLM プロバイダー
すべてのプロバイダーは、遅延動的インポートを使用する統合 UnifiedLLMProvider クラスを介して Vercel AI SDK を利用します。実行時に読み込まれるのは、選択したプロバイダー用の @ai-sdk/* パッケージのみです。
| プロバイダー | モデル | 最適な用途 |
|---|---|---|
| Anthropic | claude-opus-4-6, claude-sonnet-4-5, claude-haiku-4-5 | 最高品質 |
| OpenAI | gpt-5.2, gpt-5.2-codex, o3, o4-mini | 高速生成 |
| gemini-3-pro, gemini-3-flash, gemini-2.5-pro | コスト効率 | |
| Mistral | mistral-large, codestral, magistral | 欧州の AI、コード |
| DeepSeek | deepseek-chat, deepseek-reasoner | 極めて低コスト |
| Groq | llama-3.3-70b, llama-4-maverick | 超高速推論 |
| xAI | grok-4, grok-3, grok-code-fast | 推論 |
| Azure | gpt-4o (Azure-hosted) | エンタープライズ向けコンプライアンス |
| Cohere | command-a, command-r+ | RAG、エンタープライズ検索 |
| Claude Code | claude-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
ドキュメント
- はじめに
- CLI リファレンス
- API リファレンス
- 例
- OpenAPI ガイド
- データベースガイド
- プロバイダーガイド
- 本番環境向け機能
- アーキテクチャ
- トラブルシューティング
- コントリビューション
トラブルシューティング
よくある問題
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を使います。単一の/mcpPOST エンドポイントと/healthGET エンドポイントを備えています。 - MCP SDK v1.26.0 -
^1.0.0から^1.26.0に更新しました。 - リソースとプロンプト - 3 つすべての MCP プリミティブを完全にサポートしました。リソースは構造化データ(ドキュメント、DB レコード、ファイルツリー)を公開します。プロンプトは、LLM のワークフローをガイドする再利用可能なテンプレートを提供します。エージェントは LLM を通じて、説明からリソースとプロンプトを自動的に抽出します。
- GraphQL 入力ソース - 新しい
from-graphqlCLI コマンドとgenerate_from_graphqlMCP ツールを追加しました。クエリは読み取りツールに、ミューテーションは書き込みツールに対応し、GraphQL の型は Zod スキーマに変換されます。 - オントロジー入力ソース - 新しい
from-ontologyCLI コマンドとgenerate_from_ontologyMCP ツールを追加しました。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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。