mcpField
L
Lite_MCP_sdk

Lite_MCP_sdk

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

Lite_MCP_sdk について

Lite_MCP_sdkは、MCPサーバーやクライアントを構築するための軽量なJavaScript SDKとライブラリです。簡単なセットアップやプロトコルの低レベル制御を求める開発者向けで、SSEに特化し、stdioには対応していません。

主な機能

  1. 01JavaScript製MCPサーバーとクライアント
  2. 02SSEトランスポートのみ
  3. 03依存関係を抑えた軽量SDK
  4. 04検証ロジックのカスタマイズ
  5. 05コピーして使える導入例

活用シーン

  1. 01リモートSSE MCPサーバーの構築
  2. 02JavaScriptクライアントからMCPサーバーへ接続
  3. 03プロトコル検証ロジックのカスタマイズ

MCP 対応

MCPサーバーとクライアントを作成するJavaScriptライブラリを提供します。通信方式はSSEで、stdioには対応していません。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MseeP.ai Security Assessment Badge

はじめに

このリポジトリには現在、次の2つの部分が含まれています。

  1. JavaScript 用の Lite mcp sdk
  2. JavaScript 用の Lite mcp
プロジェクトの目標

このプロジェクトの目標は、JavaScript を5分間学んだだけのおばあちゃん👵でも、最高の AI エージェント技術を利用できるようにすることです。

なぜ JavaScript なのか?

型に気を取られるのではなく、実行ロジックに集中できるようにしたいからです。

JavaScript 用 Lite mcp の紹介

npm badge compatibility badge License badge Contributor Covenant

JavaScript 用 Lite mcp は、リモートの SSE JavaScript MCP サーバーとクライアントを始めるための、これまでで最高の方法です。

🚀 クイックスタート

MCP をすぐに始められる、実際にコピー&ペーストするだけの体験を提供します。

インストール
npm install litemcpjs
npm install express
npm install cors
5行以内で SSE MCP クライアントを構築
import { MCPClient } from "litemcpjs";

async function main() {
  const client = new MCPClient("http://localhost:3000") // change this to your server url
  await client.connect()
  await client.listTools()
  const result = await client.callTool("calculate-bmi", {weightKg: 70, heightM: 1.75})
  console.log(result)
}

main();
expressJS でリモート MCP SSE サーバーを起動
const { MCPServerInit } = require("litemcpjs");

// define the tools
const TOOLS = [
    {
        name: "calculate-bmi",
        description: "Calculate the BMI of a person",
        inputSchema: {
            type: "object",
            properties: {
                weightKg: { type: "number" },
                heightM: { type: "number" },
            },
            required: ["weightKg", "heightM"],
        },
        method: async ({ weightKg, heightM }) => {
            return {
                content: [{
                    type: "text",                
                    text: String(weightKg / (heightM * heightM))
                }]
            }
        }
    }
];

// define extra handlers for resources etc.
const handlers = {};

// compatible for server have .use(middleware) method such as express
const middlewares = [
    cors(),
];

const MCPapp = express();  

const MCPServer = MCPServerInit(
    MCPapp,
    middlewares,
    handlers,
    TOOLS,
).listen(5556);

JavaScript 用 Lite mcp sdk の紹介

npm badge compatibility badge License badge Contributor Covenant

MCP プロトコルをより低レベルで制御したい方に向けて:

JavaScript 用 Lite mcp sdk は、依存関係を最小限に抑えた軽量な MCP SDK のリミックスです。

クイックスタート
npm install lite-mcp-sdk
サーバー
const { Server, SSEServerTransport } = require("lite-mcp-sdk");

//or module import
import { Server, SSEServerTransport } from "lite-mcp-sdk";

//create a server
const server = new Server({
    port: 3000,
    transport: new SSEServerTransport(),
});


// 1. Define the server info
const server = new Server({
    name: "example-servers/puppeteer",
    version: "0.1.0",
}, {
    capabilities: {
        resources: {},
        tools: {},
    },
});

// 2. Define the request handlers
server.setRequestHandler("tools/call", async (request) => {
    const { name, arguments: args } = request.params;
    return handleToolCall(name, args);
});

//3. Define the transport
const transports = new Map();
const transport = new SSEServerTransport("/messages", res);
transports.set(clientId, transport);

//4. Connect the server to the transport
await server.connect(transport);

//5. Handle the post message
await transport.handlePostMessage(req, res);
クライアント
import { Client, SSEClientTransport } from "lite-mcp-sdk";

// 1. Define the client
let client = new Client( {
      name: "fastmcp-client",
      version: "0.1.0"
    }, {
      capabilities: {
        sampling: {},
        roots: {
          listChanged: true,
        },
      },
    } );

// 2. Init the client transport
const serverUrl = "http://localhost:3000"; // for example

const backendUrl = new URL(`${serverUrl}/sse`);
  
backendUrl.searchParams.append("transportType", "sse");

backendUrl.searchParams.append("url", `${serverUrl}/sse`);

const headers = {};

const clientTransport = new SSEClientTransport(backendUrl, {
    eventSourceInit: {
        fetch: (url, init) => fetch(url, { ...init, headers }),
    },
    requestInit: {
        headers,
    },
});

// 3. Connect the client to the transport
await client.connect(clientTransport);
const abortController = new AbortController();
let progressTokenRef = 0;

// 4. start the tool call
const name = "toolcall name";
const params = {}; // tool call params

const response = await client.request(
    {
          method: "tools/call",
          params: {
            name,
            arguments: params,
            _meta: {
              progressToken: progressTokenRef++,
            },
          },
    },
    {signal: abortController.signal,}
);

プロジェクト構成:

プロジェクトは、次のディレクトリに明確かつ整理された形で分かれています。

