mcpField
M
MyAIServ: AI-Powered FastAPI Server with MCP 🚀

MyAIServ: AI-Powered FastAPI Server with MCP 🚀

本地服务
github.com/eagurin开发工具885 周前更新

关于 MyAIServ: AI-Powered FastAPI Server with MCP 🚀

MyAIServ 是面向开发者的 FastAPI MCP 服务,用于连接 LLM 与应用。它将 MCP 能力与 GraphQL、WebSocket、搜索、缓存和监控结合起来。

主要功能

  1. 01MCP 资源、工具、提示词与采样
  2. 02文件、天气、文本和图像工具
  3. 03GraphQL 与 WebSocket API
  4. 04Elasticsearch 语义搜索
  5. 05Redis 缓存与 Prometheus 指标

适用场景

  1. 01向 LLM 应用提供文件和文本操作
  2. 02对索引内容进行语义搜索
  3. 03监控工具请求数与耗时

MCP 相关

该服务实现 MCP,向 MCP 客户端提供资源、工具、提示词和采样能力。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Server - Model Context Protocol API

FastAPI Python Poetry Prometheus GraphQL

MCP Server 是基于 FastAPI 实现的 Model Context Protocol(MCP),为大模型与应用之间的交互提供标准化接口。

特性

  • 🚀 基于 FastAPI 和异步操作的高性能 API
  • 🔄 全面支持 MCP,包括资源、工具、提示词和采样
  • 📊 通过 Prometheus 和 Grafana 实现监控与指标
  • 🧩 通过简单接口添加新工具,实现可扩展性
  • 📝 GraphQL API,灵活处理数据
  • 💬 WebSocket 支持,实现实时交互
  • 🔍 通过集成 Elasticsearch 实现语义搜索
  • 🗃️ 通过 Redis 缓存提升性能
  • 📦 通过 Poetry 管理依赖,可靠地管理软件包

开始使用

安装
  1. 克隆仓库:

    git clone https://github.com/yourusername/myaiserv.git
    cd myaiserv
    
  2. 安装 Poetry(如果尚未安装):

    curl -sSL https://install.python-poetry.org | python3 -
    
  3. 通过 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 文档

项目结构

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

与大模型集成

MCP Server 为集成不同供应商的大模型提供标准化接口:

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"]

        # Отправка запроса к LLM с включением MCP контекста
        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 格式的指标。指标包括:

  • 每个工具的请求数量
  • 请求执行时间
  • 错误和异常

开发

格式化代码并运行代码检查工具:

just fmt
just lint

许可证

MIT 许可证

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。