Skip to main content
Glama
milkosten

Task API Server

by milkosten

タスク API サーバー - MCP TypeScript 実装

TypeScriptで記述されたタスク管理APIのモデルコンテキストプロトコル(MCP)実装。このプロジェクトは、リファレンス実装と機能的なタスク管理サーバーの両方として機能します。

概要

このMCPサーバーは外部のTask APIサービスに接続し、タスク管理のための標準化されたインターフェースを提供します。2つのランタイムモードをサポートしています。

  1. STDIO モード: CLI ベースのアプリケーションと AI エージェントの標準入出力通信

  2. HTTP+SSE モード: ブラウザおよび HTTP ベースのクライアント向けの Server-Sent Events を備えた Web アクセス可能なサーバー

サーバーは、タスク管理操作、広範な検証、および堅牢なエラー処理の完全なセットを提供します。

Related MCP server: Task Manager MCP Server

特徴

  • タスク管理操作:

    • フィルタリング機能を使用して既存のタスクを一覧表示する

    • カスタマイズ可能なプロパティを持つ新しいタスクを作成する

    • タスクの詳細(説明、ステータス、カテゴリ、優先度)を更新します

    • 完了または不要になったらタスクを削除する

  • デュアルインターフェースモード:

    • コマンドラインと AI エージェントの統合のための STDIO プロトコルのサポート

    • ブラウザベースのアクセスのためのWebインターフェースを備えたHTTP + SSEプロトコル

  • MCPプロトコル実装:

    • モデルコンテキストプロトコルの完全な実装

    • タスクデータ構造のリソース

    • タスク操作のためのツール

    • エラー処理と情報メッセージ

  • 品質保証

    • 検証のための包括的なテストクライアント

    • テスト完了後の自動サーバーシャットダウン

    • 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. Task API 資格情報を使用して.envファイルを作成します。

    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 環境変数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>
  <!-- Your interface elements here -->
</body>
</html>

利用可能なツール

タスク一覧

利用可能なすべてのタスクを一覧表示します。

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
  }
});

タスク作成

新しいタスクを作成します。

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
  }
});

タスクの更新

既存のタスクを更新します。

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
  }
});

タスクの削除

タスクを削除します。

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

環境変数

変数

説明

デフォルト

タスクマネージャーAPIベースURL

外部タスク API の URL

なし(必須)

タスクマネージャーAPIキー

認証用のAPIキー

なし(必須)

タスクマネージャーHTTPポート

HTTPサーバーのポート

3000

ポート

代替ポート名(優先)

なし

プロジェクト構造

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 ファイルを参照してください。

謝辞

  • このプロジェクトはMCPプロトコル実装に@modelcontextprotocol/sdkを使用します

  • AIツールやWebアプリケーションとの統合用に構築

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/milkosten/task-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server