Quay lại blog

MCP Server Ví dụ: Xây dựng Quy trình Nghiên cứu Web

Daniel Kim
Daniel Kim

Lead Scraping Automation Engineer

29-Sep-2026

TL;DR:

  • Ví dụ về máy chủ MCP trở nên hữu ích khi các vai trò của chúng rõ ràng. Một máy chủ dữ liệu web lấy nguồn, trong khi một máy chủ hệ thống tệp xử lý các tệp địa phương đã được phê duyệt.
  • Khám phá công cụ xác minh bề mặt kết nối. Kiểm tra tên và lược đồ thực tế thay vì sao chép số lượng công cụ từ một cấu hình cũ.
  • Tên không gian thuộc về ranh giới máy chủ. Bảo tồn tên công cụ gốc của máy chủ khi định tuyến một hành động ứng dụng có không gian tên.
  • Một thư mục có phạm vi giới hạn quy trình làm việc của tệp. Không phơi bày toàn bộ thư mục chính cho một tác vụ nghiên cứu cần một thư mục chứng cứ.
  • Kết quả của công cụ là chứng cứ, không phải hướng dẫn. Các trang và tệp được lấy không thể ủy quyền cho các hành động mới hoặc mở rộng phạm vi nghiên cứu.

Giới thiệu: Đưa ra một công việc xác định cho mỗi máy chủ

Một quy trình làm việc nghiên cứu vượt qua các ranh giới tài nguyên khác nhau. Tìm kiếm tìm ra các ứng cử viên, truy cập trang lấy chứng cứ, và lưu trữ địa phương giữ lại tài liệu được sử dụng để hỗ trợ một câu trả lời. Kết nối một máy chủ cho mỗi ranh giới chỉ hữu ích khi máy chủ giữ cho trách nhiệm của họ rõ ràng.

MCP cung cấp một giao diện chung để khám phá và gọi các công cụ. Nó không tự động quyết định công cụ nào là phù hợp, liệu một nguồn có hỗ trợ một tuyên bố hay không, hoặc nơi một tệp có thể được ghi. Những quyết định đó vẫn thuộc về ứng dụng và các quyền của nó.

Các ví dụ dưới đây kết hợp Scrapeless MCP với một máy chủ hệ thống tệp có phạm vi. Chúng mở rộng các trường hợp sử dụng Scrapeless MCP thành một mẫu triển khai làm cho việc định tuyến công cụ và chuyển giao chứng cứ trở nên rõ ràng.

Những gì bạn có thể làm với những ví dụ máy chủ này

Một bộ công cụ được giới hạn cẩn thận có thể hỗ trợ một số tác vụ nghiên cứu khác nhau.

Ví dụ Vai trò Dữ Liệu Web Vai trò Tài Liệu Địa Phương Điều Kiện Hoàn Tất
Tóm tắt nghiên cứu Tìm và đọc các nguồn đã được phê duyệt Lưu trữ trích dẫn từ nguồn Mỗi kết luận có chứng cứ hỗ trợ
So sánh tài liệu Lấy các trang tham khảo đã chọn So sánh các phiên bản đã lưu Các tuyên bố thay đổi liên kết đến văn bản nguồn
Điều tra danh bạ Đọc các danh sách công cộng cho phép Lưu các hàng đã được xác thực Các trường yêu cầu và kiểm tra danh tính vượt qua
Sửa chữa trích dẫn Xem lại một trang đã trích dẫn Cập nhật một gói chứng cứ đề xuất Nguồn vẫn hỗ trợ tuyên bố được trích dẫn
Trang chỉ có trên trình duyệt Kiểm tra nội dung đã được hiển thị Bảo tồn quan sát có liên quan Trạng thái trang dự định đã được xác nhận

Một công cụ cơ sở dữ liệu có thể là một ranh giới sau này, nhưng nó nên chấp nhận các bản ghi đã được xác thực thay vì văn bản tùy ý từ một trang. Các ví dụ ở đây dừng lại ở việc xử lý chứng cứ địa phương nên việc ghi vào cơ sở dữ liệu không được bao gồm lặng lẽ trong yêu cầu nghiên cứu.

