最近在做一个 TypeScript 开源项目:Bridgent AI。
它解决的是一个很具体的工程问题:团队已经有 OpenAPI 文档、Prisma schema、Drizzle tables、tRPC router 和大量 Zod 定义,但 AI coding agent 仍然无法直接使用这些能力。
真正阻碍接入的往往不是 MCP 协议本身,而是协议之外的重复工程:工具定义、schema 转换、transport、错误处理、超时,以及最容易被低估的数据库权限边界。
Bridgent AI 的思路是:**已有 schema 就应该成为 single source of truth,不必为了 MCP 再声明一次。 **
从已有定义生成 MCP Tools
当前 Alpha 支持五类 source:
-
defineTool():用 Zod 描述输入,把普通 TypeScript 函数变成 typed tool -
fromOpenApi():把 OpenAPI 3.x operations 转为 MCP tools -
fromPrisma():从 Prisma 6.x model 生成查询工具,以及显式开启的审计写工具 -
fromDrizzle():从 Drizzle tables 生成只读findMany -
fromTrpc():复用 tRPC v10/v11 router;query 映射为读工具,mutation 默认隐藏
最小的手写工具示例只有几行:
import { createStdioServer, defineTool } from '@bridgent/core'
import { z } from 'zod'
await createStdioServer({
name: 'hello',
version: '0.0.1',
tools: [
defineTool({
name: 'add',
description: 'Add two numbers',
inputSchema: z.object({
a: z.number(),
b: z.number(),
}),
run: ({ a, b }) => a + b,
}),
],
})
安装并启动:
pnpm add -D @bridgent/cli @bridgent/core zod
bridgent init ./server.ts
bridgent dev ./server.ts
Bridgent AI 采用显式的 server-file 模型:source adapter 负责生成工具,开发者仍然掌握依赖注入、鉴权上下文和最终暴露范围。它不是新的 Agent framework,也不接管 prompt、memory、planning 或模型编排。
同一套 Tools,三种 Transport
生成的工具可以运行在:
-
stdio:适合本地 Claude Code、Cursor、Codex、Gemini CLI。
-
Streamable HTTP:适合自托管的共享 MCP Server 和远程调试。
-
Web Standard fetch handler:适合 Cloudflare Workers、Deno、Bun 等 Web runtime。
仓库还提供了基于官方 MCP SDK Client 的协议级测试,用来验证 stdio、HTTP 与 Web handler 三条链路。
为什么数据库不是“能查就够了”
把数据库交给 AI Agent,最重要的不是生成多少工具,而是默认边界是否可靠。
Bridgent AI 的 Prisma / Drizzle source 采用安全优先的默认值:
-
数据库默认只读
-
查询结果有行数上限和 timeout
-
不暴露 raw SQL
-
Prisma 写工具必须显式开启并加入 allowlist
-
提交前先 dry-run,正式 commit 需要一次性 preview token
-
支持 audit sink 与幂等键,降低宿主重试造成重复写入的风险
-
tRPC mutation 同样默认关闭,只有明确 allowlist 后才会生成
这并不意味着 Alpha 已经自动解决所有鉴权问题。业务身份和上下文仍由宿主应用负责;Bridgent AI 提供的是更明确、可测试的工具暴露边界。
当前状态与下一步
当前已经支持 OpenAPI、Prisma、Drizzle、tRPC、Zod,以及 stdio / Streamable HTTP / Web handler。CLI 还提供 init、dev、serve、inspect,inspect 可以在打开官方 MCP Inspector 前展示 source 与 capability hints。
项目仍处于 Alpha。下一阶段聚焦 generated tool surface 的本地 policy enforcement;GraphQL 和托管控制台仍属于更后续的生态方向。
如果你在实际项目里接过 MCP,我很想知道:你最希望 AI Agent 复用哪一种已有定义?也欢迎直接试用、提 Issue 或贡献 adapter。
GitHub:github.com/JS-mark/Bri…