mcp-simulator
MCP Simulator (Node.js MCP Server)
mcp simulator ist ein leichtgewichtiger MCP-Server (Model Context Protocol Server), der auf Node.js basiert. Dieses Projekt verwendet ein Design ohne externe Abhängigkeiten (nur das native http-Modul) und bietet über die modularen McpServer- und McpRegistry-Komponenten dynamische Tool-Registrierung und HTTP-Fernaufrufe (RPC).
🚀 Kernfunktionen
Keine externen Abhängigkeiten: Verlässt sich vollständig auf das native
http-Modul von Node.js, ohne Frameworks wieexpress.Neue MCP-Kernarchitektur:
McpRegistry: Verwaltet die Tool-Liste und Ausführungslogik (unterstützt synchrone und asynchroneasync-Methoden).McpServer: Bietet einen HTTP-POST-basierten Ausführungseinstiegspunkt und eine einheitliche JSON-Antwortkapselung.
Einfaches API-Registrierungsdesign: Bietet eine
register()-Schnittstelle mit Verkettungsunterstützung; es genügen zwei Parameter – „Tool-Definition" und „Ausführungs-Callback" – für eine einfache Registrierung.Integrierte Tools und Reflexionsmechanismus:
Integriertes
tool/listzum dynamischen Abfragen aller registrierten Tools.Bietet vollständige Beispiele für synchrone Berechnungen, Textverarbeitung sowie asynchrone (
async) simulierte API-Anfragen (fetch-posts).
Related MCP server: Swagger/Postman MCP Server
📁 Dateistruktur
mcp-simulator/
├── mcp.core.js # 伺服器核心引擎(定義 McpServer 與 McpRegistry 類別)
├── index.js # 專案主入口(載入核心引擎並註冊具體工具)
├── index.http # HTTP API 測試腳本(搭配 VS Code REST Client 使用)
├── package.json # 專案配置文件
└── README.md # 本專案說明文件⚙️ Schnellstart
Server starten
Führen Sie im Projektstammverzeichnis den folgenden Befehl aus:
node index.jsDer Server lauscht standardmäßig auf Port 8889 (oder liest die Umgebungsvariable PORT). Nach dem Start zeigt die Konsole Folgendes an:
Server running at 8889🔌 API-Protokollspezifikation
Alle API-Aufrufe erfolgen über einen einzigen Einstiegspunkt.
Anfragemethode:
POSTServeradresse:
http://localhost:8889Anfrage-Header:
Content-Type: application/jsonAnfrageformat (Payload):
{ "name": "要調用的工具名稱", "args": { "參數鍵": "參數值" } }
Einheitliche Antwortstruktur (Response)
Nach erfolgreicher Verarbeitung aller Anfragen gibt der Server eine einheitlich gekapselte JSON-Struktur zurück:
{
"code": 200,
"message": "success",
"data": {
/* 工具回傳的原始結果 */
}
}Übersicht der Server-Fehlerstatus
HTTP-Statuscode | Szenario | Antwortinhalt (JSON) |
200 | Header-Fehler (application/json nicht angegeben) |
|
200 | JSON-Formatfehler (nicht analysierbar) |
|
200 | Kein Tool-Name angegeben (Feld |
|
200 | Aufruf eines nicht registrierten Tools |
|
🛠️ Beispiele für integrierte Methodenaufrufe
Im Folgenden finden Sie tatsächliche Aufrufdaten am Beispiel von localhost:8889:
1. Verfügbare Tool-Liste abrufen (tool/list)
Listet alle im Server registrierten Tool-Definitionen auf.
Anfrage-Payload:
{"name": "tool/list", "args": {}}Antwortbeispiel:
{ "code": 200, "message": "success", "data": [ { "name": "info", "description": "..." }, { "name": "hello", "description": "just say hello to someone", "args": { "username": "string" } }, { "name": "calculate", "description": "calculate sum of two numbers", "args": { "a": "number", "b": "number" } }, { "name": "fetch-posts", "description": "fetch posts from https://jsonplaceholder.typicode.com/posts" } ] }
2. Summe zweier Zahlen berechnen (calculate)
Anfrage-Payload:
{"name": "calculate", "args": {"a": 20, "b": 30}}Antwortbeispiel:
{ "code": 200, "message": "success", "data": { "result": 50 } }
3. Asynchroner Anfragentest (fetch-posts)
Demonstriert die Verwendung von async-Callback-Funktionen und gibt eine Reihe von Beispieldaten von Benutzern zurück (Array).
Anfrage-Payload:
{"name": "fetch-posts"}Antwortbeispiel:
{ "code": 200, "message": "success", "data": [ { "id": 1, "name": "Leanne Graham", "username": "Bret", "email": "Sincere@april.biz" // ... (其他資料略) } ] }
📝 Entwicklung und Erweiterung benutzerdefinierter Tools
Sie können index.js ändern und Ihre Tools über verkettete .register()-Aufrufe hinzufügen.
API-Signatur
server.register(toolDefinition, callback);toolDefinition(Object): Mussnameenthalten und kann optionaldescriptionundargs(Parameterdefinitionen) bereitstellen.callback(Function / Async Function): Der Callback, der beim Empfang einer Anfrage ausgeführt wird. Erhält ein einzelnes Objektargument ausreq.params.args.
Registrierungsbeispiel
const { McpServer } = require("./mcp.core");
new McpServer(8889)
// 註冊一個需要參數的非同步工具
.register(
{
name: "get_user",
description: "獲取特定使用者資料",
args: { userId: "number" },
},
async ({ userId }) => {
// ⚠️ 必須使用物件解構讀取參數
const user = await database.find(userId);
return { result: user };
},
)
.start();💡 Wichtige Hinweise für die Entwicklung:
Parameterempfang: Da die vom Client gesendeten
argsals einzelnes Objekt an die Callback-Funktion übergeben werden, müssen Sie bei mehreren definierten Parametern unbedingt Objektdestrukturierung mit{ param1, param2 }in der Callback-Funktion verwenden.Asynchrone Unterstützung:
McpRegistryführt Tools intern mitawaitaus. Sie können in der Callback-Funktion bedenkenlosasync/awaitfür Datenbankabfragen oder Netzwerkanfragen verwenden.
📄 Lizenz
Dieses Projekt ist unter den Bedingungen der MIT License als Open Source lizenziert.
This server cannot be deployed
Maintenance
Related MCP Connectors
AI-callable tools for API mocking, testing, monitoring, security, and automation.
API Tool Calls: Home cost planners, proofreading, QR and barcodes, page to Markdown, SEO checks and recalls. Free agent tools: 20 calls/day per IP, no key.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
270 pay-per-call AI tools for agents, paid via x402 (USDC on Base). No signup, no API keys.
Related MCP Servers
- AlicenseBqualityDmaintenanceA lightweight, modular API service that provides useful tools like weather, date/time, calculator, search, email, and task management through a RESTful interface, designed for integration with AI agents and automated workflows.51MIT
- FlicenseNot gradedqualityDmaintenanceServer that ingests Swagger/OpenAPI specifications and Postman collections, providing just 4 strategic tools that allow AI agents to dynamically discover and interact with APIs instead of generating hundreds of individual tools.3-
- AlicenseNot gradedqualityDmaintenanceA lightweight Node.js-based MCP server that exposes custom tools via HTTP and Server-Sent Events (SSE) for clients like Postman. It allows users to register tools with type-safe validation to establish bidirectional communication with MCP clients.1,107 npm1MIT
- FlicenseNot gradedqualityDmaintenanceA modular server for managing and registering tools, enabling extensible functionality through tool registration and configuration.-