Unified MCP Client Library for TypeScript について
Easy-MCP-Useは、ツール呼び出しに対応するLangChainのLLMを1つ以上のMCPサーバーにつなぐ、開発者向けのオープンソースTypeScriptライブラリです。ツールを使うエージェントの構築に利用できます。
主な機能
- 01ツール呼び出し対応LLMとMCPサーバーの接続
- 02複数MCPサーバーの設定
- 03エージェントタスクごとのサーバー選択
- 04HTTP経由のサーバー接続
- 05TypeScriptライブラリとAPI
活用シーン
- 01ウェブ閲覧ツールを使うエージェントの構築
- 02閲覧サーバーとファイルサーバーのツール併用
- 03タスクを指定したMCPサーバーに振り分け
MCP 対応
MCPクライアントを提供し、複数サーバーやHTTP接続を含むMCPサーバーの設定と接続を行います。エージェントは各サーバーのツールを利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
English|简体中文
TypeScript 向け統合 MCP クライアントライブラリ
🌐 Easy-MCP-Use は、クローズドソースのアプリケーションクライアントを使わずに、あらゆる LLM をあらゆる MCP サーバーに接続し、ツールにアクセスできるカスタムエージェントを構築するためのオープンソース TypeScript ライブラリです。
💡 TypeScript の完全なサポートにより、開発者はあらゆる LLM をウェブ閲覧やファイル操作などのツールに簡単に接続できます。
特長
✨ 主な特長
| 特長 | 説明 |
|---|---|
| 🔄 使いやすさ | わずか 6 行の TypeScript コードで、初めての MCP 対応エージェントを作成できます |
| 🤖 LLM の柔軟性 | ツール呼び出しに対応する、LangChain がサポートするあらゆる LLM(OpenAI、Anthropic、Groq、LLama など)で動作します |
| 🌐 HTTP サポート | 特定の HTTP ポートで実行中の MCP サーバーに直接接続できます |
| ⚙️ 動的なサーバー選択 | TODO エージェントは、利用可能なプールからタスクに最適な MCP サーバーを動的に選択できます |
| 🧩 複数サーバーのサポート | TODO 1 つのエージェントで複数の MCP サーバーを同時に使用できます |
| 🛡️ ツールの制限 | TODO ファイルシステムやネットワークアクセスなど、危険性のあるツールを制限できます |
| 📝 型安全性 | TODO すべての API と設定に型定義があり、TypeScript を完全にサポートします |
クイックスタート
npm を使用する場合:
npm install easy-mcp-use
ソースからインストールする場合:
git clone https://github.com/dforel/easy-mcp-use.git
cd easy-mcp-use
npm install
npm run build
LangChain プロバイダーのインストール
easy-mcp-use は LangChain を通じてさまざまな LLM プロバイダーと連携します。選択した LLM に対応する LangChain プロバイダーパッケージをインストールする必要があります。例:
# For OpenAI
npm install @langchain/openai
# For Anthropic
npm install @langchain/anthropic
# For other providers, check the [LangChain chat models documentation](https://js.langchain.com/docs/integrations/chat/)
使用するプロバイダーの API キーを .env ファイルに追加してください。
OPENAI_API_KEY=
ANTHROPIC_API_KEY=
重要:easy-mcp-use で使用できるのは、ツール呼び出しに対応したモデルのみです。選択したモデルが関数呼び出しまたはツールの使用をサポートしていることを確認してください。
エージェントを起動する
import { MCPClient } from 'easy-mcp-use';
import { MCPAgent, MCPAgentOptions } from 'easy-mcp-use';
import { ChatOpenAI } from '@langchain/openai';
import dotenv from 'dotenv';
dotenv.config();
const openAIApiKey = process.env.openRouteApiKey;
if (!openAIApiKey) {
throw new Error("openAIApiKey environment variable is not set");
}
console.log(`openAIApiKey: ${openAIApiKey}`);
async function main() {
let config = {"mcpServers": {"http": {"url": "http://localhost:3001/sse"}}}
// 从配置文件创建客户端
const client = MCPClient.fromConfig( config );
try {
const chat = new ChatOpenAI(
{
modelName: 'google/gemini-2.0-flash-exp:free',
streaming: true,
openAIApiKey: openAIApiKey,
configuration: {
baseURL: 'https://openrouter.ai/api/v1',
}
}
);
let options = {
client: client,
// verbose: true,
maxSteps: 30,
llm: chat,
}
let agent = new MCPAgent(options)
let result = agent.run(
`
100 rmb can exchange how much doller?
`
);
console.log( JSON.stringify(result) );
} finally {
// console.info('finally');
}
}
main().catch(console.error);
次のように、設定ファイルからサーバー設定を追加することもできます。
const client = MCPClient.fromConfigFile(
path.join(__dirname, 'browser_mcp.json')
);
設定ファイルの例(browser_mcp.json):
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {
"DISPLAY": ":1"
}
}
}
}
その他の設定、モデルなどについては、ドキュメントをご覧ください。
使用例
HTTP サーバーの例
サンプルプロジェクトはこちらです: easy-mcp-use-example (https://github.com/dforel/easy-mcp-use-examples)
Playwright を使ったウェブ閲覧
import { MCPClient } from '../src/client';
import path from 'path';
import { MCPAgent, MCPAgentOptions } from '../src/agents/mcpagent';
// import { ChatOpenAI } from 'langchain/core/language_models/chat_openai';
// import { OpenAI } from "@langchain/llms/openai";
import { ChatOpenAI } from '@langchain/openai';
import { logger } from '../src/logging';
import dotenv from 'dotenv';
dotenv.config();
const openAIApiKey = process.env.openAIApiKey;
if (!openAIApiKey) {
throw new Error("openAIApiKey environment variable is not set");
}
logger.info(`openAIApiKey: ${openAIApiKey}`);
async function main() {
// 从配置文件创建客户端
const client = await MCPClient.fromConfigFile(
path.resolve(__dirname, './browser_mcp.json')
);
try {
const chat = new ChatOpenAI(
{
modelName: 'google/gemini-2.0-flash-exp:free',
// modelName: 'google/gemini-2.5-pro-exp-03-25:free',
streaming: true,
openAIApiKey: openAIApiKey,
configuration: {
baseURL: 'https://openrouter.ai/api/v1',
}
}
);
let options: MCPAgentOptions = {
client: client,
verbose: true,
maxSteps: 30,
llm: chat,
}
let agent = new MCPAgent(options)
let result = agent.run(
`
open bing.com
click input
input easy-mcp-use
click search
`
);
console.log( JSON.stringify(result) );
} finally {
console.info('finally');
}
}
main().catch(console.error);
この例では、特定の HTTP ポートで実行中の MCP サーバーへの接続方法を紹介します。この例を実行する前に、MCP サーバーを起動してください。
複数サーバーのサポート
MCP-Use-TS では、MCPClient を使用して複数の MCP サーバーを同時に設定し、接続できます。これにより、ウェブ閲覧とファイル操作、または 3D モデリングを組み合わせるなど、異なるサーバーのツールが必要な複雑なワークフローを実現できます。
設定
設定ファイルでは、次のように複数のサーバーを設定できます。
{
"mcpServers": {
"airbnb": {
"command": "npx",
"args": ["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"]
},
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"],
"env": {
"DISPLAY": ":1"
}
}
}
}
使用方法
MCPClient クラスは、複数のサーバーへの接続を管理するメソッドを提供します。MCPAgent を作成する際に、複数のサーバーで構成された MCPClient を指定できます。
デフォルトでは、エージェントは構成されているすべてのサーバーのツールを利用できます。特定のタスクで特定のサーバーを対象にする必要がある場合は、agent.run() メソッドを呼び出す際に serverName を指定できます。
// Example: Manually selecting a server for a specific task
const airbnbResult = await agent.run(
'Search for Airbnb listings in Barcelona',
{ serverName: 'airbnb' } // Explicitly use the airbnb server
);
const googleResult = await agent.run(
'Find restaurants near the first result using Google Search',
{ serverName: 'playwright' } // Explicitly use the playwright server
);
エージェント固有の詳細ログ
完全なデバッグログを有効にせず、エージェントのデバッグ情報だけを確認したい場合は、MCPAgent の作成時に verbose パラメーターを設定できます。
// Create agent with increased verbosity
const agent = new MCPAgent({
llm,
client,
verbose: true // Only shows debug messages from the agent
});
これは、他のコンポーネントの低レベルなデバッグ情報をすべて表示せずに、エージェントの手順や意思決定プロセスだけを確認したい場合に便利です。
ロードマップ
- [x] 複数サーバーを同時に使用
- [x] リモートコネクターのテスト(http、ws)
- [ ] ...
コントリビューション
コントリビューションを歓迎します!バグや機能リクエストについては、お気軽に issue を作成してください。
要件
- Node.js 18+
- TypeScript 5.0+
- MCP 実装(Playwright MCP など)
- LangChain と適切なモデルライブラリ(OpenAI、Anthropic など)
引用
MCP-Use-TS を研究やプロジェクトで使用する場合は、以下の形式で引用してください。
@software{easy-mcp-use,
author = {dforel},
title = {Easy-MCP-Use: MCP Library for TypeScript},
year = {2025},
publisher = {GitHub},
url = {https://github.com/dforel/easy-mcp-use}
}
その他
このプロジェクトは mcp-use のフォークです。
お楽しみいただければ幸いです。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。