Tại sao sử dụng Scrapeless MCP cho lớp Dữ liệu Web?

Scrapeless MCP tiếp xúc tìm kiếm, truy cập trang, và công cụ trình duyệt thông qua một bề mặt MCP chung. Một máy chủ tương thích có thể khám phá các công cụ và chọn một hoạt động đã được phê duyệt mà không cần duy trì một tích hợp riêng cho mỗi hành động trang.

Các cài đặt kết nối Scrapeless MCP tài liệu các tùy chọn stdio địa phương và HTTP Streamable đã được lưu trữ. Ví dụ này sử dụng stdio để các quy trình máy chủ và tuổi thọ của chúng có thể nhìn thấy. Trình duyệt Scrapeless Agent là bề mặt thực hiện trình duyệt khi nghiên cứu thực sự cần tương tác đã được hiển thị.

Hợp đồng khám phá công cụ MCP bao gồm tên và lược đồ đầu vào. Đọc những giá trị đó từ máy chủ kết nối. Một lớp bọc có thể thay đổi bề mặt công cụ của nó độc lập với dịch vụ bên dưới.

Điều Kiện Tiên Quyết: Tách biệt Khám Phá khỏi Truy Cập Dịch Vụ

Sử dụng một môi trường Node.js hiện tại được hỗ trợ bởi các gói và một thư mục làm việc mới. Ví dụ cũng cần một thư mục chứng cứ chứa một bản chụp văn bản thực tế có tên source.txt, được đặt ở đó từ một nguồn công khai đã được phê duyệt. Không cần công cụ ghi để xác minh rằng máy chủ hệ thống tệp có thể đọc tệp đó.

Một SCRAPELESS_KEY hợp lệ là cần thiết cho các hoạt động Scrapeless được xác thực. Một khóa nhà cung cấp mô hình được yêu cầu riêng cho một vòng lặp nghiên cứu dựa trên mô hình. Những hoạt động từ xa đó vẫn đang chờ xác minh trực tiếp mà không cần thông tin xác thực; việc khám phá các lược đồ công cụ địa phương không chứng minh việc xác thực dịch vụ.

Máy chủ hệ thống tệp là một triển khai tham chiếu với khả năng đọc và ghi bên trong các thư mục được cho phép. Đăng ký máy chủ bên dưới cố ý phơi bày chỉ một tập con hẹp. Lọc máy chủ là hữu ích nhưng không thay thế cho việc cách ly hệ điều hành và các điều khiển truy cập phía máy chủ.

Kết Nối Hai Máy Chủ và Kiểm Tra Công Cụ Của Chúng

Cài đặt sau đây cài đặt các gói được ghim và tạo một thư mục bằng chứng. Đặt bản sao nguồn được phê duyệt của bạn vào thư mục đó trước khi chạy khách hàng.

bash Copy
npm install @modelcontextprotocol/sdk@1.30.1 \
  @modelcontextprotocol/server-filesystem@2026.8.31 \
  scrapeless-mcp-server@0.6.3
mkdir -p evidence

Lưu kịch bản tiếp theo dưới dạng inspect_servers.mjs và chạy nó từ thư mục chứa node_modules và evidence. Nó kết nối cả hai máy chủ, xác thực các công cụ được chọn, xây dựng một sổ đăng ký ứng dụng và đọc bản sao địa phương được phê duyệt. Nó không thực hiện cuộc gọi dịch vụ Scrapeless nào.

Lưu ý: Quy trình Scrapeless địa phương yêu cầu một SCRAPELESS_KEY không trống để khởi động. Cấu hình khóa thực của bạn cho việc sử dụng bình thường. Việc khám phá siêu dữ liệu địa phương đã được thực hiện riêng với một giá trị khởi động không phải là thông tin xác thực rõ ràng; việc kiểm tra đó không xác thực việc lấy dữ liệu từ web. Các cuộc gọi web đã xác thực và một nghiên cứu dựa trên mô hình vẫn đang chờ xác minh trực tiếp.

javascript Copy
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
import { resolve } from 'node:path';

