mcpField
T
Task API Server - MCP TypeScript Implementation

Task API Server - MCP TypeScript Implementation

本地服务
github.com/milkosten生产力1186 周前更新

关于 Task API Server - MCP TypeScript Implementation

这是一个用 TypeScript 编写的任务管理 MCP 服务,可连接外部 Task API,供 AI 工具和 Web 客户端使用。它同时支持 STDIO 与 HTTP+SSE,并提供任务数据资源和操作工具。

主要功能

  1. 01按状态、类别和优先级筛选任务
  2. 02创建、更新和删除任务
  3. 03支持 STDIO 与 HTTP+SSE
  4. 04提供任务数据结构资源
  5. 05包含测试客户端和响应校验

适用场景

  1. 01在 AI 工具中查询和维护任务
  2. 02通过浏览器客户端访问任务操作
  3. 03按状态或类别查找待处理任务

MCP 相关

该服务通过 MCP 向客户端提供任务数据资源及列表、创建、更新和删除工具。支持 STDIO 和 HTTP+SSE 两种传输方式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

任务 API 服务 - MCP TypeScript 实现

使用 TypeScript 编写的任务管理 API 的 Model Context Protocol(MCP)实现。本项目既是一个参考实现,也是一个功能完善的任务管理服务。

概述

此 MCP 服务连接到外部任务 API 服务,并为任务管理提供标准化接口。它支持两种运行模式:

  1. STDIO 模式:通过标准输入/输出通信,适用于基于 CLI 的应用和 AI Agent
  2. HTTP+SSE 模式:可通过 Web 访问的服务,使用 Server-Sent Events,适用于浏览器和基于 HTTP 的客户端

该服务提供一套完整的任务管理操作、全面的验证和可靠的错误处理。

功能

  • 任务管理操作:

    • 列出已有任务,并支持筛选
    • 创建具有自定义属性的新任务
    • 更新任务详情(描述、状态、类别、优先级)
    • 删除已完成或不再需要的任务
  • 双接口模式:

    • 支持 STDIO 协议,可与命令行和 AI Agent 集成
    • 支持 HTTP+SSE 协议,并提供 Web 界面,方便通过浏览器访问
  • MCP 协议实现:

    • 完整实现 Model Context Protocol
    • 提供用于任务数据结构的资源
    • 提供用于任务操作的工具
    • 错误处理和说明性消息
  • 质量保障:

    • 用于验证的全面测试客户端
    • 测试完成后自动关闭服务
    • 详细验证 API 响应

开始使用

先决条件
  • Node.js 16.x 或更高版本
  • npm 或 pnpm 包管理器
安装
  1. 克隆仓库:

    git clone https://github.com/yourusername/mcp-template-ts.git
    cd mcp-template-ts
    
  2. 安装依赖:

    npm install
    

    或使用 pnpm:

    pnpm install
    
  3. 创建 .env 文件并填写你的任务 API 凭据:

    TASK_MANAGER_API_BASE_URL=https://your-task-api-url.com/api
    TASK_MANAGER_API_KEY=your_api_key_here
    TASK_MANAGER_HTTP_PORT=3000
    
  4. 构建项目:

    npm run build
    
运行服务
STDIO 模式(用于 CLI/AI 集成)
npm start

或

node dist/index.js
HTTP 模式(用于 Web 访问)
npm run start:http

或

node dist/http-server.js

默认情况下,HTTP 服务运行在端口 3000 上。你可以通过设置 TASK_MANAGER_HTTP_PORT 环境变量来更改端口。

测试

运行全面的测试套件以验证功能:

npm test

此操作将:

  1. 构建项目
  2. 启动一个服务实例
  3. 将测试客户端连接到服务
  4. 运行所有任务操作
  5. 验证响应是否正确
  6. 自动关闭服务

使用 MCP 客户端

STDIO 客户端

要从应用程序连接到 STDIO 服务:

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import * as path from 'path';

// Create transport
const transport = new StdioClientTransport({
  command: 'node',
  args: [path.resolve('path/to/dist/index.js')]
});

// Initialize client
const client = new Client(
  {
    name: "your-client-name",
    version: "1.0.0"
  },
  {
    capabilities: {
      prompts: {},
      resources: {},
      tools: {}
    }
  }
);

// Connect to server
await client.connect(transport);

// Example: List all tasks
const listTasksResult = await client.callTool({
  name: "listTasks",
  arguments: {}
});

// Example: Create a new task
const createTaskResult = await client.callTool({
  name: "createTask",
  arguments: {
    task: "Complete project documentation",
    category: "Documentation",
    priority: "high"
  }
});

// Clean up when done
await client.close();
HTTP 客户端

要从浏览器连接到 HTTP 服务:

<!DOCTYPE html>
<html>
<head>
  <title>Task Manager</title>
  <script type="module">
    import { Client } from 'https://cdn.jsdelivr.net/npm/@modelcontextprotocol/sdk/dist/esm/client/index.js';
    import { SSEClientTransport } from 'https://cdn.jsdelivr.net/npm/@modelcontextprotocol/sdk/dist/esm/client/sse.js';

    document.addEventListener('DOMContentLoaded', async () => {
      // Create transport
      const transport = new SSEClientTransport('http://localhost:3000/mcp');
      
      // Initialize client
      const client = new Client(
        {
          name: "browser-client",
          version: "1.0.0"
        },
        {
          capabilities: {
            prompts: {},
            resources: {},
            tools: {}
          }
        }
      );

      // Connect to server
      await client.connect(transport);
      
      // Now you can use client.callTool() for tasks
    });
  </script>
</head>
<body>
  <h1>Task Manager</h1>
  
</body>
</html>

可用工具

listTasks

列出所有可用任务。

const result = await client.callTool({
  name: "listTasks",
  arguments: {
    // Optional filters
    status: "pending", // Filter by status
    category: "Work",  // Filter by category
    priority: "high"   // Filter by priority
  }
});
createTask

创建新任务。

const result = await client.callTool({
  name: "createTask",
  arguments: {
    task: "Complete the project report",  // Required: task description
    category: "Work",                     // Optional: task category
    priority: "high"                      // Optional: low, medium, high
  }
});
updateTask

更新已有任务。

const result = await client.callTool({
  name: "updateTask",
  arguments: {
    taskId: 123,                       // Required: ID of task to update
    task: "Updated task description",  // Optional: new description
    status: "done",                    // Optional: pending, started, done
    category: "Personal",              // Optional: new category
    priority: "medium"                 // Optional: low, medium, high
  }
});
deleteTask

删除任务。

const result = await client.callTool({
  name: "deleteTask",
  arguments: {
    taskId: 123  // Required: ID of task to delete
  }
});

环境变量

变量描述默认值
TASK_MANAGER_API_BASE_URL外部任务 API 的 URL无(必填)
TASK_MANAGER_API_KEY用于身份验证的 API 密钥无(必填)
TASK_MANAGER_HTTP_PORTHTTP 服务的端口3000
PORT备用端口名称(优先级更高)无

项目结构

mcp-template-ts/
├── dist/               # Compiled JavaScript files
├── src/                # TypeScript source files
│   ├── index.ts        # STDIO server entry point
│   ├── http-server.ts  # HTTP+SSE server entry point
│   ├── test-client.ts  # Test client implementation
├── .env                # Environment variables
├── package.json        # Project dependencies
├── tsconfig.json       # TypeScript configuration
└── README.md           # Project documentation

开发

  1. 以监视模式启动 TypeScript 编译器:

    npm run watch
    
  2. 运行测试以验证更改:

    npm test
    

许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。

致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。