项目简介
Artinet SDK 是一个基于 TypeScript 构建的库,旨在简化可互操作 AI Agent 的创建。它采用服务导向架构,允许开发者将 AI Agent 部署为简单的独立进程,或无缝嵌入到专用服务器中。该 SDK 完整实现了 Agent2Agent (A2A) 协议,并提供了一个 Model Context Protocol (MCP) 兼容层,使得 A2A Agent 能够作为完全符合 MCP 规范的服务器与 LLM 客户端通信。
主要功能点
- MCP服务器能力: 能够将通过 Artinet SDK 构建的 Agent 封装成完整的 MCP 服务器,并通过 JSON-RPC 协议提供上下文信息和功能。
- 资源托管与数据访问: 支持托管和管理 资源 (Resources),例如将 Agent 卡片 (AgentCard) 作为 'agent://card' URI 资源暴露给 LLM 客户端,提供标准化的数据访问能力。
- 工具注册与调用: 允许 LLM 客户端注册和执行 工具 (Tools),以便调用 Agent 提供的外部功能,例如发送消息 ('send-message')、获取任务状态 ('get-task') 或取消任务 ('cancel-task')。
- LLM交互模式: 虽然 MCP 定义中提到 Prompt 模板,但 Artinet SDK 主要通过 A2A 协议的消息 ('Message') 结构和其对 MCP 工具的映射来支持 LLM 交互,间接实现可定制的交互模式。
- 会话与状态管理: MCP 服务器负责会话管理和能力声明,支持持久化存储 Agent 任务状态。
- 多传输协议支持: 除了 MCP 兼容层支持 Stdio 传输协议外,基础的 A2A Agent 服务还支持 SSE (Server-Sent Events) 和 WebSockets 等多种传输协议。
- 模块化Agent构建: 提供 'AgentBuilder' 模式和直接 'AgentEngine' 实现,方便开发者灵活构建简单或多步骤的 AI Agent 逻辑。
安装步骤
- Node.js 要求: 请确保您的系统已安装 Node.js (推荐 20 或 ≥ 22 版本)。
- 安装 Artinet SDK:
在您的项目根目录运行以下命令:
npm install @artinet/sdk - 快速创建 Agent 项目 (可选): 如果您想快速开始一个新项目,可以使用 Artinet 的 'create-agent' 命令。它会为您提供多个项目模板:
npx @artinet/create-agent@latest
MCP服务器配置
当您的 Artinet SDK 实现的 Agent 作为 MCP 服务器运行时,MCP 客户端需要知道如何启动并连接到您的服务器。以下是一个典型的 JSON 格式配置示例,其中包含了 MCP 客户端连接时所需的基本信息:
{ "name": "我的Artinet MCP Agent", "command": "node", "args": [ "path/to/your/mcp_server_script.js", "--port", "4000", "--log-level", "info" ], "env": { "ARTINET_API_KEY": "YOUR_OPTIONAL_API_KEY" }, "transport": "stdio" }
参数注释:
- 'name': 您为 MCP 服务器实例指定的友好名称,有助于客户端识别。
- 'command': 用于启动 MCP 服务器进程的命令行命令。例如,对于 Node.js 应用程序通常是 '"node"'。
- 'args': 一个字符串数组,包含传递给 'command' 的命令行参数。
- 'path/to/your/mcp_server_script.js': 这是您实际创建和启动 Artinet SDK MCP Agent 的 Node.js 脚本文件路径。请替换为您的实际路径。
- '--port', '4000': (可选,取决于传输协议)如果您的 MCP 服务器通过 HTTP/WebSocket 监听网络端口,则指定监听端口。对于 Stdio 传输,此参数可能不直接使用,但仍可作为脚本的内部配置。
- '--log-level', 'info': (可选)配置服务器的日志输出级别,如 'info'、'debug'、'error' 等。
- 'env': (可选)一个键值对对象,用于在启动服务器进程时设置环境变量。
- 'transport': MCP 服务器与客户端通信所使用的传输协议。'"stdio"' 表示通过标准输入/输出进行通信,这是 'StdioServerTransport' 的默认方式。其他可能的传输包括 '"websocket"' 或 '"sse"'(需要相应的实现和配置)。
基本使用方法 (MCP服务器)
要将您使用 Artinet SDK 构建的 A2A Agent 暴露为 MCP 服务器,您需要遵循以下核心步骤:
-
定义您的 Agent 逻辑: 首先,使用 'AgentBuilder' 或直接实现 'AgentEngine' 接口来定义您的 Agent 如何处理传入的消息和任务。这是 Agent 的核心行为。
// my-a2a-agent-logic.js import { AgentBuilder, createAgent } from "@artinet/sdk"; const myAgentEngine = AgentBuilder() .text(async ({ content: userInput, context }) => { // 您的 Agent 逻辑,例如: console.log('Agent 收到消息: ${userInput}'); return 'MCP Agent 响应: 您好,您说的是 "${userInput}"'; }) .createAgentEngine(); export const a2aAgentInstance = createAgent({ engine: myAgentEngine, agentCard: { name: "我的Artinet MCP Agent", url: "http://localhost:3000/a2a", // A2A的URL,即使通过MCP暴露也可能有 version: "1.0.0", protocolVersion: "0.3.0", description: "一个通过Artinet SDK暴露的MCP Agent。", capabilities: { streaming: true }, skills: [{ id: "echo", name: "Echo 功能" }], defaultInputModes: ["text"], defaultOutputModes: ["text"] }, }); -
创建 MCP Agent 实例并连接传输协议: 在另一个脚本中(例如 'mcp_server_script.js'),导入您的 A2A Agent 实例,并使用 'createMCPAgent' 将其封装成一个 MCP Agent。然后,选择并连接一个 MCP 传输协议,例如 'StdioServerTransport'。
// mcp_server_script.js import { createMCPAgent } from "@artinet/sdk"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { a2aAgentInstance } from "./my-a2a-agent-logic.js"; // 导入您上面定义的A2A Agent async function startMCPServer() { // 创建 MCP Agent 实例,封装现有的 A2A Agent const mcpAgent = createMCPAgent({ serverInfo: { name: "我的Artinet MCP Agent", // MCP 服务器的名称 version: "1.0.0", }, agent: a2aAgentInstance, // 使用您创建的A2A Agent实例 agentCardUri: "agent://card", // 定义Agent Card的URI }); // 您可以注册额外的 MCP 工具(Artinet SDK 会默认注册一些基础工具) mcpAgent.registerTool({ name: "custom-query", description: "一个自定义的查询工具,仅用于演示。", parameters: { type: "object", properties: { query: { type: "string", description: "要查询的字符串。" }, }, }, execute: async ({ query }) => { return { contentType: "text/plain", content: 'MCP自定义工具收到查询: ${query}', }; }, }); // 连接 Stdio 传输协议,通过标准输入/输出与 MCP 客户端通信 await mcpAgent.connect(new StdioServerTransport()); console.log("Artinet MCP Agent 服务器已通过 Stdio 启动,等待 MCP 客户端连接..."); } startMCPServer().catch(console.error); -
运行 MCP 服务器: 在命令行中运行您的 'mcp_server_script.js':
node mcp_server_script.js此时,您的 Artinet SDK MCP 服务器将通过标准输入/输出启动并等待 MCP 客户端的连接。
MCP 客户端交互示例 (概念性): 一个 MCP 客户端可以通过 JSON-RPC 协议与您的 Artinet MCP 服务器进行交互。
-
读取 Agent 卡片 (资源): 客户端发送的 JSON-RPC 请求:
{ "jsonrpc": "2.0", "method": "readResource", "params": { "uri": "agent://card" }, "id": 1 }服务器将响应包含 Agent 卡片详情的 JSON。
-
调用 'send-message' 工具: 客户端发送的 JSON-RPC 请求:
{ "jsonrpc": "2.0", "method": "callTool", "params": { "name": "send-message", "arguments": { "message": { "role": "user", "parts": [ { "kind": "text", "text": "Hello from MCP client!" } ] } } }, "id": 2 }服务器将返回 'send-message' 工具处理后的结果。
-
调用自定义工具 'custom-query': 客户端发送的 JSON-RPC 请求:
{ "jsonrpc": "2.0", "method": "callTool", "params": { "name": "custom-query", "arguments": { "query": "What is the capital of France?" } }, "id": 3 }服务器将返回 'custom-query' 工具处理后的结果。
关键词
AI Agent, LLM集成, 上下文服务, 工具调用, 资源管理
信息
分类
AI与计算