> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# MCP服务器开发指南 (1)
- URL: https://www.hubwiz.com/blog/mcp-server-development-guide-1/
- Published: 2025-02-22T20:52:42.000Z
- Updated: 2025-02-27T09:42:28.000Z
- Description: 如果没有像MCP这样的接口，LLM只能依赖其内置的能力和训练数据。在本教程中，我们将从MCP的核心概念之一：资源开始。
- Author: admin
- Tags: APPLICATION, MCP, #Import 2026-10-14 14:41

[模型上下文协议](https://modelcontextprotocol.io/introduction?ref=hubwiz.com)（MCP）是一种标准化的方法，使大型语言模型（LLM）如[Claude](https://claude.ai/?ref=hubwiz.com)能够安全地与外部数据和功能进行交互。可以将其视为抬头显示器或AI的USB端口——它提供了一个通用接口，让任何MCP兼容的LLM能够连接到您的数据和工具。

MCP提供了一个集中化的协议，简化了为AI开发即插即用服务的过程。与其他可能需要为每个AI模型定制实现的集成方法不同，MCP提供了一种标准化的方法，可以在不同的LLM之间工作。

如果没有像MCP这样的接口，LLM只能依赖其内置的能力和训练数据。有了MCP，它们可以被赋予以下能力：

- 读取文件和数据库
- 执行命令
- 访问API
- 与本地工具交互
- 更多！

所有这些操作都在用户监督和许可下进行，使其既强大又安全。

在本教程中，我们将从[MCP的核心概念之一：资源](https://modelcontextprotocol.io/docs/concepts/resources?ref=hubwiz.com)开始。

## 1、什么是MCP资源？

资源是MCP用来向LLM暴露只读数据的方式。一个资源是可以读取的内容，例如：

- 你计算机上的文件
- 数据库记录
- API响应
- 应用程序数据
- 系统信息

每个资源都有：

- 一个唯一的URI（如`file:///example.txt`或`database://users/123`）
- 显示名称
- 可选元数据（描述、MIME类型）
- 内容（文本或二进制数据）

为什么使用资源？

资源让你以受控且标准化的方式将数据暴露给LLM。以下是一些现实世界中的例子：

文档服务器：

```
// 暴露您公司的文档  
"docs://api/reference" -> API文档  
"docs://guides/getting-started" -> 用户指南

```

> 用户：“能否解释一下我们的API速率限制策略？”  
> AI助手：“让我查看一下API文档……根据文档，每分钟有100次请求的限制……”

日志分析服务器：

```
"logs://system/today" -> 今天的系统日志  
"logs://errors/recent" -> 最近的错误消息

```

> 用户：“我们系统今天发生了什么错误？”  
> AI助手：“查看今天的日志，我看到三个关键错误……”

客户数据服务器：

```
"customers://profiles/summary" -> 客户概览  
"customers://feedback/recent" -> 最新的反馈

```

> 用户：“最近客户反馈的整体情绪如何？”  
> AI助手：“分析最新的反馈，客户总体上是积极的，但……”

## 2、开发环境搭建

首先，创建一个新的目录并初始化一个TypeScript项目：

```
mkdir hello-mcp  
cd hello-mcp  
npm init -y  
npm install @modelcontextprotocol/sdk  
npm install -D typescript @types/node

```

在你喜欢的IDE中打开该目录。

让我们打开`package.json`并做一些修改。删除那行`"main": index.js`。添加一行替代，内容为`"type": "module"`。最后，在`"scripts"`下添加一个名为`"build"`的脚本，并将其值设置为`tsc`。

```
{  
  "name": "hello-mcp",  
  "version": "1.0.0",  
  "type": "module",  
  "scripts": {  
    "build": "tsc",  
    "test": "echo \"Error: no test specified\" && exit 1"  
  },  
  "keywords": [],  
  "author": "",  
  "license": "ISC",  
  "description": "",  
  "dependencies": {  
    "@modelcontextprotocol/sdk": "^1.1.0"  
  },  
  "devDependencies": {  
    "@types/node": "^22.10.5",  
    "typescript": "^5.7.2"  
  }  
}

```

最后，创建一个名为`tsconfig.json`的文件，并添加以下代码：

```
{  
  "compilerOptions": {  
    "target": "ES2022",  
    "module": "Node16",  
    "moduleResolution": "Node16",  
    "outDir": "./build",  
    "rootDir": "./src",  
    "strict": true,  
    "esModuleInterop": true,  
    "skipLibCheck": true,  
    "forceConsistentCasingInFileNames": true  
  },  
  "include": ["src/**/*"]  
}

```

现在环境已经设置好并准备好编码了。

## 3、创建第一个MCP资源服务器

在`src`目录中创建一个新的索引文件（`src/index.ts`），并添加以下代码：

```
import { Server } from "@modelcontextprotocol/sdk/server/index.js";  
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";  
import {  
  ListResourcesRequestSchema,  
  ReadResourceRequestSchema,  
} from "@modelcontextprotocol/sdk/types.js";  
  
// 使用资源功能初始化服务器  
const server = new Server(  
  {  
    name: "hello-mcp",  
    version: "1.0.0",  
  },  
  {  
    capabilities: {  
      resources: {}, // 启用资源  
    },  
  }  
);  
// 当客户端请求时列出可用资源  
server.setRequestHandler(ListResourcesRequestSchema, async () => {  
  return {  
    resources: [  
      {  
        uri: "hello://world",  
        name: "Hello World Message",  
        description: "一条简单的问候消息",  
        mimeType: "text/plain",  
      },  
    ],  
  };  
});  
// 当客户端请求时返回资源内容  
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {  
  if (request.params.uri === "hello://world") {  
    return {  
      contents: [  
        {  
          uri: "hello://world",  
          text: "你好，世界！这是我的第一个MCP资源。",  
        },  
      ],  
    };  
  }  
  throw new Error("未找到资源");  
});  
// 使用stdio传输启动服务器  
const transport = new StdioServerTransport();  
await server.connect(transport);  
console.info('{"jsonrpc": "2.0", "method": "log", "params": { "message": "服务器正在运行..." }}');

```

这个简单的服务器演示了MCP资源的关键概念：

服务器配置：

- 我们创建了一个带有名称和版本号的服务器实例
- 我们启用了资源功能
- 其他功能如提示和工具将在后面介绍

资源列表：

- `ListResourcesRequestSchema`处理程序告诉客户端有哪些资源存在
- 每个资源都有一个`uri`、`name`和可选的`description`/`mimeType`
- 客户端使用这些信息来发现可用资源

资源读取：

- `ReadResourceRequestSchema`处理程序返回资源内容
- 它接受一个URI并返回匹配的内容
- 内容包括URI和实际数据

传输：

- 我们使用stdio传输进行本地通信
- 这对于桌面MCP实现来说是标准的

## 4、测试你的MCP服务器

有几种方法可以测试你的MCP服务器。一种方法是使用Claude Desktop，你还可以使用MCP Inspector工具在开发期间测试所有功能。

### 4.1 设置Claude Desktop

以下是设置MCP服务器在Claude Desktop中的步骤：

1: 如果还没有安装，请先安装Claude桌面版

2: 打开Claude并访问设置：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-532.png)

3: 转到开发者标签页：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-533.png)

