mcpField
M
MCP Server - Model Context Protocol

MCP Server - Model Context Protocol

本地服务
github.com/maithanhduyan开发工具068 周前更新

关于 MCP Server - Model Context Protocol

此仓库介绍 Model Context Protocol,并包含一个 Node.js 时间服务,适合构建 MCP 集成的开发者。除服务搭建示例外,还提供跨时区查询和转换时间的工具。

主要功能

  1. 01MCP 服务概念与搭建示例
  2. 02Node.js 时间服务
  3. 03按 IANA 时区获取当前时间
  4. 04跨时区转换时间
  5. 05Docker 与 VS Code MCP 配置

适用场景

  1. 01使用 Python 或 TypeScript 构建 MCP 服务
  2. 02查询指定时区的当前时间
  3. 03转换不同时区的时间

MCP 相关

内容说明 MCP 服务可通过 WebSocket 或 stdio 向 AI 客户端提供工具、资源和提示词。仓库中的时间服务提供 `get_current_time` 和 `convert_time` 工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"maithanhduyan": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

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
📋 可用工具
  1. get_current_time

    • 获取当前时间
    • 参数:timezone(IANA 时区名称)
    • 示例:Asia/Ho_Chi_Minh、America/New_York、Europe/London
  2. 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 Q2MCP v2.0,性能有所提升
2025 Q3企业级安全功能
2025 Q4多模态支持
2026 Q1服务编排平台
2026 Q2AI Agent 协作框架

🎯 结论

MCP 服务正成为将 AI 集成到实际系统中的核心。凭借灵活连接 AI 模型与外部服务的能力,MCP 为自动化和智能应用带来了无数可能性。

要点:

  • ✅ 面向 AI 集成的标准化协议
  • ✅ 易于实施和维护
  • ✅ 生态系统正在蓬勃发展
  • ✅ 随着企业级应用的普及,前景十分广阔

立即开始使用 MCP 服务,在你的应用中发挥 AI 的强大力量!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。