关于 MCP Server Implementation in TypeScript
这是一个用 TypeScript 编写的 MCP 服务,可访问 SQLite 员工数据并执行网页搜索,还提供会话管理、SSE 更新和 Swagger API 文档。
主要功能
- 01访问 SQLite 员工数据库
- 02按姓名或部门查找员工
- 03网页搜索工具
- 04会话管理与 SSE 更新
- 05Swagger API 文档
适用场景
- 01检索或筛选员工记录
- 02通过 MCP 客户端搜索网页
MCP 相关
通过 MCP 端点提供员工查询和网页搜索工具,支持会话初始化、工具列表与执行,以及结束会话。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
TypeScript 中的 MCP 服务实现
这是一个 Model Context Protocol(MCP)服务的 TypeScript 实现。该服务提供一组工具,用于与数据库交互和执行网络搜索。
功能
- MCP 协议实现
- SQLite 数据库集成
- 网络搜索功能
- RESTful API 端点
- 使用 Swagger UI 的交互式 API 文档
- CORS 支持
- 会话管理
- 用于实时更新的服务器发送事件(SSE)
前提条件
- Node.js(v14 或更高版本)
- npm(v6 或更高版本)
安装
- 克隆仓库:
git clone https://github.com/yourusername/mcp-typescript-workshop.git
cd mcp-typescript-workshop
- 安装依赖项:
npm install
- 构建项目:
npm run build
运行服务
开发模式
npm run dev
生产模式
npm start
服务默认在端口 3000 上启动。你可以访问:
- API 文档:http://localhost:3000/api-docs
- MCP 端点:http://localhost:3000/mcp
测试服务
你可以使用 curl 命令测试服务。以下是测试所有功能的完整步骤:
- 初始化新会话:
curl -v -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{},"id":1}'
这将返回一个会话 ID,后续请求需要用到它。
- 列出可用工具:
curl -v -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"list_tools","params":{},"id":2}'
- 获取所有员工:
curl -v -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"call_tool","params":{"name":"get_employees","arguments":{}},"id":3}'
- 按部门搜索员工:
curl -v -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"call_tool","params":{"name":"search_employees","arguments":{"department":"Engineering"}},"id":4}'
- 执行网络搜索:
curl -v -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-d '{"jsonrpc":"2.0","method":"call_tool","params":{"name":"web_search","arguments":{"query":"Model Context Protocol"}},"id":5}'
- 终止会话:
curl -v -X DELETE http://localhost:3000/mcp \
-H "mcp-session-id: YOUR_SESSION_ID"
注意:将 YOUR_SESSION_ID 替换为初始化请求返回的会话 ID。
预期响应
- 初始化响应:
{
"jsonrpc": "2.0",
"result": {
"sessionId": "e6c389d7-e90a-4d09-a916-47bc5edd365e",
"serverInfo": {
"name": "workshop-typescript-server",
"version": "1.0.0"
}
},
"id": 1
}
- 获取员工响应:
{
"jsonrpc": "2.0",
"result": {
"content": [{
"type": "text",
"text": "Employees:\nID: 1, Name: Alice Johnson, Department: Engineering, Salary: $85000\nID: 2, Name: Bob Smith, Department: Marketing, Salary: $62000\nID: 3, Name: Carol Davis, Department: Engineering, Salary: $92000\nID: 4, Name: David Wilson, Department: Sales, Salary: $58000\n"
}]
},
"id": 3
}
API 文档
服务运行时,可通过 http://localhost:3000/api-docs 查看 API 文档。文档包括:
- 所有可用端点
- 请求/响应架构
- 交互式测试界面
- 请求和响应示例
可用端点
POST /mcp
MCP 通信的主端点,负责处理:
- 会话初始化
- 工具列表
- 工具执行
GET /mcp
用于实时更新的服务器发送事件(SSE)端点。
DELETE /mcp
用于终止 MCP 会话的端点。
可用工具
-
get_employees
- 描述:从数据库获取所有员工
- 无需输入参数
-
web_search
- 描述:搜索网络信息
- 输入参数:
- query(字符串):搜索查询
-
search_employees
- 描述:按部门或姓名搜索员工
- 输入参数:
- department(字符串,可选):要搜索的部门
- name(字符串,可选):要搜索的姓名
会话管理
服务使用会话 ID 在请求之间保持状态。会话 ID:
- 在初始化期间生成
- 后续请求需要在
mcp-session-id标头中提供 - 会话终止时自动清理
错误处理
服务会按照以下格式返回详细的错误响应:
{
"jsonrpc": "2.0",
"error": {
"code": -32000,
"message": "Error description"
},
"id": null
}
开发
项目结构
src/
├── server.ts # Main server implementation
├── swagger.ts # API documentation configuration
└── types/ # TypeScript type definitions
构建
npm run build
测试
npm test
许可证
本项目采用 ISC 许可证授权,详情请参阅 LICENSE 文件。
贡献
- Fork 此仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add some amazing feature') - 推送到分支(
git push origin feature/amazing-feature) - 创建 Pull Request
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。