学习教练MCP服务器
MCP(模型上下文协议)服务器,充当您的个人AI学习教练。跟踪您的学习进度,获取相关内容,并使用RAG(检索增强生成)生成个性化的日常学习见解。
特性
1.内容管理
- 存储来自可信来源(博客、RSS提要、Reddit)的学习内容
- 跟踪您当前正在学习的周和主题
- 存储您的学习偏好和目标
2.每日学习摘要
- 每天生成5-7个个性化学习见解
- 使用RAG从您的来源中查找相关内容
- 根据你当前的一周调整难度
3.面向LLM客户的MCP工具(Claude App)
generate_daily_digest:创建当今的个性化学习见解add_content_source:添加新的内容源(RSS/博客)update_progress:更新你本周的学习主题search_insights:搜索过去的学习见解get_progress:查看当前学习进度ingest_content_from_sources:手动触发内容摄取get_today_insights:检索今天生成的见解
4.语义搜索
- 使用向量嵌入来查找相关内容
- 将内容与您当前的学习主题相匹配
- 使用RAGAS启发的指标对每个见解的相关性进行评分
技术栈
- FastMCP:用于构建MCP服务器
- Supabase:带pgvector扩展名的PostgreSQL数据库
- 抱抱脸:用于嵌入的开源句子转换器
- 格罗克:快速LLM推理(Llama 3.3 70B),用于生成个性化见解
- python:编程语言
项目结构
learning-coach-mcp/
├── src/
│ ├── server.py # Main MCP server with tools
│ ├── rag/
│ │ └── digest_generator.py # RAG pipeline
│ ├── ingestion/
│ │ └── content_fetcher.py # RSS feed & blog scraper
│ └── utils/
│ ├── database.py # Supabase client
│ └── openai_client.py # OpenAI client
├── .env.example # Environment variables template
├── requirements.txt # Python dependencies
└── README.md安装说明
1.克隆和安装依赖项
# Install Python dependencies
pip install -r requirements.txt2.建立数据库
创建一个Supabase项目并运行以下SQL来设置架构:
-- Enable pgvector extension
CREATE EXTENSION IF NOT EXISTS vector;
-- Content sources table
CREATE TABLE content_sources (
id SERIAL PRIMARY KEY,
source_url TEXT NOT NULL UNIQUE,
source_type TEXT NOT NULL, -- 'rss', 'blog', 'reddit'
tags TEXT[],
created_at TIMESTAMP DEFAULT NOW()
);
-- Learning content with embeddings
CREATE TABLE learning_content (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
content TEXT NOT NULL,
source_url TEXT,
embedding VECTOR(384), -- dimension for all-MiniLM-L6-v2
metadata JSONB,
created_at TIMESTAMP DEFAULT NOW()
);
-- Create index for vector similarity search
CREATE INDEX ON learning_content USING ivfflat (embedding vector_cosine_ops);
-- User progress tracking
CREATE TABLE user_progress (
id SERIAL PRIMARY KEY,
user_id TEXT NOT NULL UNIQUE,
current_week INTEGER NOT NULL,
current_topics TEXT[],
learning_goals TEXT,
updated_at TIMESTAMP DEFAULT NOW()
);
-- Daily insights
CREATE TABLE daily_insights (
id SERIAL PRIMARY KEY,
user_id TEXT NOT NULL,
insight TEXT NOT NULL,
content_id INTEGER REFERENCES learning_content(id),
relevance_score FLOAT,
week INTEGER,
created_at TIMESTAMP DEFAULT NOW()
);
-- Function for vector similarity search
CREATE OR REPLACE FUNCTION match_learning_content(
query_embedding VECTOR(384),
match_threshold FLOAT,
match_count INT
)
RETURNS TABLE (
id INT,
title TEXT,
content TEXT,
source_url TEXT,
metadata JSONB,
similarity FLOAT
)
LANGUAGE SQL STABLE
AS $$
SELECT
id,
title,
content,
source_url,
metadata,
1 - (embedding query_embedding) AS similarity
FROM learning_content
WHERE 1 - (embedding query_embedding) > match_threshold
ORDER BY similarity DESC
LIMIT match_count;
$$;3.配置环境变量
复制 .env.example 到 .env 并填写您的凭据:
cp .env.example .env编辑 .env:
SUPABASE_URL=your_supabase_project_url
SUPABASE_KEY=your_supabase_anon_key
GROQ_API_KEY=your_groq_api_key
DEFAULT_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
MAX_DAILY_INSIGHTS=74.运行MCP服务器
# Run the server
python -m src.server使用Claude Desktop
将此添加到您的Claude Desktop MCP配置中:
{
"mcpServers": {
"learning-coach": {
"command": "python",
"args": ["-m", "src.server"],
"cwd": "/path/to/newsletter_mcp"
}
}
}工作流示例
- 设置您的学习档案:
Use update_progress to set:
- current_week: 1
- current_topics: ["Python", "Machine Learning", "RAG"]
- learning_goals: "Build production ML applications"- 添加内容源:
Use add_content_source to add:
- RSS feeds from tech blogs
- Popular ML newsletters
- Reddit threads- 生成每日摘要:
Use generate_daily_digest to get 5-7 personalized insights
based on your topics and learning level- 搜索过去的见解:
Use search_insights to find specific topics or concepts
you've learned before注: 这是一个单用户系统。所有数据都存储在默认用户配置文件下。
截图
alt text alt text alt text alt text
运作原理
- 内容物摄入:从RSS提要和博客中获取内容,使用句子转换器生成嵌入
- 存储:使用pgvector将带有向量嵌入的内容存储在Supabase中
- 检索:使用语义搜索查找与当前主题相关的内容
- 生成:Groq(Llama 3.3 70B)根据您的学习环境生成个性化见解
- 评分:受RAGAS启发的指标对每个见解的相关性进行评分
