当前位置: 首页 > news >正文

MCP tutorials

tutorials
mcp-servers

Using MCP

Connect to Remote MCP Servers

远程 MCP 服务器扩展了 AI 应用的能力,使其不仅局限于本地环境,还可以访问托管在互联网上的工具、服务和数据源。

目前,许多客户端已经支持远程 MCP 服务器,从而实现广泛的集成可能性。本指南以 Claude 为例,展示如何通过远程 MCP 服务器进行连接。

远程 MCP 服务器的关键优势是其可访问性。与需要在每个设备上安装和配置的本地服务器不同,远程服务器只需有网络连接,就能通过任何 MCP 客户端访问。这使它们非常适合:
• 基于 Web 的 AI 应用
• 强调易用性的集成场景
• 需要服务端处理或认证的服务

什么是 Custom Connectors?

Custom Connectors 是 Claude 与远程 MCP 服务器之间的桥梁。它们允许你将 Claude 直接连接到与你工作流程最相关的工具和数据源,使 Claude 能在你常用的软件中运行,并从外部工具的完整上下文中获取洞察。
通过 Custom Connectors,你可以:
将 Claude 连接到第三方开发者提供的远程 MCP 服务器
自建远程 MCP 服务器,与任何工具集成

Connecting to a Remote MCP Server

略.

Connect to Local MCP Servers

Model Context Protocol (MCP) 服务器通过提供对本地资源和工具的安全、受控访问,扩展了 AI 应用程序的能力。

理解local MCP 服务器

MCP 服务器是运行在你电脑上的程序,通过标准协议为 Claude Desktop 提供特定功能。每个服务器会暴露一组工具,Claude 可以在获得你的批准后使用这些工具。

Host Infra Server 为例,它提供以下工具:
查看主机的型号
查看主机的内存使用情况
查看主机的CPU使用情况

实现Host Infra MCP Server

环境依赖
  1. Claude Desktop
  2. Node.js
  3. uv
代码结构

在这里插入图片描述

tools.py
import platform
import os
import psutil
import jsondef get_host_info() -> str:"""get host informationReturns:str : the host information in JSON format"""info: dict[str, str ] = {"System": platform.system(),"Release": platform.release(),"Machine": platform.machine(),"Processor": platform.processor()}info["cpu_count"] = psutil.cpu_count(logical=False)info["memory_total"] = __to_gib(psutil.virtual_memory().total)return json.dumps(info, indent=4)def __to_gib(bytes_value):return str(round(bytes_value / (1024 ** 3), 2)) + " GiB"def get_memory_detail_info() -> str:"""get memory informationReturns:str: The memory information in JSON format"""memory_info = psutil.virtual_memory()info = {"total": __to_gib(memory_info.total),"available": __to_gib(memory_info.available),"used": __to_gib(memory_info.used),"percent": str(memory_info.percent) + "%"}return json.dumps(info, indent=4)def get_cpu_detail_info() -> str:"""get cpu informationReturns:str: The cpu information in JSON format"""cpu_info = psutil.cpu_times()cpu_percent = psutil.cpu_percent(interval=1)info = {"user": cpu_info.user,"system": cpu_info.system,"idle": cpu_info.idle,"cpu_percent": str(cpu_percent) + "%"}return json.dumps(info, indent=4)if __name__ == "__main__":print(get_host_info())print(get_memory_detail_info())print(get_cpu_detail_info())
host_infra_mcp.py
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import toolsfrom mcp.server.fastmcp import FastMCP
import loggingmcp = FastMCP("host infra mcp server ")
mcp.add_tool(tools.get_host_info, "get_host_info")
mcp.add_tool(tools.get_memory_detail_info, "get_memory_detail_info")
mcp.add_tool(tools.get_cpu_detail_info, "get_cpu_detail_info")@mcp.tool() # 使用注解注入 tool
def foo() -> str:return "Hello from foo!"def main() -> None:mcp.run(transport='stdio')  # or sselogging.info("mcp server started")if __name__ == "__main__":main()

