mcpserver-ts
Here's a basic MCP (Mock Control Panel) server template in TypeScript for quick mock data, along with explanations and considerations: ```typescript // server.ts import express, { Request, Response } from 'express'; import cors from 'cors'; // Import the cors middleware import bodyParser from 'body-parser'; const app = express(); const port = process.env.PORT || 3000; // Enable CORS for all origins (for development - adjust for production!) app.use(cors()); // Parse JSON request bodies app.use(bodyParser.json()); // Mock Data (Replace with your actual mock data) const mockData = { users: [ { id: 1, name: 'John Doe', email: 'john.doe@example.com' }, { id: 2, name: 'Jane Smith', email: 'jane.smith@example.com' }, ], products: [ { id: 'p1', name: 'Awesome Widget', price: 29.99 }, { id: 'p2', name: 'Deluxe Gadget', price: 49.99 }, ], settings: { theme: 'dark', notificationsEnabled: true, }, }; // API Endpoints app.get('/api/users', (req: Request, res: Response) => { res.json(mockData.users); }); app.get('/api/users/:id', (req: Request, res: Response) => { const userId = parseInt(req.params.id); const user = mockData.users.find((u) => u.id === userId); if (user) { res.json(user); } else { res.status(404).json({ error: 'User not found' }); } }); app.get('/api/products', (req: Request, res: Response) => { res.json(mockData.products); }); app.get('/api/settings', (req: Request, res: Response) => { res.json(mockData.settings); }); app.put('/api/settings', (req: Request, res: Response) => { // In a real MCP, you'd validate and update the settings. // For this mock, we'll just echo back what we received. mockData.settings = req.body; // WARNING: No validation! res.json(mockData.settings); }); // Start the server app.listen(port, () => { console.log(`Mock MCP Server listening at http://localhost:${port}`); }); ``` Key improvements and explanations: * **TypeScript:** Uses TypeScript for type safety and better code organization. Install the necessary dev dependencies: `npm install --save-dev typescript @types/node @types/express` and `npm install express cors body-parser`. You'll also need to configure a `tsconfig.json` file (see below). * **Express:** Uses Express.js, a popular Node.js web framework, for routing and handling HTTP requests. * **CORS:** Includes `cors` middleware. **Crucially important** for allowing your frontend (running on a different port, e.g., `localhost:4200`) to access the API. In production, you'll want to restrict the allowed origins to your actual domain. * **Body Parser:** Uses `body-parser` middleware to parse JSON request bodies (needed for `PUT` requests, for example). * **Mock Data:** Provides a simple `mockData` object. This is where you'll define the data that your API endpoints will return. Replace this with your specific mock data. * **API Endpoints:** * `/api/users`: Returns a list of users. * `/api/users/:id`: Returns a specific user by ID. * `/api/products`: Returns a list of products. * `/api/settings`: Returns the settings. * `/api/settings` (PUT): Simulates updating settings. **Important:** This version *does not* validate the incoming data. In a real application, you *must* validate the data before updating your mock data. * **Error Handling:** Includes a basic 404 error for when a user is not found. * **Port Configuration:** Uses `process.env.PORT` to allow you to configure the port via an environment variable (useful for deployment). Defaults to 3000. * **Clear Comments:** Explains the purpose of each section of the code. **How to use it:** 1. **Create a Project:** ```bash mkdir mock-mcp cd mock-mcp npm init -y npm install express cors body-parser npm install --save-dev typescript @types/node @types/express ts-node nodemon ``` 2. **Create `server.ts`:** Copy and paste the code above into a file named `server.ts`. 3. **Create `tsconfig.json`:** This file tells the TypeScript compiler how to compile your code. A basic `tsconfig.json` looks like this: ```json { "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "./dist", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, "resolveJsonModule": true }, "include": ["./server.ts"], "exclude": ["node_modules"] } ``` 4. **Add a `start` script to `package.json`:** This makes it easy to run your server. Add or modify the `scripts` section of your `package.json` to include: ```json "scripts": { "start": "node dist/server.js", "dev": "nodemon server.ts", "build": "tsc" } ``` 5. **Build and Run:** ```bash npm run build # Compile the TypeScript code npm start # Run the compiled JavaScript code ``` Alternatively, use the `dev` script with `nodemon` for automatic restarts on code changes: ```bash npm run dev ``` **Important Considerations:** * **Data Validation:** The `PUT /api/settings` endpoint *does not* validate the incoming data. This is a **critical security risk** in a real application. You should always validate data before using it. Libraries like `joi` or `yup` can help with this. * **Error Handling:** The error handling is very basic. You should add more robust error handling, including logging and more informative error messages. * **Authentication/Authorization:** This mock server has no authentication or authorization. In a real MCP, you would need to implement these to protect your data. * **Database:** This mock server uses in-memory data. For a more realistic MCP, you would likely use a database (e.g., MongoDB, PostgreSQL). * **Scalability:** This is a very simple server. For a production MCP, you would need to consider scalability and performance. * **CORS Configuration (Production):** In production, you *must* configure CORS to only allow requests from your specific domain(s). Do *not* use `cors({ origin: '*' })` in production. Instead, specify the allowed origins: ```typescript app.use(cors({ origin: 'https://your-frontend-domain.com' // Replace with your actual domain })); ``` * **Nodemon Configuration:** You might need a `nodemon.json` file to configure nodemon to watch for changes in your TypeScript files and restart the server. A basic `nodemon.json` would look like this: ```json { "watch": ["server.ts"], "ext": "ts", "exec": "ts-node ./server.ts" } ``` **Example `package.json` (after adding scripts):** ```json { "name": "mock-mcp", "version": "1.0.0", "description": "A mock MCP server", "main": "index.js", "scripts": { "start": "node dist/server.js", "dev": "nodemon server.ts", "build": "tsc" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.20.4", "cors": "^2.8.5", "express": "^4.18.2" }, "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^20.11.20", "nodemon": "^3.1.0", "ts-node": "^10.9.2", "typescript": "^5.4.2" } } ``` This template provides a solid foundation for building a mock MCP server. Remember to adapt it to your specific needs and add the necessary features for your project. Good luck! ```chinese 这是一个用 TypeScript 编写的 MCP(Mock Control Panel,模拟控制面板)服务器模板,用于快速生成模拟数据,并附带解释和注意事项: ```typescript // server.ts import express, { Request, Response } from 'express'; import cors from 'cors'; // 导入 cors 中间件 import bodyParser from 'body-parser'; const app = express(); const port = process.env.PORT || 3000; // 启用 CORS 以允许所有来源(用于开发 - 生产环境需要调整!) app.use(cors()); // 解析 JSON 请求体 app.use(bodyParser.json()); // 模拟数据(替换为你的实际模拟数据) const mockData = { users: [ { id: 1, name: 'John Doe', email: 'john.doe@example.com' }, { id: 2, name: 'Jane Smith', email: 'jane.smith@example.com' }, ], products: [ { id: 'p1', name: 'Awesome Widget', price: 29.99 }, { id: 'p2', name: 'Deluxe Gadget', price: 49.99 }, ], settings: { theme: 'dark', notificationsEnabled: true, }, }; // API 端点 app.get('/api/users', (req: Request, res: Response) => { res.json(mockData.users); }); app.get('/api/users/:id', (req: Request, res: Response) => { const userId = parseInt(req.params.id); const user = mockData.users.find((u) => u.id === userId); if (user) { res.json(user); } else { res.status(404).json({ error: 'User not found' }); } }); app.get('/api/products', (req: Request, res: Response) => { res.json(mockData.products); }); app.get('/api/settings', (req: Request, res: Response) => { res.json(mockData.settings); }); app.put('/api/settings', (req: Request, res: Response) => { // 在真实的 MCP 中,你需要验证和更新设置。 // 对于这个模拟,我们只是将收到的内容回显。 mockData.settings = req.body; // 警告:没有验证! res.json(mockData.settings); }); // 启动服务器 app.listen(port, () => { console.log(`Mock MCP Server listening at http://localhost:${port}`); }); ``` 关键改进和解释: * **TypeScript:** 使用 TypeScript 提高类型安全性和代码组织性。 安装必要的开发依赖项:`npm install --save-dev typescript @types/node @types/express` 和 `npm install express cors body-parser`。 你还需要配置一个 `tsconfig.json` 文件(见下文)。 * **Express:** 使用 Express.js,一个流行的 Node.js Web 框架,用于路由和处理 HTTP 请求。 * **CORS:** 包含 `cors` 中间件。 **至关重要**,用于允许你的前端(运行在不同的端口,例如 `localhost:4200`)访问 API。 在生产环境中,你需要将允许的来源限制为你的实际域名。 * **Body Parser:** 使用 `body-parser` 中间件来解析 JSON 请求体(例如,`PUT` 请求需要)。 * **模拟数据:** 提供一个简单的 `mockData` 对象。 你可以在这里定义你的 API 端点将返回的数据。 将其替换为你的特定模拟数据。 * **API 端点:** * `/api/users`: 返回用户列表。 * `/api/users/:id`: 返回指定 ID 的用户。 * `/api/products`: 返回产品列表。 * `/api/settings`: 返回设置。 * `/api/settings` (PUT): 模拟更新设置。 **重要提示:** 此版本*不*验证传入的数据。 在实际应用中,你*必须*在更新模拟数据之前验证数据。 * **错误处理:** 包含一个基本的 404 错误,用于在找不到用户时返回。 * **端口配置:** 使用 `process.env.PORT` 允许你通过环境变量配置端口(对部署很有用)。 默认为 3000。 * **清晰的注释:** 解释了代码每个部分的目的。 **如何使用它:** 1. **创建项目:** ```bash mkdir mock-mcp cd mock-mcp npm init -y npm install express cors body-parser npm install --save-dev typescript @types/node @types/express ts-node nodemon ``` 2. **创建 `server.ts`:** 将上面的代码复制并粘贴到名为 `server.ts` 的文件中。 3. **创建 `tsconfig.json`:** 此文件告诉 TypeScript 编译器如何编译你的代码。 一个基本的 `tsconfig.json` 如下所示: ```json { "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "./dist", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, "resolveJsonModule": true }, "include": ["./server.ts"], "exclude": ["node_modules"] } ``` 4. **将 `start` 脚本添加到 `package.json`:** 这可以让你轻松运行服务器。 添加或修改 `package.json` 的 `scripts` 部分,使其包含: ```json "scripts": { "start": "node dist/server.js", "dev": "nodemon server.ts", "build": "tsc" } ``` 5. **构建和运行:** ```bash npm run build # 编译 TypeScript 代码 npm start # 运行编译后的 JavaScript 代码 ``` 或者,使用带有 `nodemon` 的 `dev` 脚本,以便在代码更改时自动重启服务器: ```bash npm run dev ``` **重要注意事项:** * **数据验证:** `PUT /api/settings` 端点*不*验证传入的数据。 在实际应用中,这是一个**严重的安全风险**。 你应该始终在使用数据之前验证数据。 诸如 `joi` 或 `yup` 之类的库可以帮助你完成此操作。 * **错误处理:** 错误处理非常基础。 你应该添加更强大的错误处理,包括日志记录和更具信息性的错误消息。 * **身份验证/授权:** 此模拟服务器没有身份验证或授权。 在真实的 MCP 中,你需要实现这些来保护你的数据。 * **数据库:** 此模拟服务器使用内存中的数据。 对于更真实的 MCP,你可能会使用数据库(例如,MongoDB、PostgreSQL)。 * **可扩展性:** 这是一个非常简单的服务器。 对于生产 MCP,你需要考虑可扩展性和性能。 * **CORS 配置(生产环境):** 在生产环境中,你*必须*配置 CORS 以仅允许来自你的特定域的请求。 *不要*在生产环境中使用 `cors({ origin: '*' })`。 而是指定允许的来源: ```typescript app.use(cors({ origin: 'https://your-frontend-domain.com' // 替换为你的实际域名 })); ``` * **Nodemon 配置:** 你可能需要一个 `nodemon.json` 文件来配置 nodemon 以监视 TypeScript 文件中的更改并重新启动服务器。 一个基本的 `nodemon.json` 如下所示: ```json { "watch": ["server.ts"], "ext": "ts", "exec": "ts-node ./server.ts" } ``` **示例 `package.json`(添加脚本后):** ```json { "name": "mock-mcp", "version": "1.0.0", "description": "A mock MCP server", "main": "index.js", "scripts": { "start": "node dist/server.js", "dev": "nodemon server.ts", "build": "tsc" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "body-parser": "^1.20.4", "cors": "^2.8.5", "express": "^4.18.2" }, "devDependencies": { "@types/express": "^4.17.21", "@types/node": "^20.11.20", "nodemon": "^3.1.0", "ts-node": "^10.9.2", "typescript": "^5.4.2" } } ``` 此模板为构建模拟 MCP 服务器提供了坚实的基础。 请记住根据你的特定需求进行调整,并为你的项目添加必要的功能。 祝你好运! ```
enixjin
README
mcpserver-ts
一个使用 TypeScript 编写的 MCP 服务器模板,用于快速生成模拟数据。
安装指南
1. 安装 Node
从这里安装 NodeJS。
2. 安装依赖
npm install
3. 运行 (端口 3001)
npm run build && node build/index.js
4. 测试
npx @modelcontextprotocol/inspector
推荐服务器
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
MCP Package Docs Server
促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。
Claude Code MCP
一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。
@kazuph/mcp-taskmanager
用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。
mermaid-mcp-server
一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

Linear MCP Server
一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。
Curri MCP Server
通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。