if (!process.env.SCRAPELESS_KEY) {
  throw new Error('Configure SCRAPELESS_KEY before starting');
}
const directory = resolve('evidence');
const specs = [
  ['web', 'node_modules/scrapeless-mcp-server/build/index.js', []],
  ['files', 'node_modules/@modelcontextprotocol/server-filesystem/dist/index.js',
    [directory]]
];
const clients = new Map();
const registry = new Map();
const permitted = {
  web: new Set(['google_search', 'scrape_markdown']),
  files: new Set(['read_text_file', 'list_allowed_directories'])
};
try {
  for (const [prefix, entry, args] of specs) {
    const client = new Client({ name: 'research-host', version: '1.0.0' });
    clients.set(prefix, client);
    const transport = new StdioClientTransport({
      command: process.execPath, args: [resolve(entry), ...args],
      env: { ...process.env }, stderr: 'pipe'
    });
    await client.connect(transport);
    let cursor;
    const discovered = [];
    do {
      const page = await client.listTools(cursor ? { cursor } : {});
      discovered.push(...page.tools);
      cursor = page.nextCursor;
    } while (cursor);
    for (const name of permitted[prefix]) {
      const tool = discovered.find(item => item.name === name);
      if (!tool) throw new Error(`Required tool missing: ${prefix}:${name}`);
      registry.set(`${prefix}:${name}`, { client, name, schema: tool.inputSchema });
    }
    console.log(JSON.stringify({ server: prefix, discovered: discovered.length }));
  }
  const host = Object.freeze({
    tools: [...registry.keys()],
    async call(key, arguments_) {
      const route = registry.get(key);
      if (!route) throw new Error('Tool not permitted');
      return route.client.callTool({ name: route.name, arguments: arguments_ });
    }
  });
  const result = await host.call('files:read_text_file', {
    path: resolve(directory, 'source.txt')
  });
  if (result.isError) throw new Error('Filesystem read failed');
  const text = result.content.filter(part => part.type === 'text')
    .map(part => part.text).join('\n');
  if (!text.trim()) throw new Error('Evidence capture is empty');
  console.log(JSON.stringify({ exposed_tools: host.tools,
    local_capture_characters: text.length }));
} finally {
  for (const client of clients.values()) await client.close();
}

Các tên web:google_search và files:read_text_file là khóa định tuyến thuộc sở hữu của ứng dụng. Cuộc gọi từ xa vẫn sử dụng tên công cụ máy chủ ban đầu. Sự phân biệt này tránh giả định rằng một giao thức hoặc SDK tự động thêm một không gian tên.

Quá trình tệp nhận chỉ thư mục bằng chứng được chọn làm phạm vi ban đầu của nó. MCP roots mô tả các ranh giới hệ thống tệp liên quan, nhưng các gốc không phải là một Sandbox bảo mật. Xác thực việc thực thi thư mục của máy chủ và các công cụ có sẵn của máy chủ một cách riêng biệt.

Bắt Đầu Tiến Hành Scraping Với Scrapeless

Khởi động quy trình làm việc web scraping và tự động hóa của bạn với Scrapeless!
Đăng ký hôm nay và nhận $5 tín dụng miễn phí — không cần thẻ tín dụng.

Nhận tín dụng miễn phí của bạn ngay bây giờ trong Scrapeless Dashboard.

Ví Dụ 1: Tìm Kiếm và Đọc Một Nguồn Nghiên Cứu

Một quy trình tìm kiếm và đọc sử dụng tìm kiếm để tìm ứng viên và truy cập trang để lấy nguồn sẽ hỗ trợ câu trả lời. Nó không nên coi một đoạn tìm kiếm như một sự thay thế cho trang cơ sở.

Đối với một nhiệm vụ về một giao thức, hãy làm hạn chế các ứng viên theo tổ chức tiêu chuẩn liên quan. Kiểm tra sơ đồ google_search đã khám phá được trước khi xây dựng các tham số của nó, sau đó sử dụng scrape_markdown cho một URL công khai được chọn. Bề mặt công cụ hiện tại bao gồm q cho tìm kiếm và url cho việc đọc trang; các ràng buộc của ứng dụng cũng nên hạn chế những nguồn nào có thể được chọn.