config MCP server to Claude Desktop

Access Developer Settings

在这里插入图片描述

Configure claude_desktop_config.json
{"mcpServers": {"host_infra_mcp": {"command": "uv","args": ["--directory","~/workspaces/mcp_demos/server","run","host_infra_mcp.py"]}}
}
restart claude_desktop and test
case1

在这里插入图片描述

case2

在这里插入图片描述

case3

在这里插入图片描述

inspector


Build an MCP Client

环境依赖uv add fastmcp

code structure

在这里插入图片描述

client.py

import os
import asyncio
from fastmcp import Clientasync def main():server_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../server/host_infra_mcp.py'))client = Client(server_path)async with client:host_info = await client.call_tool("get_host_info")print(f"Host Info: {host_info.data}")memory_info = await client.call_tool("get_memory_detail_info")print(f"Memory Info: {memory_info.data}")cpu_info = await client.call_tool("get_cpu_detail_info")print(f"CPU Info: {cpu_info.data}")if __name__ == "__main__":asyncio.run(main())

结果

---
Host Info: get_host_infoOutput(result='{\n    "System": "Darwin",\n    "Release": "24.6.0",\n    "Machine": "x86_64",\n    "Processor": "i386",\n    "cpu_count": 12,\n    "memory_total": "18.0 GiB"\n}')---
Memory Info: get_memory_detail_infoOutput(result='{\n    "total": "18.0 GiB",\n    "available": "1.02 GiB",\n    "used": "1.7 GiB",\n    "percent": "94.3%"\n}')---
CPU Info: get_cpu_detail_infoOutput(result='{\n    "user": 53391.42,\n    "system": 40173.91,\n    "idle": 501844.89,\n    "cpu_percent": "8.7%"\n}')
http://www.dtcms.com/a/355408.html

相关文章:

  • HOOPS Communicator 2025.6.0更新发布:WebViewer UI全面进化,BIM支持再升级
  • C++(Qt)软件调试---vspkg安装crashpad(34)
  • 浅谈 Java 中的 import static 使用方式
  • Docker 是什么?
  • RabbitMQ-高级特性
  • 机器视觉学习-day09-图像矫正
  • 客户预充值系统(一) - 数据库设计与数据插入
  • JVM——八股文
  • curl、python-requests、postman和jmeter的对应关系
  • DJI无人机云哨DroneID技术解析:天空中的数字身份证
  • 2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测
  • Maven核心用法
  • ubuntu挂载外接硬盘
  • IDEA 中创建 Springboot 项目没有 Java8 选项的解决办法
  • 介绍智慧城管十大核心功能之一:风险预警系统
  • 关于npm安装electron和better-sqlite3失败问题
  • Copilot、Cursor、Trae、ChatGPT 的“四件套”场景选择表
  • 第六届智能计算与人机交互国际研讨会(ICHCI 2025)
  • MySQL 与 ClickHouse 深度对比:架构、性能与场景选择指南
  • 【数字IC后端】引导时钟树CTS的生成方向之anchor driver
  • 详细介绍Linux 内存管理struct page数据结构中的_count和_mapcount有什么区别?
  • Pyomo、PuLP 和 OR-Tools 解决约束优化问题效率对比
  • C# SIMD编程实践:工业数据处理性能优化案例
  • 基于SpringBoot的校园资料分享系统【2026最新】
  • 数据结构-哈夫曼树和B树
  • 安宝特方案丨安宝特工业AR全链路解决方案
  • Centos 8 磁盘扩展xfs文件系统 (LVM)
  • 利用 Java 爬虫获取 AQI 详情数据(代码示例)实战指南
  • 如何使用Windows自带的PnPUtil命令来禁用/停用和启用硬件设备
  • VPC私有域名解析DNS