AgentAPI协议服务器

一个基于TypeScript的MCP(模型上下文协议)服务器,提供与AgentAPI交互的工具,支持状态管理、消息处理、文件操作和实时事件订阅。

  • by mtuckerb
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mtuckerb/mcp-agentapi

使用说明

用于AgentAPI的MCP服务器(Node.js/TypeScript)

一个用TypeScript编写的综合MCP(模型上下文协议)服务器,提供与AgentAPI交互的工具,支持Claude Code、Goose和Aider。

特性

  • 状态管理:检查代理状态(稳定/运行)
  • 消息处理:发送和检索对话消息
  • 文件操作:将文件上载到代理工作区
  • 事件流:通过服务器发送事件(SSE)进行实时事件订阅
  • 错误处理:具有详细错误消息的全面错误处理
  • 类型安全:带Zod验证的完整TypeScript实现
  • 生产就绪:全面测试、剥皮和建造管道

安装

npm install mcp-agentapi

或用于开发:

git clone <repository-url>
cd mcp-agentapi
npm install

用法

配置

MCP服务器需要AgentAPI实例的基本URL。设置 AGENTAPI_BASE_URL 环境变量:

export AGENTAPI_BASE_URL="http://localhost:3284"

建立和运行

# Build the TypeScript project
npm run build

# Run the MCP server
npm start

# Or for development with hot reload
npm run dev

可用工具

1. get_status

检索代理的当前状态。

参数:

  • 无

退货:

  • status:代理状态(“稳定”或“运行”)
  • agent_type:使用的试剂类型

2. agent_get_messages

检索与代理的对话历史记录。

参数:

  • 无

退货:

  • messages:消息对象数组,包含:
    • id:唯一标识符
    • role:“用户”或“代理”
    • content:消息内容(80个字符行)
    • time:时间戳

3. agent_send_message

向代理发送消息。

参数:

  • content (必填):消息内容字符串
  • type (可选):消息类型-“用户”或“原始”(默认:“用户”)
    • “user”:登录对话历史记录,代理处理任务
    • “原始”:作为击键发送到终端,不保存在历史记录中

4. upload_file

将文件上载到代理工作区。

参数:

  • file_path (必填):要上传的文件的本地路径

退货:

  • ok:成功状态
  • filePath:上传文件的路径

5. subscribe_events

订阅代理的实时事件。

参数:

  • timeout (可选):超时秒数(默认值:30)

退货:

  • 事件流包括:
    • message_update:对话消息的更新
    • status_change:代理状态的变化

示例

基本用法

// Check agent status
const status = await get_status();
console.log(`Agent is ${status.status}`);

// Send a message
const result = await agent_send_message({
  content: "Hello, can you help me with TypeScript?",
  type: "user"
});

// Get conversation history
const messages = await agent_get_messages();
for (const msg of messages.messages) {
  console.log(`${msg.role}: ${msg.content}`);
}

文件上传

// Upload a TypeScript file
const result = await upload_file({
  file_path: "./script.ts"
});
if (result.ok) {
  console.log(`File uploaded to: ${result.filePath}`);
}

事件流

// Subscribe to real-time events
const events = await subscribe_events({ timeout: 30 });
for (const event of events.events) {
  if (event.event === 'status_change') {
    console.log(`Status changed to: ${event.data.status}`);
  } else if (event.event === 'message_update') {
    console.log(`Message updated: ${event.data.message}`);
  }
}

发展

运行测试

npm test
npm run test:coverage

代码质量

npm run lint
npm run lint:fix
npm run format
npm run type-check

项目脚本

  • npm run build -将TypeScript构建为JavaScript
  • npm run dev -在开发过程中以热重载运行
  • npm run start -启动生产服务器
  • npm run demo -运行交互式演示
  • npm test -运行测试套件
  • npm run quality -运行所有代码质量检查

配置选项

环境变量

  • AGENTAPI_BASE_URL:AgentAPI实例的基本URL(必需)
  • 违约: http://localhost:3284

建筑

项目结构

src/
├── server.ts    # Main MCP server implementation
├── client.ts    # HTTP client for AgentAPI
├── types.ts     # TypeScript types and Zod schemas
├── index.ts     # Entry point
└── demo.ts      # Interactive demonstration

主要特点

  • 类型安全:带有Zod验证的完整TypeScript
  • 异步/等待:全程无阻塞运行
  • 错误处理:带上下文的详细错误报告
  • 事件流:服务器发送实时更新事件
  • 测试:Vitest提供全面的测试覆盖
  • 生产就绪:内置验证和错误恢复

错误处理

服务器提供详细的错误信息,包括:

  • 带有上下文的错误消息
  • 请求数据中错误的位置
  • 状态代码
  • 时间戳信息

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

欢迎投稿!请确保:

  • 所有测试均通过(npm test)
  • 代码遵循项目样式指南(npm run quality)
  • 包括类型提示
  • 文档已更新

支持

对于问题和疑问:

  • 查看文档中的故障排除部分
  • 在项目存储库上打开一个问题
  • 请参阅 Agent API文件