src
├── index.js
└── lib
    ├── client
    │   ├── client.js
    │   └── clientTransport.js
    ├── server
    │   ├── server.js
    │   └── serverTransport.js
    └── shared
        ├── helpers
        │   ├── constants.js
        │   └── util.js
        ├── protocol.js
        └── validators
            ├── capabilityValidators.js
            └── schemaValidators.js (IN CONSTRUCTION)

lite-mcp-sdk を選ぶ理由

1. zod の型を固定しない

zod の型はもう不要です!!!zod の型は、簡単なセットアップを不必要に複雑にします。

さらに、元の SDK における zod 型の使い方は固定的で柔軟性がなく、よく指摘されている問題です。 README の画像 README の画像

2. 完全な SSE ソリューション

SSE に注力し、簡潔さを考慮して stdio のサポートを削除しました。stdio は SSE ほど汎用的なソリューションではないためです。

驚いたことに、インターネット上には SSE ソリューションがほとんどないため、自分で作成することにしました。

以下の画像が示すように、stdio のサポートは常に説明されている一方で、SSE のサポートには触れられていません。 README の画像 README の画像 SSE を意図的に検索しても、結果はほとんどありません。Google の検索結果の最初のページをご覧ください。 README の画像

requestSchema.parse のようなコードを、完全にカスタマイズ可能なバリデーターに置き換え、ここで検証ロジックを定義できるようユーザーに任せます。例:

const validatedMessage = validator(message);

元の SDK でタイムアウトがどのように使われているかは曖昧で、冗長な実装もいくつかあります。Lite mcp では、さらなる混乱を招かないよう、それらを削除しました。(最新バージョンでは、これらも削除されていると思います。)

3. すぐに始めるための、より詳細なドキュメント

実際、公式ロードマップにもこの問題が記載されています。笑 README の画像

Lite MCP SDK では、SDK の使い方や変更方法について、より充実したドキュメントを提供しており、そのままコピーできるコード例も増やしています。

4. コア機能のみに絞った、よりシンプルなアーキテクチャ

Lite MCP SDK:

src
├── index.js
└── lib
    ├── client
    │   ├── client.js
    │   └── clientTransport.js
    ├── server
    │   ├── server.js
    │   └── serverTransport.js
    └── shared
        ├── helpers
        │   ├── constants.js
        │   └── util.js
        ├── protocol.js
        └── validators
            ├── capabilityValidators.js
            └── schemaValidators.js (IN CONSTRUCTION)

公式 SDK: ロードマップには記載されていますが、このプロジェクトに認証機能を組み込むのは、プロダクト設計として適切ではないと思います。 README の画像 率直に言うと、認証の問題はユーザーに任せるほうが、柔軟性が高まり、開発体験も向上すると思います。

src/
├── client
│   ├── auth.test.ts
│   ├── auth.ts
│   ├── cross-spawn.test.ts
│   ├── index.test.ts
│   ├── index.ts
│   ├── sse.test.ts
│   ├── sse.ts
│   ├── stdio.test.ts
│   ├── stdio.ts
│   └── websocket.ts
├── cli.ts
├── inMemory.test.ts
├── inMemory.ts
├── integration-tests
│   └── process-cleanup.test.ts
├── server
│   ├── auth
│   │   ├── clients.ts
│   │   ├── errors.ts
│   │   ├── handlers
│   │   │   ├── authorize.test.ts
│   │   │   ├── authorize.ts
│   │   │   ├── metadata.test.ts
│   │   │   ├── metadata.ts
│   │   │   ├── register.test.ts
│   │   │   ├── register.ts
│   │   │   ├── revoke.test.ts
│   │   │   ├── revoke.ts
│   │   │   ├── token.test.ts
│   │   │   └── token.ts
│   │   ├── middleware
│   │   │   ├── allowedMethods.test.ts
│   │   │   ├── allowedMethods.ts
│   │   │   ├── bearerAuth.test.ts
│   │   │   ├── bearerAuth.ts
│   │   │   ├── clientAuth.test.ts
│   │   │   └── clientAuth.ts
│   │   ├── provider.ts
│   │   ├── router.test.ts
│   │   ├── router.ts
│   │   └── types.ts
│   ├── completable.test.ts
│   ├── completable.ts
│   ├── index.test.ts
│   ├── index.ts
│   ├── mcp.test.ts
│   ├── mcp.ts
│   ├── sse.ts
│   ├── stdio.test.ts
│   └── stdio.ts
├── shared
│   ├── auth.ts
│   ├── protocol.test.ts
│   ├── protocol.ts
│   ├── stdio.test.ts
│   ├── stdio.ts
│   ├── transport.ts
│   ├── uriTemplate.test.ts
│   └── uriTemplate.ts
└── types.ts
主な違いの表
機能mcp-official-sdklite-mcp-sdk
検証zodバリデーター
トランスポートstdio または SSESSE のみ
言語typescriptjavascript
認証含まれるオプション
ドキュメント曖昧明確
アーキテクチャ複雑軽量

🗺️ ロードマップ

  • カスタムバリデーター(開発中)
  • MCP サーバーとクライアントを監視・管理するためのダッシュボードを追加
  • ts 型を追加
  • python sdk を追加

🤝 コントリビューション

コントリビューションを歓迎します!Issue を作成するか、プルリクエストを送信してください。

コントリビューションガイドをお読みください。

📝 ライセンス

このプロジェクトは MIT License の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

Anthropic のオリジナル SDK に着想を得ています。同 SDK のライセンスもこちらに含まれています。

お問い合わせ

質問や提案がある場合は、こちらにコメントを残してください。 または、メールでご連絡ください:[email protected]

lite-mcp-sdk を使用しているプロジェクト(追加予定)

コメント

MCP は初めてですか?

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

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