Ví dụ này mô tả bước tiếp theo đã xác thực sau khi phát hiện. Nếu không có thông tin xác thực dịch vụ hợp lệ, dừng lại ở việc kết nối địa phương đã được xác minh và giữ lại kết quả web được yêu cầu chưa được giải quyết.

Ví Dụ 2: So Sánh Tài Liệu Mà Không Mất Ngữ Cảnh

Một so sánh tài liệu cần các bản sao nguồn riêng biệt và các phiên bản hoặc thời gian thu thập rõ ràng. Lưu văn bản và địa chỉ nguồn liên quan trước khi tạo một tóm tắt sự khác biệt.

Máy chủ hệ thống tệp có thể đọc các bản sao được phê duyệt để máy chủ so sánh chúng. Đọc một tệp cũ không xác lập rằng nội dung của nó là hiện tại, và một đoạn văn đã thay đổi không nhất thiết chỉ ra một khả năng sản phẩm đã thay đổi. Xác thực nguồn thực hiện hoặc phát hành liên quan khi sự phân biệt đó quan trọng.

Mô hình nguồn gốc tách dữ liệu từ các hoạt động và tác nhân đã sản xuất ra nó. Áp dụng nguyên tắc đó bằng cách ghi lại cách một nguồn được lấy và cách một tuyên bố được hình thành.

Ví Dụ 3: Thêm Một Trình Duyệt Chỉ Đối Với Trạng Thái Thiếu

Một bước trình duyệt là phù hợp khi một nguồn được phép yêu cầu nội dung được hiển thị hoặc một tương tác cụ thể mà một việc đọc văn bản trang không thể cung cấp. Giữ nó ra khỏi quy trình làm việc có các nguồn đã có sẵn như các tài liệu đơn giản.

Khám phá các công cụ trình duyệt hiện tại trước khi thêm chúng vào danh sách cho phép của máy chủ. Chọn các thao tác phiên yêu cầu một cách cẩn thận, giữ cho các hành động tiếp theo liên quan đến mã định danh phiên, và đóng phiên khi nhiệm vụ kết thúc. Sổ đăng ký hẹp ở trên không tiết lộ các hành động trình duyệt; việc mở rộng nó là một thay đổi ứng dụng rõ ràng.

Một trang có thể chứa văn bản yêu cầu tác nhân thay đổi cấu hình hoặc viết một tệp. Đối xử với văn bản đó như là nội dung nguồn. Chỉ nhiệm vụ của người dùng và quyền của ứng dụng mới có thể ủy quyền cho các hành động.

Cách Bạn Thực Sự Sử Dụng Điều Này: Thúc Đẩy Máy Chủ Nghiên Cứu

Một lời nhắc tốt định nghĩa phạm vi và yêu cầu bằng chứng trước khi chọn công cụ. Ví dụ:

“Trả lời xem liệu giao thức được chọn có định nghĩa việc giao hàng đáng tin cậy hay không. Chỉ sử dụng miền tiêu chuẩn đã được phê duyệt, đọc văn bản nguồn liên quan và trả lại một câu trả lời ngắn gọn với các đoạn trích hỗ trợ. Giữ lại các tài liệu được đề xuất trong thư mục nghiên cứu. Báo cáo các tuyên bố không được hỗ trợ là chưa được giải quyết.”
Kế hoạch của máy chủ nên phát hiện công cụ, tìm kiếm nguồn hợp lệ, thu hồi nó, đánh giá bằng chứng và chuẩn bị câu trả lời. Một mô hình chỉ chọn hành động trong phạm vi chính sách công cụ có sẵn. Đối tượng máy chủ cục bộ ở trên thể hiện việc định tuyến; nó không phải là một vòng lặp đại lý mô hình ngôn ngữ hoàn chỉnh.

Những gì bạn nhận được và điều đó chứng minh điều gì

