进阶 / Hooks / MCP

开发自定义 Agent 工具:从 schema 到部署

当内置工具不够时,自己写一个。10 行代码 + 一份 JSON schema = Agent 多一项能力。

Kition 团队·2026年7月30日·8 分钟阅读

工具的三要素

  • name — Agent 调用时的标识
  • description — 让模型知道何时调用
  • input_schema — JSON schema 定义参数

一个最小例子(stdio MCP server)

import { Server } from '@modelcontextprotocol/sdk/server'

const server = new Server({ name: 'word-count', version: '0.1.0' })

server.setRequestHandler('tools/list', () => ({
  tools: [{
    name: 'word_count',
    description: 'Count words in a string',
    inputSchema: {
      type: 'object',
      properties: { text: { type: 'string' } },
      required: ['text'],
    },
  }],
}))

server.setRequestHandler('tools/call', async (req) => {
  const text = req.params.arguments.text as string
  return { content: [{ type: 'text', text: String(text.split(/\s+/).length) }] }
})

server.connect(/* stdio */)

生产化建议

  • description 写得越具体越好 — 影响模型 routing
  • 工具应该是单一职责,能组合多个比塞一个大的好
  • 所有副作用要可幂等(Agent 可能重试)
  • 为每个工具加 metrics — 看哪些常被调,哪些没人用

下载 Kition

本地优先的 AI 工作空间。Markdown 文档、结构化数据表、AI Agent,全部跑在你自己的电脑上。