IT

iboughtbed/trpc-to-mcp

API development

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。 原文を見る

36 stars 1 forks 品質 65 トレンド 20MIT

mCPパッケージへのtRPC

概要

TRPC エンドポイントを MCP ツールに変える理由を正確に知れば、この部分をスキップできます。 コアでは、Model Context Protocol (MCP) は、定義されたツールを公開することで、外部システムとやり取りするコンテキストを言語モデルに提供します。 これは、APIエンドポイントをラップすることではありません。AIが明確で目的のあるタスクを実行できるようにすることについてです。 このライブラリは、あなたが明示的にMCPツールに選択するtRPCの手順だけを変換するために作成されました。 そのため、管理されたAIインタラクションのために意図されている機能だけが露出されていることを保証します。 MCP ツールに効果的に変換されるエンドポイントでは、明確な説明、意味のある名前、および定義された入出力で細心の注意を払って文書化する必要があります。 MCP ツールは単なる API エンドポイントよりも重要であるため、この慎重な設計は重要であり、言語モデルが確実に機能できるようにする運用コンテキストを形成します.

概要(AI 翻訳)

MCP ツールに選択した tRPC 手順をオンにします。

  • tRPC v11 と @modelcontextprotocol/server v2、MCP TypeScript SDK で動作します。
  • stdio または HTTP 上でツールをサーブする
  • すべてのツールコールでtRPCのコンテキストとミドルウェアを使用する
  • 出力をテキスト、画像、その他のMCPコンテンツを変換
  • 出力スキーマで手順から構造化されたコンテンツを返す
  • Mcp ハンドラで Next.js と他のフレームワークのマウント

なぜ選択した手順だけ?

MCP ツールは、言語モデルが自分で呼び出すことを決定するものですので、モデルを使用する手順だけを公開します。 モデルは、名前、説明、入力スキーマに基づいてツールを選択します。 それぞれの露出した手順をクリアな名前、それを使用する際の記述、各入力フィールドに.describe()を記述します。

インストール

[@trpc/server11と@modelcontextprotocol/server2はピア依存関係です。 mcp-handler アダプターを使用する場合は、[mcp-handler 2 のみをインストールします。 Node.js 20以降が必要です。

使用法

1。 [McpMeta]をtRPCインスタンスに追加します。

  1. ツールとして必要な手順で[mcpを有効にします。

入力は、zod 4 などの標準 JSON スキーマを実装するバリデータからオブジェクトスキーマでなければなりません.

このページは AI により自動翻訳されています。技術的な詳細は原文をご確認ください。

README

以下は原文 README の抜粋です。原文を見る。

trpc-to-mcp

Turn the tRPC procedures you choose into MCP tools.

Install

pnpm add trpc-to-mcp @modelcontextprotocol/server

@trpc/server 11 and @modelcontextprotocol/server 2 are peer dependencies. Install mcp-handler 2 only if you use the mcp-handler adapter. Node.js 20 or later is required.

Usage

  1. Add McpMeta to your tRPC instance.
import { initTRPC } from "@trpc/server";
import { type McpMeta } from "trpc-to-mcp";

const t = initTRPC.context().meta().create();
  1. Enable mcp on the procedures you want as tools.
import { z } from "zod";

export const appRouter = t.router({
  hello: t.procedure
    .meta({
      mcp: {
        enabled: true,
        description: "Say hello to someone",
        // Optional. Defaults to the procedure path with dots replaced by
        // underscores, e.g. "hello" or "user_byId".
        name: "say_hello",
      },
    })
    .input(z.object({ name: z.string().describe("Who to greet") }))
    .query(({ input }) => `Hello ${input.name}`),
});

Inputs must be object schemas from a validator that implements Standard JSON Schema, such as zod 4.2 or later, ArkType, or Valibot with toStandardJsonSchema(). Chained .input() calls are merged into one tool input schema. Subscriptions can’t be tools.

tRPC validates input on every call, so your zod transforms and refinements run as usual. Errors thrown by a procedure, including TRPCError, come back to the client as a tool result with isError: true.

meta.mcp also takes title and annotations. Queries get readOnlyHint: true unless you set it yourself.

Serve your tools

createMcpServer returns an McpServer with your tools registered. You can register more tools, prompts, and resources on it.

Over stdio:

import { serveStdio } from "@modelcontextprotocol/server/stdio";
import { createMcpServer } from "trpc-to-mcp";

serveStdio(() =>
  createMcpServer({ name: "my-app", version: "1.0.0" }, appRouter, { db }),
);
GitHub で README 全文を見る

インストール

This server does not publish a one-line install command.

Open the repository installation guide MCP 初心者?mcpskill.org のガイドから始めましょう →