模型上下文协议服务

MCP项目实现了轻量级的模型上下文协议,用于存储、版本控制和检索LLM及模型驱动代理的上下文片段。

  • by 7pandeys
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 7pandeys/mcp_project_exploration

使用说明

MCP Project — Model Context Protocol

Overview

该项目实现了一个最小的、实用的模型上下文协议(MCP),用于存储、版本和检索LLM和模型驱动代理的上下文片段。MCP的想法:一个轻量级的HTTP API,它允许工具/代理存储简短的上下文项(文档、信号、嵌入元数据),并通过id、标签或相关性获取相关上下文。这是作为面试或作品集工作的演示。

Goals

  • 展示清晰的协议设计(端点、语义)。

  • 提供一个小型、注重生产的服务器(FastAPI+SQLite)。

  • 包括在模型驱动的应用程序中使用MCP的客户端示例和最佳实践解释。

Features implemented

  • 创建/注册上下文项(JSON有效载荷)

  • 按id检索

  • 通过标签或文本搜索进行查询(简单的SQL LIKE搜索)

  • 将其他内容附加到上下文项

  • 版本控制:每次更新都会创建一个与原始id链接的新的不可变版本

  • 通过API密钥头进行基本访问控制(降级)

File layout (in repo)

mcp-project/
├─ main.py # FastAPI server
├─ models.py # Pydantic / SQLModel models
├─ db.py # DB helpers (sqlite)
├─ client_example.py # Python client showing usage
├─ requirements.txt
├─ README.md # This doc summarized

Protocol (HTTP endpoints)

  1. POST /contexts --注册新的上下文项

    • body: { "title": "...", "content": "...", "tags": ["..."], "metadata": {...} }

    • 回报 201 随着 { "id": "<uuid>", "version": 1 }

  2. GET /contexts/{id} --获取上下文项的最新版本

    • 返回带有版本数组的项目
  3. GET /contexts --查询上下文

    • 查询参数: tag, q (文本搜索), limit, offset
  4. POST /contexts/{id}/append --向项目添加新内容(创建新版本)

    • body:`{“append_content”:“…”,“元数据”:{…}}```
All endpoints require ```x-api-key``` header.

How to run (local)

  • 创建virtualenv: python -m venv .venv && source .venv/bin/activate

  • 安装: pip install -r requirements.txt

  • 运行服务器: uvicorn main:app --reload

  • 运行客户端: python client_example.py

Extensions

  • 为什么MCP与传递完整上下文:网络+成本+隐私。MCP允许选择性检索、缓存和治理。

  • 缩放:添加向量存储(FAISS)进行语义检索,并返回ANN索引。

  • 安全性:使用每个用户的密钥、审计日志、速率限制、编辑敏感字段。

  • MLOps:将模型决策存储为元数据,以实现模型解释和RLHF监督。

  • 改进(下一步)

    • 使用SQLite FTS或ElasticSearch进行强大的文本搜索。

    • 添加嵌入:存储向量(float[])并使用FAISS或Milvus进行语义查找。

    • 添加访问策略(ACL)和签名令牌。

    • 构建一个小UI来检查上下文和版本。

OR

  • 使用FAISS+neneneba API组合添加Dockerfile+docker-compose。

  • 替换简单的SQL LIKE 使用基于嵌入的语义搜索管道进行搜索。