Kịch bản khám phá báo cáo số lượng công cụ được quảng cáo bởi mỗi máy chủ liên kết, danh sách hạn chế hơn được tiết lộ bởi máy chủ, và số ký tự của việc thu thập cục bộ thực tế mà nó đã đọc. Những đầu ra này chứng minh sự bắt tay cục bộ, cấu trúc định tuyến và một lần đọc tệp được xác định.

Chúng không chứng minh một tìm kiếm thành công, một phiên trình duyệt, một câu trả lời của mô hình, hoặc một lần ghi cơ sở dữ liệu. Một artefact nghiên cứu hoàn chỉnh cũng cần một URL nguồn, ngữ cảnh thu hồi, đoạn trích có liên quan, và một kết luận đã được xem xét. Giữ những trường này thuộc quyền sở hữu của ứng dụng thay vì ngụ ý rằng mỗi máy chủ MCP đều trả về cùng một sơ đồ bằng chứng.

Xem giá cả Scrapeless cho các hoạt động dữ liệu web đã chọn, và theo dõi bất kỳ việc sử dụng mô hình nào một cách riêng biệt. Một quy trình máy chủ cục bộ và một cuộc gọi công cụ từ xa có thể có các ranh giới chi phí khác nhau.

Kết luận: Soạn công cụ xung quanh ranh giới bằng chứng

Bắt đầu với tập hợp máy chủ nhỏ nhất có thể hoàn thành nhiệm vụ nghiên cứu. Xác minh phát hiện và định tuyến, chỉ tiết lộ những hành động cần thiết, và bảo tồn các nguồn được sử dụng để hình thành mỗi kết luận. Thêm khả năng trình duyệt hoặc lưu trữ khi quy trình thực sự cần chúng, sau đó kiểm tra những ranh giới mới đó một cách độc lập.

Đã sẵn sàng để xây dựng quy trình dữ liệu web của bạn chưa?

Tham gia vào các nhà phát triển thảo luận về quy trình thu thập thực tiễn: Discord · Telegram.

Tạo một tài khoản tại app.scrapeless.com và bắt đầu với một nhiệm vụ được ủy quyền mà bạn có thể xác thực đầu ra.

Câu hỏi thường gặp

Q: Ví dụ về máy chủ MCP cho nghiên cứu web là gì?

Một máy chủ dữ liệu web kết hợp với một máy chủ hệ thống tệp có phạm vi là một ví dụ thực tế. Máy chủ đầu tiên thu hồi các nguồn; máy chủ thứ hai xử lý các artefact cục bộ đã được phê duyệt.

Q: Công cụ/list có xác nhận rằng một thông tin xác thực dịch vụ hoạt động không?

Khám phá công cụ xác nhận bề mặt công cụ được quảng cáo. Việc xác thực cho một hoạt động từ xa phải được kiểm tra bằng một cuộc gọi dịch vụ được ủy quyền thực tế.

Q: MCP có tự động đặt tên không gian cho các tên công cụ không?

MCP tiết lộ các tên công cụ của máy chủ, trong khi máy chủ có thể thêm tên không gian cụ thể cho ứng dụng. Giữ nguyên tên gốc khi định tuyến một cuộc gọi quay lại máy chủ.

Q: Root của hệ thống tệp có phải là một hộp cát hoàn chỉnh không?

Một root không phải là một hộp cát an ninh hoàn chỉnh. Việc thực thi thư mục, quyền quy trình và các công cụ bị lộ của máy chủ cũng phải phù hợp với phạm vi dự kiến.

Q: Những công cụ này có thể chạy mà không cần mô hình AI không?

Một chương trình xác định có thể phát hiện và gọi các công cụ MCP mà không cần mô hình. Một mô hình chỉ cần khi ứng dụng cố ý ủy quyền suy luận hoặc lựa chọn hành động cho nó.

Q: Nội dung trang có thể ủy quyền một lần ghi tệp không?

Nội dung trang thu hồi không thể cấp quyền hành động. Hãy coi nó như một bằng chứng không đáng tin cậy và tuân theo nhiệm vụ của người dùng và chính sách ứng dụng cho bất kỳ lần ghi nào.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục