嘿,大家好!我是你们的老朋友,爱折腾新科技的小白。最近我迷上了 MCP(模型上下文协议),这玩意儿号称能让 AI 跟本地文件、工具啥的直接“握手”。听起来挺炫酷,对吧?于是我决定亲自试试,用 MCP 让 AI 帮我分析一堆 Markdown 格式的知识库文件。过程有点像探险,下面跟你们分享我的“第一次”!
我电脑里有一堆 Markdown 文件,里面是读书笔记、项目记录、杂七杂八的想法。平时想找点啥,全靠手动翻,累得要死。听说 MCP 能让 AI 直接读这些文件,还能分析总结,我心动了!想象一下,AI 像个超级图书管理员,帮我从乱糟糟的笔记里挖出金子,简直不要太爽。
这次我选了 Grok 的 API 来玩 MCP,主要是因为它简单好上手,而且 xAI 的文档写得还算友好(虽然有时候还是得靠猜)。目标是用 MCP 让 Grok 读我的 Markdown 文件,回答问题,比如“我的读书笔记里都提到过哪些时间管理方法?”
MCP 不是开箱即用的,得先搭好舞台。以下是我的准备过程,详细到不行,怕你们跟我一样踩坑!
系统:我用的是 macOS Ventura,Windows 或者 Linux 应该也差不多。
工具:
知识库:我把 Markdown 文件都扔到一个文件夹,叫 knowledge_base,里面有大概 50 个 .md 文件,内容从《原子习惯》的笔记到项目脑暴记录都有。
跑终端,确认 Node.js 装好:
node -v
npm -v
如果没问题,往下走!
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 随便挑个没被占用的端口。
跑以下命令启动服务器:
npm start
终端会刷一堆日志,看到 MCP Server running on port 8080 就说明成功了!这时候,服务器已经能“看到”我的 Markdown 文件,随时等着 AI 来调戏。
我用 Grok 的 API 作为客户端,xAI 官网(x.ai/api)有申请入口。申请完会给个 API Key,记下来,别泄露!
装个 HTTP 客户端库来调用 API,我选了 Node.js 的 axios:
npm install axios
现在万事俱备,写个小脚本让 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 一网打尽,还总结得头头是道。
作为一名热衷于技术探索的博主,我最近关注到了 MCP(模型上下文协议),一个由 Anthropic 于 2024 年 11 月开源的标准化协议。它旨在让大型语言模型(LLM)与外部数据和工具高效交互,颇具潜力。为了深入理解其能力,我决定尝试使用 MCP,结合 DeepSeek API,分析本地的 Markdown 知识库文件。以下是我从环境搭建到实现的全程记录,供对 MCP 感兴趣的朋友参考。
我的电脑里存储了大量 Markdown 文件,涵盖读书笔记、技术总结和灵感碎片,内容丰富但零散。手动查找信息耗时费力,而 MCP 的出现让我看到了希望:它能让 AI 直接访问这些文件,执行搜索和分析任务。这次实验的目标是利用 DeepSeek API,通过 MCP 读取本地 Markdown 文件,回答特定问题,例如“我的笔记中提到的学习方法有哪些?”。
DeepSeek API 以其高效的自然语言处理能力著称,且文档清晰,适合本次实验。我将通过一个 MCP 文件服务器连接本地知识库,再用 DeepSeek API 驱动分析逻辑。
MCP 的实现需要客户端和服务器的配合,客户端通过协议与服务器通信,获取数据或执行操作。以下是我的配置步骤,尽量详细以便复现。
操作系统:Windows 11(macOS 或 Linux 亦可)。
工具需求:
知识库:我创建了一个名为 notes 的文件夹,路径为 C:\Users\MyUser\notes,包含约 30 个 .md 文件,内容涉及学习方法、项目记录等。
确保环境就绪,运行以下命令检查:
python --version
node -v
npm -v
我选择了一个开源的 MCP 文件服务器 mcp-local-fs,专为本地文件操作设计。从 GitHub 克隆代码:
git clone https://github.com/mcp-community/mcp-local-fs.git
cd mcp-local-fs
npm install
安装依赖后,编辑 config.json,指定知识库路径和端口:
{
"rootDir": "C:\\Users\\MyUser\\notes",
"port": 9090
}
注意使用双反斜杠(Windows 路径格式),确保路径正确。port 可根据需要调整。
启动服务器:
npm start
终端显示 MCP Server started on port 9090 时,说明服务器已准备好,可访问本地文件。
访问 DeepSeek 官网(deepseek.com/api),注册并申请 API Key。申请通过后,保存密钥(形如 sk-xxxx)。DeepSeek 提供 Python SDK,安装如下:
pip install deepseek
此外,我还安装了 requests 库,用于直接调用 MCP 服务器的 HTTP 接口:
pip install requests
在浏览器访问 http://localhost:9090/files,应返回 JSON 格式的文件列表,确认服务器正常工作。若报错,检查 config.json 中的路径或端口是否正确。
核心任务是编写一个 Python 脚本,通过 MCP 获取 Markdown 文件内容,再用 DeepSeek API 分析并回答问题。以下是我的实现代码(mcp_deepseek.py),附详细注释:
import requests
from deepseek import DeepSeek
# MCP 服务器配置
MCP_SERVER = "http://localhost:9090"
# DeepSeek API 配置
DEEPSEEK_API_KEY = "你的-API-KEY" # 替换为实际密钥
deepseek_client = DeepSeek(api_key=DEEPSEEK_API_KEY)
# 获取文件列表
def list_files():
try:
response = requests.get(f"{MCP_SERVER}/files")
response.raise_for_status()
return [f for f in response.json() if f.endswith('.md')]
except requests.RequestException as e:
print(f"无法获取文件列表: {e}")
return []
# 读取文件内容
def read_file(file_path):
try:
response = requests.get(f"{MCP_SERVER}/file?path={file_path}")
response.raise_for_status()
return response.json()['content']
except requests.RequestException as e:
print(f"读取文件 {file_path} 失败: {e}")
return ""
# 调用 DeepSeek API
def query_deepseek(question, context):
try:
messages = [
{"role": "system", "content": "你是知识分析助手,根据提供的上下文准确回答问题。"},
{"role": "user", "content": f"{question}\n\n上下文:\n{context}"}
]
response = deepseek_client.chat.completions.create(
model="deepseek-r-1",
messages=messages,
max_tokens=500
)
return response.choices[0].message.content
except Exception as e:
print(f"DeepSeek API 调用失败: {e}")
return "分析失败,请稍后重试。"
# 主流程
def main():
# 获取 Markdown 文件列表
md_files = list_files()
if not md_files:
print("没有找到 Markdown 文件!")
return
# 读取前 3 个文件内容(避免上下文过长)
context = ""
for file in md_files[:3]:
content = read_file(file)
if content:
context += f"文件 {file}:\n{content}\n\n"
# 提出问题
question = "我的笔记中提到的学习方法有哪些?"
print(f"问题: {question}")
# 调用 DeepSeek 分析
answer = query_deepseek(question, context)
print("DeepSeek 回答:\n", answer)
if __name__ == "__main__":
main()
运行脚本:
python mcp_deepseek.py
首次运行耗时约 10 秒(主要是网络延迟),结果让我颇为满意。DeepSeek 从我的笔记中提取了以下内容:
DeepSeek 回答:
根据提供的笔记,以下是提到的学习方法:
1. **费曼学习法**:在文件 learning_2023.md 中,你提到通过用简单语言解释复杂概念来加深理解。
2. **间隔重复**:在 book_notes.md 中,记录了使用 Anki 工具进行间隔重复记忆,优化长期记忆效果。
3. **目标拆分**:在 project_ideas.md 中,提到将大目标拆分为小任务,结合每日复盘提高学习效率。
这些信息确实散落在不同文件中,DeepSeek 通过 MCP 精准整合,回答清晰且符合预期。
实验过程并非一帆风顺,以下是几个主要问题及应对:
这次实验让我对 MCP 的潜力有了直观感受。它就像一座桥梁,将本地数据与 AI 的强大分析能力连接起来。相比传统的文件搜索,MCP 结合 DeepSeek API 提供了更智能的解决方案,特别适合管理和挖掘零散知识。
然而,MCP 的配置过程对新手而言稍显复杂,社区文档和工具的成熟度也有待提升。未来,我计划尝试用 MCP 连接其他数据源,如数据库或云存储,进一步探索其在工作流自动化中的应用。
下一次,我希望用 MCP 实现更复杂的任务,比如让 DeepSeek 自动整理笔记中的关键词并生成思维导图。如果你在 MCP 或 DeepSeek 上有自己的玩法,欢迎留言分享!技术探索的乐趣就在于不断试错和突破。