mcp server下载
MCP(模型上下文协议)服务器,用于与 通过GIA 教育平台。此服务器使LLM能够跨多个科目搜索和检索考试问题、解决方案和答案。
特性
🔍 智能搜索
- 文本搜索:按关键字搜索问题
- 模糊文本匹配:通过近似匹配的条件文本查找问题
- 目录浏览:按主题和类别探索问题
📚 问题检索
- 单个问题:获取完整的问题详细信息,包括条件、解决方案和答案
- 批量提取:在一个请求中高效检索多个问题
- 模拟问题:自动发现类似问题
📊 结构化数据
- 多种格式:JSON或Markdown格式的输出
- 元数据:访问图像、主题和问题关系
- 类型安全:通过Zod验证完全支持TypeScript
支持的主题
math-数学(简介)mathbMathematics(基础)rus-俄语phys-物理学chem-化学bio-生物学geo-地理hist-历史soc-社会研究inf-信息学en-英语de-德语fr-法语sp-西班牙语lit-文学
安装
先决条件
- Node.js 18+或20+
- npm或纱线
安装
npm install
npm run build安装
通过npm(推荐)
npm install -g sdamgia-mcp-server或者不通过npx安装使用:
npx sdamgia-mcp-server来源
git clone https://github.com/art22017/sdamgia-mcp-server.git
cd sdamgia-mcp-server
npm install
npm run build配置
服务器可以配置任何兼容MCP的客户端。以下是流行平台的说明:
克劳德代码
配置文件位置:
- 用户范围:
~/.claude.json(适用于所有项目) - 项目范围:
.mcp.json项目根目录(与团队共享)
{
"mcpServers": {
"sdamgia": {
"type": "stdio",
"command": "npx",
"args": ["-y", "sdamgia-mcp-server"]
}
}
}替代方案:通过CLI
claude mcp add sdamgia --scope user npx -y sdamgia-mcp-server光标
配置文件位置:
- 项目:
.cursor/mcp.json(在项目目录中) - 全球:
~/.cursor/mcp.json(主目录)
{
"mcpServers": {
"sdamgia": {
"command": "npx",
"args": ["-y", "sdamgia-mcp-server"]
}
}
}或者通过UI: 设置→ 工具和集成→ MCP服务器→ 添加新的MCP服务器
公里码
配置文件位置:
- 项目:
.kilocode/mcp.json - 全球:通过设置→ MCP服务器→ 编辑全局MCP
{
"mcpServers": {
"sdamgia": {
"command": "npx",
"args": ["-y", "sdamgia-mcp-server"],
"disabled": false
}
}
}注: VS Code和CLI配置在Kilocode中是分开的。
谷歌反重力
配置文件位置:
- macOS/Linux:
~/.config/antigravity/mcp.json或~/.gemini/antigravity/mcp_config.json - 视窗:
%APPDATA%\antigravity\mcp.json
{
"mcpServers": {
"sdamgia": {
"command": "npx",
"args": ["-y", "sdamgia-mcp-server"],
"trust": false
}
}
}或者通过UI: 代理面板→ 三点菜单→ MCP服务器→ 管理MCP服务器
Gemini CLI
配置文件位置: ~/.gemini/settings.json
{
"mcpServers": {
"sdamgia": {
"command": "npx",
"args": ["-y", "sdamgia-mcp-server"]
}
}
}MCP检查员(用于测试)
npx @modelcontextprotocol/inspector npx -y sdamgia-mcp-server用法
配置后,重新启动AI助手,服务器将可用。使用下面描述的工具。
可用工具
1. sdamgia_get_problem
按ID检索特定问题。
参数:
subject(必填):科目代码(例如“数学”、“物理”)problem_id(必填):问题ID(数字字符串)response_format(可选):json或markdown(默认:markdown)
例子:
{
"subject": "math",
"problem_id": "1001",
"response_format": "markdown"
}2. sdamgia_search_problems
使用文本查询搜索问题。
参数:
subject(必填):主题代码query(必填):搜索查询文本(3-500个字符)limit(可选):最大结果(1-50,默认值:20)response_format(可选):输出格式
例子:
{
"subject": "math",
"query": "вероятность",
"limit": 10
}3. sdamgia_search_by_text
通过模糊匹配的条件文本查找问题。
参数:
subject(必填):主题代码condition_text(必填):要搜索的问题文本(10-1000个字符)threshold(可选):相似性阈值0-1(默认值:0.6)limit(可选):最大结果(1-50,默认值:20)response_format(可选):输出格式
例子:
{
"subject": "phys",
"condition_text": "Найдите силу тока в цепи если сопротивление",
"threshold": 0.7,
"limit": 5
}使用案例:
- 用户有问题的照片/文字,但不知道ID
- 发现与给定条件类似的问题
- 匹配问题措辞的细微变化
4. sdamgia_batch_get_problems
一次检索多个问题。
参数:
subject(必填):主题代码problem_ids(必填):问题ID数组(1-10个项目)response_format(可选):输出格式
例子:
{
"subject": "inf",
"problem_ids": ["1001", "1002", "1003"]
}5. sdamgia_get_catalog
获取主题的完整目录结构。
参数:
subject(必填):主题代码response_format(可选):输出格式
例子:
{
"subject": "math",
"response_format": "json"
}6. sdamgia_get_category_problems
从特定类别中获取所有问题。
参数:
subject(必填):主题代码category_id(必填):类别ID(来自目录)limit(可选):最大结果(1-50,默认值:20)response_format(可选):输出格式
例子:
{
"subject": "math",
"category_id": "174",
"limit": 30
}7. sdamgia_get_test
从测试中找出所有问题。
参数:
subject(必填):主题代码test_id(必填):测试ID(数字字符串)response_format(可选):输出格式
例子:
{
"subject": "math",
"test_id": "1770"
}建筑
sdamgia-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── types.ts # TypeScript type definitions
│ ├── constants.ts # Configuration constants
│ ├── services/
│ │ ├── sdamgia-client.ts # API client (web scraping)
│ │ ├── text-utils.ts # Fuzzy text matching utilities
│ │ └── formatters.ts # Output formatters
│ ├── schemas/
│ │ └── input-schemas.ts # Zod validation schemas
│ └── tools/
│ ├── problem-tools.ts # Problem-related tools
│ └── catalog-tools.ts # Catalog-related tools
└── dist/ # Compiled JavaScript设计决策
1. API全面覆盖
所有主要端点都作为单独的工具公开,为LLM组合复杂的工作流提供了最大的灵活性。
2. 模糊文本匹配
这 sdamgia_search_by_text 工具用途:
- 编辑距离 用于字符级相似性
- 关键字重叠 用于语义匹配
- 综合评分 为了获得稳健的结果
这解决了在文本略有不同时发现问题的问题(OCR错误、拼写错误、重新格式化)。
3. 高效的批量操作
批处理工具在需要多个问题时减少了请求开销,提高了LLM代理的性能。
4. 响应格式灵活性
JSON和Markdown输出:
- JSON:用于程序化处理和数据提取
- 标记语言:用于人类可读的演示
5. 请求经济
- 缓存:客户端可以缓存频繁访问的数据
- 分页:限制防止过度提取
- 智能搜索:模糊搜索首先进行广泛搜索,然后进行本地筛选
6. 类型安全
完整的TypeScript+Zod验证确保:
- 运行时输入验证
- 清除错误消息
- IDE自动补全支持
使用的API端点
基于反向发动机的СДАМγИАAPI:
GET /{subject}-ege.sdamgia.ru/problem?id={id}-遇到问题GET /{subject}-ege.sdamgia.ru/search?search={query}-搜索GET /{subject}-ege.sdamgia.ru/test-获取目录GET /{subject}-ege.sdamgia.ru/test?id={id}-获取测试GET /{subject}-ege.sdamgia.ru/prob_catalog?category={id}-获取类别
备注:这是一个基于web抓取的非官方API。没有官方的API。
局限性
- 没有官方API:使用网页抓取,如果网站结构发生变化,可能会损坏
- 速率限制:无内置速率限制(可添加)
- 无缓存:每个请求都会到达服务器(可以添加Redis/文件缓存)
- 仅限俄语:平台为俄语
- 需要网络:需要互联网连接到СДАМГИА服务器
未来的增强功能
- \[\]添加请求缓存层
- \[\]实施速率限制
- \[\]添加对PDF生成的支持
- \[\]添加图像OCR以提取问题文本
- \[\]添加测试生成工具
- \[\]添加跨问题的进度跟踪
- \[\]添加用于远程部署的HTTP传输
贡献
欢迎投稿!拜托:
- 遵循现有代码样式
- 为新功能添加测试
- 更新文档
- 保持工具的专注性和可组合性
许可证
MIT许可证-有关详细信息,请参阅许可证文件
学分
基于以下研究:
- sdamgia api -Python实现
- СДАМГИА平台-教育资源
免责声明
这是一个用于教育目的的非官方工具。不隶属于СДАМГИА。
