麦布塞尔韦
A. 模型上下文协议(MCP) 内置Python的服务器——通过JSON-RPC 2.0 stdio传输公开数据库查询工具和文档资源,使AI助手能够与SQLite数据库和markdown文档进行交互。
什么是MCP?
这 模型上下文协议 是将AI助手连接到外部工具和数据源的开放标准。MCP服务器暴露 工具 (AI可以调用的函数)和 资源 (AI可以读取的数据)通过JSON-RPC 2.0传输。
此服务器使用stdio上的原始JSON-RPC 2.0从头开始实现MCP协议,不需要依赖SDK。
特性
- 🔧 8工具 --数据库查询、文档CRUD、搜索、日期/时间
- 📄 资源提供程序 --文档和数据库模式作为可读资源
- 🛡️ SQL注入保护 --只允许使用SELECT查询,并进行正则表达式验证
- 📝 YAML 前言 --使用结构化元数据以markdown形式存储的文档
- 🔌 标准运输 --在stdin/stdout上以行分隔的JSON-RPC 2.0
- ⚡ 零SDK依赖 --手动滚动MCP协议实现
- ✅ 经过充分测试 --113项测试,涵盖协议、工具、资源和集成
快速开始
# Clone and install
git clone https://github.com/devaloi/mcpserve-py.git
cd mcpserve-py
pip install -e ".[dev]"
# Run the server
python -m mcpserve_py
# Run tests
python -m pytest -v环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
MCPSERVE_DATA_DIR | data | 文件和数据目录 |
MCPSERVE_DB_PATH | data/mcpserve.db | SQLite数据库的路径 |
MCPSERVE_LOG_LEVEL | INFO | 日志级别(调试、信息、警告、错误) |
Claude桌面配置
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"mcpserve-py": {
"command": "python",
"args": ["-m", "mcpserve_py"],
"env": {
"MCPSERVE_DATA_DIR": "./data",
"MCPSERVE_DB_PATH": "./data/mcpserve.db"
}
}
}
}工具
| 工具 | 说明 | 参数 |
|---|---|---|
query_database | 执行只读SQL查询 | sql: str, params?: list |
list_tables | 列出数据库中的所有表 | -- |
describe_table | 获取表架构 | table: str |
create_document | 创建标记文档 | title: str, content: str, tags?: list[str] |
read_document | 按标题阅读文档 | title: str |
list_documents | 列出所有文件 | tag?: str |
search_documents | 跨文档的全文搜索 | query: str |
get_datetime | 当前日期/时间 | timezone?: str |
资源
| URI模式 | 描述 | MIME类型 |
|---|---|---|
docs:///{title} | 文件内容 | text/markdown |
db:///schema | 完整数据库架构 | text/plain |
db:///tables/{name} | 单表架构 | text/plain |
建筑
src/mcpserve_py/
├── __main__.py # Entry point: python -m mcpserve_py
├── server.py # MCP server: receive → dispatch → respond
├── protocol.py # JSON-RPC 2.0 types and encoding
├── transport.py # Stdio transport (line-delimited JSON)
├── config.py # Pydantic settings
├── tools/
│ ├── registry.py # Tool registry
│ ├── database.py # SQLite tools (query, list_tables, describe)
│ ├── documents.py # Document tools (CRUD + search)
│ └── system.py # System tools (get_datetime)
└── resources/
├── provider.py # Resource provider interface + registry
├── documents.py # Document resource provider
└── database.py # Database schema resource provider设计决策
- 无MCP SDK --该协议直接使用JSON-RPC 2.0数据类实现。这表明了对协议的深入理解,而不是对SDK的使用。
- 同步 --Stdio本质上是顺序的;async增加了复杂性,但没有带来任何好处。
- Pydantic设置 --通过环境变量进行配置,并进行类型验证
.env文件支持。 - 工具注册表模式 --工具在中央注册表中注册,保持服务器调度的干净。
- 只读SQL --在到达SQLite之前,通过正则表达式拒绝突变,防止AI助手损坏数据。
- YAML 前言 --文档使用与静态站点生成器(Jekyll、Hugo)相同的格式,使其易于阅读和工具友好。
发展
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
make test
# Lint
make lint
# Type check
make typecheck
# Format
make format
# All checks
make all许可证
麻省理工学院
贡献
看 贡献.md.PR欢迎运行 make all 在提交之前。
