@agntn/ 工具
QQ四个主机,一个定义. 你写工具一次。 MCP, Pi, OMP 和AI SDK各自获得他们喜欢的方式.
想看看吗? 工具.agntn.dev 有医生和一个游乐场。 一个电话,四个主机,都住在你的帐上.
为什么?
MCP想要一个 inputSchema皮想要一个 parameters 和迅速的片段。 OMP 将您的 TypeBox 转换为自己的 。 AI SDK想要另一个计划。 所以每个工具都生活在四个文件里,四个文件漂移. 现在它生活在一个.
* 特性
- 📝 一个定义. 名称、计划、效果和
execute. 这就是整个工具. - 🔌 4个主机适配器.
createMcpServer, (中文(简体) ),registerPiTools, (中文(简体) ),registerOmpTools财务报告和审定财务报表toAiTool- 每人打一个电话. - 🛡️ 每个主机的验证. 密码运行前 核心检查每个电话 即使主机跳过自己的支票.
- 🗣️ 模型可以使用错误 . 拼错的密钥名称本身和您要的密钥 。 一个enum列出了它的值.
- 🧵 每错一行. 新的线条,逃生密码 和重复文本中的花招 被平分。 没有伪造的线条.
- 🪤 OMP TypeBox 陷阱已拆除. TypeBox被捆绑了,所以OMP已经没有什么可以背地里重写了.
- 🧪 斯克马在定义时间规则. 打开对象或文字结合失败
defineTool三周后在模特儿的手上. - ⏳ 进展有所进展.
progress?.("still at it")变成onUpdate在皮和OMP,notifications/progress在MCP和一线直播 在你的终端。 一个缓慢的呼叫停止看起来像一个死. - 🙋 问人去取,不是模特去取.
ask?.({ message, schema })成为 MCP 引出,或在 Pi 和 OMP 中每个字段一个对话框。 三个谜题匹配吗? 让他们选择而不是让模特猜. - ⌨️ 一个CLI在旁边.
runCli将同样的工具变成命令,不需要 CLI 库 。 旗帜出自"通鉴". 提示会增加位置,短旗和斯丁. - 🌐 到处跑. 没有
node:*输入核心或主机适配器。 Docs网站在浏览器标签中运行它们. CLI是一个节点部分,就像一个CLI一样.
QQ 安装
pnpm add @agntn/tools
节点.js 26或更新. 然后增加你们所崇拜的主宰。 每一个都是可选的同伴.
第一次通话
import { defineTool, Type } from "@agntn/tools";
import { createMcpServer } from "@agntn/tools/mcp";
import { Client, InMemoryTransport } from "@modelcontextprotocol/client";
const slugTool = defineTool({
name: "text_slug",
title: "Text Slug",
description: "Turn a title into a lowercase URL slug.",
effect: "read",
input: Type.Object({ text: Type.String({ minLength: 1 }) }, { additionalProperties: false }),
execute: ({ text }) => {
const slug =
text
.toLowerCase()
.match(/[a-z0-9]+/g)
?.join("-") ?? "";
return { content: [{ type: "text", text: slug }], details: { slug } };
},
});
const server = createMcpServer({ name: "slugs", version: "1.0.0" }, [slugTool]);
const client = new Client({ name: "demo", version: "1.0.0" });
const [clientSide, serverSide] = InMemoryTransport.createLinkedPair();
await Promise.all([server.connect(serverSide), client.connect(clientSide)]);
console.log(await client.callTool({ name: "text_slug", arguments: { text: "Hello, World" } }));
console.log(await client.callTool({ name: "text_slug", arguments: { txt: "Hello, World" } }));
{ content: [ { type: 'text', text: 'hello-world' } ] }
{
content: [
{
type: 'text',
text: 'Invalid arguments: unknown property "txt"; takes text\n' +
'Invalid arguments at /: must have required properties text'
}
],
isError: true
}
字型没有达到 execute模型被告知它做错了什么 和工具需要什么。 Pi,OMP和AI SDK将其同为两行,只能通过自己的出错通道. 验证和错误 拿着桌子.
++ 主机
| 东道主 | 适配器 | 端点 |
|---|---|---|
| MCP 磁共振 | createMcpServer 从 @agntn/tools/mcp | @modelcontextprotocol/server |
| H3级 | toH3Tools 从 @agntn/tools/h3 | h3-mcp |
| 杜克斯语Name | toToolkitTools 从 @agntn/tools/toolkit | zod,旁边 @nuxtjs/mcp-toolkit |
| Pi | registerPiTools 从 @agntn/tools/pi | @earendil-works/pi-coding-agent |
| 办公室管理计划 | registerOmpTools 从 @agntn/tools/omp | @oh-my-pi/pi-coding-agent |
| AI SDK 软件 | toAiTool 从 @agntn/tools/ai | ai |
| 国 际 | runCli 从 @agntn/tools/cli | 无 |
只安装您所携带的 一个MCP服务器不需要AI SDK,没有人让它假装. 每个主机都有自己的网页 和Gotchas: 工具.agntn.dev/主机。 。 。 .
~ 这不起作用 ~
它不运行你的服务器或选择运输。 Stdio, HTTP, 在记忆中,你的电话。 除非你问 runCli 联合国 mcp 命令。 那一个是stdio。 它不是一个计划图书馆。 TypeBox做这个部分,这个只是确保每个主机都看到同一个部分.
发展
pnpm install
pnpm lint # vp lint and vp fmt --check
pnpm typecheck # tsc over the source and the tests
pnpm test # vp test run
pnpm build # obuild, TypeBox bundled into dist
谢谢
在很多帮助下撰写的 Claude 打开源代码 财务报告和审定财务报表 开源代码。两者都使开源维护者免费运行。 欢呼声 < 3