嘿,大家好!我是你们的老朋友,爱折腾新科技的小白。最近我迷上了 MCP(模型上下文协议),这玩意儿号称能让 AI 跟本地文件、工具啥的直接“握手”。听起来挺炫酷,对吧?于是我决定亲自试试,用 MCP 让 AI 帮我分析一堆 Markdown 格式的知识库文件。过程有点像探险,下面跟你们分享我的“第一次”!


为啥想试 MCP?

我电脑里有一堆 Markdown 文件,里面是读书笔记、项目记录、杂七杂八的想法。平时想找点啥,全靠手动翻,累得要死。听说 MCP 能让 AI 直接读这些文件,还能分析总结,我心动了!想象一下,AI 像个超级图书管理员,帮我从乱糟糟的笔记里挖出金子,简直不要太爽。

这次我选了 Grok 的 API 来玩 MCP,主要是因为它简单好上手,而且 xAI 的文档写得还算友好(虽然有时候还是得靠猜)。目标是用 MCP 让 Grok 读我的 Markdown 文件,回答问题,比如“我的读书笔记里都提到过哪些时间管理方法?”


准备工作:把家伙事儿备齐

MCP 不是开箱即用的,得先搭好舞台。以下是我的准备过程,详细到不行,怕你们跟我一样踩坑!

1. 环境配置
  • 系统:我用的是 macOS Ventura,Windows 或者 Linux 应该也差不多。

  • 工具

    • Node.js(v18+):MCP 很多工具基于 JavaScript,装个 Node.js 是基础。
    • Git:用来拉代码。
    • 一个顺手的编辑器(我用 VS Code)。
  • 知识库:我把 Markdown 文件都扔到一个文件夹,叫 knowledge_base,里面有大概 50 个 .md 文件,内容从《原子习惯》的笔记到项目脑暴记录都有。

跑终端,确认 Node.js 装好:

node -v
npm -v

如果没问题,往下走!

2. 拉取 MCP 工具

MCP 是协议,得有服务器和客户端配合。我从 GitHub 上找了个社区的 MCP 文件服务器,叫 mcp-file-server,专为读本地文件设计。

git clone https://github.com/mcp-community/mcp-file-server.git
cd mcp-file-server
npm install

这东西会装一堆依赖,网速慢的兄弟多等等。装完后,改下配置文件(config.json),告诉它我的知识库在哪儿:

{
  "rootPath": "/Users/xiaobai/knowledge_base",
  "port": 8080
}

rootPath 换成你自己的文件夹路径,port 随便挑个没被占用的端口。

3. 启动 MCP 服务器

跑以下命令启动服务器:

npm start

终端会刷一堆日志,看到 MCP Server running on port 8080 就说明成功了!这时候,服务器已经能“看到”我的 Markdown 文件,随时等着 AI 来调戏。

4. 搞定 Grok API

我用 Grok 的 API 作为客户端,xAI 官网(x.ai/api)有申请入口。申请完会给个 API Key,记下来,别泄露!

装个 HTTP 客户端库来调用 API,我选了 Node.js 的 axios

npm install axios

动手干:让 Grok 读我的知识库

现在万事俱备,写个小脚本让 Grok 通过 MCP 访问我的文件。以下是我的代码(mcp-grok.js),注释写得超详细:

const axios = require('axios');

// MCP 服务器地址
const mcpServer = 'http://localhost:8080';

// Grok API 配置
const grokApiKey = '你的-API-KEY'; // 换成你自己的
const grokApiUrl = 'https://api.x.ai/grok/v1/chat';

// 发起 MCP 请求,列出知识库文件
async function listFiles() {
  try {
    const response = await axios.get(`${mcpServer}/files`);
    return response.data;
  } catch (err) {
    console.error('MCP 出问题啦:', err.message);
    return [];
  }
}

// 读具体文件内容
async function readFile(filePath) {
  try {
    const response = await axios.get(`${mcpServer}/file?path=${filePath}`);
    return response.data.content;
  } catch (err) {
    console.error('读文件失败:', err.message);
    return '';
  }
}

// 调 Grok API 分析内容
async function askGrok(question, context) {
  try {
    const response = await axios.post(grokApiUrl, {
      model: 'grok-3',
      messages: [
        { role: 'system', content: '你是个分析专家,基于给定的上下文回答问题。' },
        { role: 'user', content: `${question}\n\n上下文:${context}` }
      ]
    }, {
      headers: {
        'Authorization': `Bearer ${grokApiKey}`,
        'Content-Type': 'application/json'
      }
    });
    return response.data.choices[0].message.content;
  } catch (err) {
    console.error('Grok 不开心:', err.message);
    return '哎呀,Grok 罢工了!';
  }
}

// 主流程:列文件 -> 读内容 -> 问问题
async function main() {
  // 列出所有 Markdown 文件
  const files = await listFiles();
  const mdFiles = files.filter(f => f.endsWith('.md'));

  // 读前 5 个文件的内容(多了怕 Grok 吃不下)
  let context = '';
  for (let i = 0; i < Math.min(5, mdFiles.length); i++) {
    const content = await readFile(mdFiles[i]);
    context += `文件 ${mdFiles[i]}:\n${content}\n\n`;
  }

  // 问个问题
  const question = '我的读书笔记里提到过哪些时间管理方法?';
  const answer = await askGrok(question, context);
  console.log('Grok 说:\n', answer);
}

main();

跑脚本:

node mcp-grok.js

结果咋样?

第一次跑,Grok 有点慢(可能是我的破电脑),但输出让我惊呆了!它从我的笔记里挖出了好几种时间管理方法:

Grok 说:
根据你的笔记,我找到这些时间管理方法:
1. **番茄工作法**:你提到《番茄工作法图解》,25 分钟专注 + 5 分钟休息,循环几次后长休息。
2. **四象限法则**:在《高效能人士的七个习惯》笔记里,你写到把任务分成紧急/重要四个象限,优先做重要不紧急的事。
3. **每日计划**:你有篇笔记提到每天睡前写第二天的待办清单,能省不少脑力。

简直神了!这些确实是我零散记在不同文件里的东西,Grok 通过 MCP 一网打尽,还总结得头头是道。