MyAIServ MCP Server
一个高性能的 FastAPI 服务器,支持模型上下文协议 (MCP),可与大型语言模型无缝集成,具有 REST、GraphQL 和 WebSocket API,以及实时监控和向量搜索功能。
README
MCP Server - 模型上下文协议 API
MCP Server 是一个基于 FastAPI 的模型上下文协议 (MCP) 实现,它提供了一个标准化的接口,用于 LLM 模型和应用程序之间的交互。
特性
- 🚀 高性能 API 基于 FastAPI 和异步操作
- 🔄 完全支持 MCP 包含资源、工具、提示和采样
- 📊 监控和指标 通过 Prometheus 和 Grafana
- 🧩 可扩展性 通过简单的接口添加新工具
- 📝 GraphQL API 用于灵活的数据操作
- 💬 WebSocket 支持 用于实时交互
- 🔍 语义搜索 通过与 Elasticsearch 集成
- 🗃️ 缓存 通过 Redis 提高性能
- 📦 依赖管理 通过 Poetry 实现可靠的包管理
开始使用
安装
-
克隆仓库:
git clone https://github.com/yourusername/myaiserv.git cd myaiserv -
安装 Poetry (如果尚未安装):
curl -sSL https://install.python-poetry.org | python3 - -
通过 Poetry 安装依赖:
poetry install
启动服务器
poetry run uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
或者通过 just 工具:
just run
启动后,API 可通过以下地址访问: http://localhost:8000
API 文档
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- GraphQL Playground: http://localhost:8000/graphql
项目结构
myaiserv/
├── app/
│ ├── core/ # MCP 核心组件
│ │ ├── base_mcp.py # MCP 抽象类
│ │ └── base_sampling.py # 采样基类
│ ├── models/ # Pydantic 模型
│ │ ├── mcp.py # MCP 数据模型
│ │ └── graphql.py # GraphQL 模式
│ ├── services/ # 业务逻辑
│ │ └── mcp_service.py # MCP 服务
│ ├── storage/ # 数据存储
│ ├── tools/ # MCP 工具
│ │ ├── example_tool.py # 工具示例
│ │ └── text_processor.py # 文本处理工具
│ ├── utils/ # 实用工具
│ └── main.py # FastAPI 入口点
├── app/tests/ # 测试
├── docs/ # 文档
│ └── MCP_API.md # API 描述
├── pyproject.toml # Poetry 和工具配置
└── .justfile # just 工具的任务
可用工具
File System Tool
用于文件系统操作的工具,支持读取、写入、删除和列出文件。
curl -X POST "http://localhost:8000/tools/file_operations" \
-H "Content-Type: application/json" \
-d '{"operation": "list", "path": "."}'
Weather Tool
用于获取坐标天气数据的工具。
curl -X POST "http://localhost:8000/tools/weather" \
-H "Content-Type: application/json" \
-d '{"latitude": 37.7749, "longitude": -122.4194}'
Text Analysis Tool
用于文本分析的工具,包括情感分析和摘要。
curl -X POST "http://localhost:8000/tools/text_analysis" \
-H "Content-Type: application/json" \
-d '{"text": "Example text for analysis", "analysis_type": "sentiment"}'
Text Processor Tool
用于文本处理的工具,包括格式化、统计计算、实体提取。
curl -X POST "http://localhost:8000/tools/text_processor" \
-H "Content-Type: application/json" \
-d '{"operation": "statistics", "text": "Example text", "stat_options": ["chars", "words"]}'
Image Processing Tool
用于图像处理的工具,支持调整大小、裁剪和应用滤镜。
curl -X POST "http://localhost:8000/tools/image_processing" \
-H "Content-Type: application/json" \
-d '{"operation": "resize", "image_data": "base64...", "params": {"width": 800, "height": 600}}'
WebSocket API
连接到 WebSocket API:
const socket = new WebSocket("ws://localhost:8000/ws");
socket.onopen = () => {
socket.send(JSON.stringify({
type: "initialize",
id: "my-request-id"
}));
};
socket.onmessage = (event) => {
const data = JSON.parse(event.data);
console.log("Received:", data);
};
GraphQL API
GraphQL 查询示例:
# 获取所有工具的列表
query {
getTools {
name
description
}
}
# 执行工具
mutation {
executeTool(input: {
name: "text_processor",
parameters: {
operation: "statistics",
text: "Example text for analysis"
}
}) {
content {
type
text
}
is_error
}
}
运行测试
使用 Poetry 运行测试:
poetry run pytest
或者通过 just 工具:
just test
Docker
通过 Docker Compose 构建和运行
docker compose up -d
运行单个服务:
docker compose up -d web redis elasticsearch
与 LLM 集成
MCP Server 提供了一个标准化的接口,用于与不同供应商的 LLM 模型集成:
import httpx
async def query_mcp_with_llm(prompt: str):
async with httpx.AsyncClient() as client:
# 请求 MCP 以获取上下文和工具
tools_response = await client.get("http://localhost:8000/tools")
tools = tools_response.json()["tools"]
# 发送包含 MCP 上下文的 LLM 请求
llm_response = await client.post(
"https://api.example-llm.com/v1/chat",
json={
"messages": [
{"role": "system", "content": "You have access to the following tools:"},
{"role": "user", "content": prompt}
],
"tools": tools,
"tool_choice": "auto"
}
)
return llm_response.json()
指标和监控
MCP Server 在 /metrics 端点提供 Prometheus 格式的指标。指标包括:
- 每个工具的请求数量
- 请求执行时间
- 错误和异常
开发
格式化代码和检查 linter:
just fmt
just lint
许可证
推荐服务器
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
serper-search-scrape-mcp-server
这个 Serper MCP 服务器支持搜索和网页抓取,并且支持 Serper API 引入的所有最新参数,例如位置。
The Verge News MCP Server
提供从The Verge的RSS feed获取和搜索新闻的工具,允许用户获取今日新闻、检索过去一周的随机文章,以及在最近的Verge内容中搜索特定关键词。
Jira-Context-MCP
MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
Tavily MCP Server
使用 Tavily 的搜索 API 提供 AI 驱动的网络搜索功能,使 LLM 能够执行复杂的网络搜索、获得问题的直接答案以及搜索最近的新闻文章。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。
Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。