关于 MCP Server - Model Context Protocol
此仓库介绍 Model Context Protocol,并包含一个 Node.js 时间服务,适合构建 MCP 集成的开发者。除服务搭建示例外,还提供跨时区查询和转换时间的工具。
主要功能
- 01MCP 服务概念与搭建示例
- 02Node.js 时间服务
- 03按 IANA 时区获取当前时间
- 04跨时区转换时间
- 05Docker 与 VS Code MCP 配置
适用场景
- 01使用 Python 或 TypeScript 构建 MCP 服务
- 02查询指定时区的当前时间
- 03转换不同时区的时间
MCP 相关
内容说明 MCP 服务可通过 WebSocket 或 stdio 向 AI 客户端提供工具、资源和提示词。仓库中的时间服务提供 `get_current_time` 和 `convert_time` 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 服务 - Model Context Protocol
📖 MCP 服务介绍
Model Context Protocol (MCP) 是由 Anthropic 开发的一种开放协议,旨在标准化 AI 模型与外部数据源和工具的交互方式。MCP 服务是这一生态系统中的重要组成部分,充当 AI 模型与各种服务、数据库和 API 之间的桥梁。
🔑 核心概念
- MCP 服务:一种为 AI 模型提供工具、资源和提示词的后端服务
- 标准协议:使用 JSON-RPC 2.0,确保不同系统之间的兼容性
- 客户端-服务端架构:AI 应用(客户端)通过 WebSocket 或 stdio 与 MCP 服务通信
🌟 实际应用
1. 数据库集成
AI Model ↔ MCP Server ↔ Database (MySQL, PostgreSQL, MongoDB)
- 允许 AI 直接查询和分析数据
- 从数据库自动生成报告和洞察
2. 连接外部 API
AI Model ↔ MCP Server ↔ External APIs (Weather, Stock, Social Media)
- 从 Web 服务获取实时数据
- 执行自动化任务
3. 文件系统管理
AI Model ↔ MCP Server ↔ Local/Cloud Storage
- 读取、写入和处理文件
- 备份和同步数据
🚀 常见用例
1. 商业智能与分析
- 说明:自动分析业务数据
- 示例:从 sales 数据库生成月度收入报告
# MCP Server cung cấp tool để query database
tools = [
{
"name": "query_sales_db",
"description": "Query sales database",
"parameters": {"query": "string"}
}
]
2. 客户支持自动化
- 说明:通过 AI 聊天机器人为客户提供支持
- 示例:查询订单信息、更新工单状态
tools = [
{
"name": "get_order_status",
"description": "Get customer order status",
"parameters": {"order_id": "string"}
}
]
3. 内容管理
- 说明:自动管理和创建内容
- 示例:自动创建博客文章、更新 CMS
tools = [
{
"name": "publish_content",
"description": "Publish content to CMS",
"parameters": {"title": "string", "content": "string"}
}
]
4. DevOps 与监控
- 说明:监控系统并自动化部署
- 示例:检查服务器运行状况、部署应用程序
tools = [
{
"name": "check_server_health",
"description": "Check server health status",
"parameters": {"server_id": "string"}
}
]
5. 电子商务集成
- 说明:通过 AI 管理在线商店
- 示例:更新库存、处理订单、提供客户服务
🛠️ 如何创建 MCP 服务
步骤 1:安装环境
# Python
pip install mcp
# Node.js
npm install @modelcontextprotocol/sdk
# TypeScript
npm install @modelcontextprotocol/sdk typescript
步骤 2:创建基础 MCP 服务(Python)
#!/usr/bin/env python3
import asyncio
import json
from mcp.server import Server
from mcp.server.models import InitializationOptions
from mcp.server.stdio import stdio_server
from mcp.types import TextContent, Tool
server = Server("my-mcp-server")
@server.list_tools()
async def handle_list_tools() -> list[Tool]:
"""Danh sách các tools có sẵn"""
return [
Tool(
name="echo",
description="Echo back the input",
inputSchema={
"type": "object",
"properties": {
"message": {"type": "string"}
},
"required": ["message"]
}
)
]
@server.call_tool()
async def handle_call_tool(name: str, arguments: dict) -> list[TextContent]:
"""Xử lý tool calls"""
if name == "echo":
message = arguments.get("message", "")
return [TextContent(type="text", text=f"Echo: {message}")]
else:
raise ValueError(f"Unknown tool: {name}")
async def main():
async with stdio_server() as (read_stream, write_stream):
await server.run(
read_stream,
write_stream,
InitializationOptions(
server_name="my-mcp-server",
server_version="1.0.0",
capabilities=server.get_capabilities()
)
)
if __name__ == "__main__":
asyncio.run(main())
步骤 3:使用 TypeScript 创建 MCP 服务
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
class MyMCPServer {
private server: Server;
constructor() {
this.server = new Server(
{
name: 'my-mcp-server',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
this.setupHandlers();
}
private setupHandlers() {
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
tools: [
{
name: 'calculator',
description: 'Perform basic math operations',
inputSchema: {
type: 'object',
properties: {
operation: { type: 'string', enum: ['add', 'subtract', 'multiply', 'divide'] },
a: { type: 'number' },
b: { type: 'number' },
},
required: ['operation', 'a', 'b'],
},
},
],
}));
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === 'calculator') {
const { operation, a, b } = args as any;
let result: number;
switch (operation) {
case 'add':
result = a + b;
break;
case 'subtract':
result = a - b;
break;
case 'multiply':
result = a * b;
break;
case 'divide':
result = a / b;
break;
default:
throw new Error(`Unknown operation: ${operation}`);
}
return {
content: [{ type: 'text', text: `Result: ${result}` }],
};
}
throw new Error(`Unknown tool: ${name}`);
});
}
async run() {
const transport = new StdioServerTransport();
await this.server.connect(transport);
}
}
const server = new MyMCPServer();
server.run().catch(console.error);
步骤 4:配置客户端以使用 MCP 服务
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["path/to/your/mcp_server.py"]
}
}
}
步骤 5:测试 MCP 服务
# Test với stdio
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | python mcp_server.py
📁 仓库中的项目
🕐 MCP 时间服务(Node.js)
位置:mcp-time-node/
一个使用 Node.js 编写的 MCP 服务,提供与时间相关的功能:
✨ 功能
- 获取当前时间:获取指定时区的当前时间
- 转换时间:在不同时区之间转换时间
- IANA 时区支持:完整支持 IANA 标准中的时区
🚀 使用方法
# Chạy với Node.js trực tiếp
cd mcp-time-node
npm install
npm start
# Chạy demo
npm run demo
# Chạy với Docker
docker build -t mcp-time-server .
docker run -i --rm mcp-time-server
📋 可用工具
-
get_current_time
- 获取当前时间
- 参数:
timezone(IANA 时区名称) - 示例:
Asia/Ho_Chi_Minh、America/New_York、Europe/London
-
convert_time
- 在不同时区之间转换时间
- 参数:
time:HH:MM 格式的时间source_timezone:源时区target_timezone:目标时区
🐳 Docker 支持
项目已通过 Dockerfile 容器化,并针对生产环境进行了优化:
- 基础镜像:
node:18-alpine - 安全性:使用非 root 用户
- 体积:占用空间极小
⚙️ VS Code MCP 集成
已在 .vscode/mcp.json 中预先配置 2 个选项:
- mcp-time-node:直接使用 Node.js 运行
- mcp-time-docker:使用 Docker 容器运行
💡 使用示例
// Lấy thời gian hiện tại ở Việt Nam
{
"name": "get_current_time",
"arguments": {
"timezone": "Asia/Ho_Chi_Minh"
}
}
// Chuyển đổi 14:30 từ Việt Nam sang New York
{
"name": "convert_time",
"arguments": {
"time": "14:30",
"source_timezone": "Asia/Ho_Chi_Minh",
"target_timezone": "America/New_York"
}
}
🔮 MCP 的未来
1. 扩展生态系统
- 更多提供方:数据库、云服务、IoT 设备
- 社区驱动:开源工具和扩展
- 标准化:成为 AI 集成的行业标准
2. 性能改进
- 缓存机制:优化响应时间
- 并行处理:同时处理多个请求
- 负载均衡:为高流量应用分配负载
3. 安全增强
- 身份验证与授权:OAuth2、JWT tokens
- 数据加密:端到端加密
- 审计日志:跟踪并记录所有交互
4. AI 原生功能
- 上下文感知:更好地理解先前对话中的上下文
- 学习能力:自主学习并提升性能
- 多模态支持:处理文本、图像、音频和视频
5. 企业级应用
- 企业级安全性:符合 GDPR、HIPAA 要求
- 可扩展性:支持数百万个并发连接
- 监控与分析:提供详细的仪表板和指标
6. 集成趋势
Current: AI ↔ MCP Server ↔ Single Service
Future: AI ↔ MCP Server ↔ Multiple Services (Orchestration)
- 服务编排:一个 MCP 服务管理多个服务
- 工作流自动化:自动化复杂的业务流程
- 实时协作:多个 AI Agent 协同工作
📈 预计路线图
| 时间线 | 里程碑 |
|---|---|
| 2025 Q2 | MCP v2.0,性能有所提升 |
| 2025 Q3 | 企业级安全功能 |
| 2025 Q4 | 多模态支持 |
| 2026 Q1 | 服务编排平台 |
| 2026 Q2 | AI Agent 协作框架 |
🎯 结论
MCP 服务正成为将 AI 集成到实际系统中的核心。凭借灵活连接 AI 模型与外部服务的能力,MCP 为自动化和智能应用带来了无数可能性。
要点:
- ✅ 面向 AI 集成的标准化协议
- ✅ 易于实施和维护
- ✅ 生态系统正在蓬勃发展
- ✅ 随着企业级应用的普及,前景十分广阔
立即开始使用 MCP 服务,在你的应用中发挥 AI 的强大力量!
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。