4: 您会看到当前配置的MCP服务器列表

5: 单击“编辑配置”以在系统的文件浏览器中显示配置文件：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-534.png)

6: 在默认编辑器中打开配置文件以添加您的MCP服务器配置：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-535.png)

7: 将以下内容添加到您的配置中：

```
{  
  "mcpServers": {  
    "hello-mcp": {  
      "command": "node",  
      "args": ["/absolute/path/to/your/hello-mcp/build/index.js"]  
    }  
  }  
}

```

8: 构建并运行：

```
npx tsc

```

9: 重启Claude桌面版

10: 当你开始与Claude聊天时，选择MCP资源连接：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-536.png)

11: 然后选择你的资源：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-537.png)

12: 你的资源将以附件的形式出现：

![](https://www.hubwiz.com/blog/content/images/2025/02/image-538.png)

### 4.2 使用MCP Inspector

[MCP Inspector](https://github.com/modelcontextprotocol/inspector?ref=hubwiz.com)是一个开发工具，可以让你测试所有MCP功能：

Inspector提供了一个用户界面，你可以在这里：

- 测试所有MCP功能（资源、提示和工具）
- 查看可用资源及其内容
- 调试服务器响应
- 验证您的实现是否按预期工作

另一种简单的方法来测试您的新服务器是使用MCP Inspector：

1: 启动Inspector：

```
npx @modelcontextprotocol/inspector node build/index.js

```

2: 单击左侧“环境变量”列表下方的“连接”按钮

![](https://www.hubwiz.com/blog/content/images/2025/02/image-539.png)

3: 你应该最初看到“资源”标签，这就是你想要查看问候资源的地方。单击“列出资源”按钮以查看你创建的资源

![](https://www.hubwiz.com/blog/content/images/2025/02/image-540.png)

4: 当你点击问候资源时，将查看其内容

![](https://www.hubwiz.com/blog/content/images/2025/02/image-541.png)

你将看到我们设计的相同响应：

- 资源列表显示了我们的资源名称：“Hello World Message”
- 读取资源返回“你好，世界！这是我的第一个MCP资源。”

## 5、结束语

在第2部分中，我们将：

- 使用资源模板添加动态资源
- 开始更好地组织代码，将处理程序拆分到单独的文件中
- 学习如何高效地处理多个资源
- 学习高级资源模式和最佳实践

第3部分和第4部分将涵盖提示和工具，完成你的MCP服务器工具包。

---

原文链接：[Building MCP Servers: Part 1 — Getting Started with Resources](https://medium.com/@cstroliadavis/building-mcp-servers-536969d27809?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处