Skip to main content
Glama

タスク 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アプリケーションとの統合用に構築

One-click Deploy
A
security – no known vulnerabilities
F
license - not found
A
quality - confirmed to work

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