mcpField
F
Fsext Mcp Server Python

Fsext Mcp Server Python

本地服务
github.com/kurtzhi媒体与设计017 周前更新

关于 Fsext Mcp Server Python

Fsext Mcp Server Python 是面向 Agent 和 MCP 客户端的本地文件系统 MCP 服务,集成文件操作、图像处理、OCR 与搜索,并可限制操作在指定工作区内。

主要功能

  1. 01文件与目录管理
  2. 02文本和二进制流式读写
  3. 03递归搜索与替换
  4. 04图像缩放、裁剪和旋转
  5. 05基于 Tesseract 的 OCR
  6. 06工作区根目录隔离

适用场景

  1. 01管理工作区内的文件
  2. 02跨文件搜索和替换文本
  3. 03为后续任务处理图像
  4. 04从图像中提取文字

MCP 相关

通过 MCP 工具提供文件系统、图像、OCR 和搜索操作。支持 stdio、SSE 与 Streamable HTTP 传输,并可限制操作在指定根目录内。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"fsext-mcp-server-python": {
"command": "uvx",
"args": [
"fsext-mcp-server"
]
}
}
}
启动命令uvx fsext-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypifsext-mcp-server

工具

22

收录的工具列表 · 更新于 2 周前

参数类型必填说明
recursiveboolean是
only_filesboolean是
source_dirstring是
file_extensionany否

详细介绍

FsExt-MCP-Server (Python)

概述

功能全面且安全的 MCP 服务,用于执行本地文件系统操作,并内置图像处理、OCR 和媒体工具。完全符合官方 Model Context Protocol 规范,提供标准化的请求/响应架构、大文件流式 I/O、多传输方式远程部署,以及完善的文本搜索与替换功能,便于集成 LLM Agent。

核心功能
  • 完整的文件与目录管理:支持创建、删除、复制和移动文件,查询元数据以及检查文件是否存在;支持递归复制和移动完整目录树,并提供覆盖安全控制。
  • 流式文件读写:支持全文读取、按行分段读取文本、分块读取二进制数据、覆盖和追加写入文本/二进制数据,并经过优化,无需将整个大文件加载到内存中。
  • 强大的搜索与替换功能:支持递归搜索整个目录中的文件内容,支持单文件/多文件上下文匹配,可配置匹配前后的行数,并支持正则表达式匹配、不区分大小写的搜索,以及统计匹配次数的原位文本替换。
  • 图像处理工具:内置由 Pillow 驱动的高性能图像工具包,包括调整大小(支持锁定宽高比和画布填充)、裁剪,以及任意角度顺时针旋转。
  • 原生 Tesseract OCR 识别:可靠地从图像中提取文本,但依赖本地安装 Tesseract 二进制文件。不提供 WASM 回退;空的二进制文件路径参数不会触发基于 JS 的备用 OCR 引擎。支持多语言 tessdata 资源,并可配置二进制文件和数据路径。
  • 严格的输入验证与统一响应格式:所有工具均启用严格的 additionalProperties: false 架构验证,以阻止意外的输入字段。所有操作共用通用的成功/错误封装结构,便于客户端统一解析。
  • 多传输方式支持:兼容官方标准 MCP 传输方式:stdio(本地桌面客户端集成)、sse(旧版轻量级远程流)和 Streamable HTTP(现代双向远程流传输)。
  • 工作区安全隔离:提供 --lock-root 目录限制功能。所有文件/目录操作均严格限定在指定的根工作区内,防止未经授权的跨目录路径逃逸攻击。

快速开始:使用 uvx 直接运行(无需预先安装)

uvx 会自动拉取已发布的 PyPI 软件包并启动隔离的运行时环境,无需手动安装依赖或设置虚拟环境。

1. uvx 基本启动命令
短命令(推荐)
# Default stdio mode, unrestricted full filesystem access
uvx fsext-mcp-server

# Lock all operations to a dedicated workspace (production security recommended)
uvx fsext-mcp-server --lock-root /your/workspace
完整命令
# Stdio mode with workspace isolation
uvx fsext-mcp-server --transport stdio --lock-root /your/workspace

# Remote SSE streaming service
uvx fsext-mcp-server --transport sse --host 0.0.0.0 --port 8000 --lock-root /your/workspace

# Modern Streamable HTTP remote service
uvx fsext-mcp-server --transport http --host 0.0.0.0 --port 8000 --lock-root /your/workspace
2. 将 FsExt 工具集成到 LLM 框架中

主机上无需预先部署;MCP 客户端建立连接时,uvx 会动态启动该服务。

客户端配置示例(Claude Desktop / Cursor MCP json)
{
  "mcpServers": {
    "fsext": {
      "command": "uvx",
      "args": [
        "fsext-mcp-server",
        "--lock-root",
        "/your/workspace"
      ],
      "env": {"PYTHONUTF8": "1"}
    }
  }
}
LangChain / LangGraph 核心集成代码片段

官方 langchain-mcp-adapters 存在会话生命周期限制;要实现完整稳定的长连接逻辑,需要额外定制适配器。以下是标准的最简连接模板:

# Core config: Connect to FsExt MCP via uvx stdio transport
server_config = {
    "fsext": {
        "transport": "stdio",
        "command": "uvx",
        "args": ["fsext-mcp-server", "--lock-root", r"/your/workspace"],
        "env": {"PYTHONUTF8": "1"}
    }
}

# Load all exposed filesystem MCP tools
client = MultiServerMCPClient(server_config)
async with client.session("fsext") as session:
    mcp_tools = await load_mcp_tools(session)

# Bind loaded MCP tools to LLM instance for agent workflows
llm = ChatOpenAI(base_url="your-local-llm-api").bind_tools(mcp_tools)

通过 pip 进行传统安装和启动

安装已发布的 PyPI 软件包
pip install fsext-mcp-server
通过 pip 安装后的启动命令
# Default stdio local mode
fsext-mcp-server-py
fsext-mcp-server

# Short alias
fsext-py
fsext

# Secure workspace locked mode
fsext --lock-root /your/workspace

# Remote SSE streaming server
fsext --transport sse --port 8000
本地源代码仓库开发环境设置

建议使用 uv 快速部署确定性的环境:

# Clone official source repository
git clone https://github.com/kurtzhi/fsext-mcp-server-python
cd fsext-mcp-server-python

# Install full runtime + dev dependencies
uv sync
核心运行时依赖说明
  • chardet:自动检测文本文件编码
  • Pillow:用于缩放、裁剪和旋转流程的核心图像处理后端
  • python-magic:准确识别跨平台文件 MIME 类型
  • fastmcp:官方 Python MCP 服务框架
  • uvicorn / starlette:HTTP/SSE 传输服务运行时
  • pydantic:对所有工具输入参数进行严格的架构验证
  • tesseract:用于本地 Tesseract OCR 二进制文件的原生绑定

启动用法

服务支持三种官方 MCP 传输模式,并可通过 CLI 标志灵活配置工作区根目录隔离。

启动参数参考表
参数默认值说明
--transportstdioMCP 传输类型:stdio / sse / http
--host127.0.0.1网络绑定地址(stdio 传输模式下忽略)
--port8000服务绑定端口(stdio 传输模式下忽略)
--lock-rootNone将所有文件系统操作限制在此根目录内;若省略,则完全不受限制
常见生产环境启动命令
1. 默认本地 Stdio 模式(适用于 Claude Desktop / Cursor AI 客户端)
uv run -m fsext
2. 启用强制工作区锁定的 Stdio 模式(用于安全的本地 Agent)
uv run -m fsext --lock-root /your/workspace/path
3. 远程 SSE 传输模式
uv run -m fsext --transport sse --host 0.0.0.0 --port 8000
访问端点
  1. SSE 长连接流订阅通道(服务端事件推送): http://<host>:<port>/sse
  2. 客户端 JSON-RPC 请求提交通道: http://<host>:<port>/messages
MCP Inspector 连接配置
  • 传输类型:SSE
  • 连接地址输入:http://127.0.0.1:8000/sse
4. 标准 Streamable HTTP 远程传输(现代双向模式)
uv run -m fsext --transport http --host 0.0.0.0 --port 8000
统一双向访问端点

客户端请求和服务端流式传输共用的单一入口: http://<host>:<port>/mcp

MCP Inspector 连接配置
  • 传输类型:Streamable HTTP
  • 连接地址输入:http://127.0.0.1:8000/mcp
5. SSE 与 Streamable HTTP 传输功能对比
功能SSE 双端点传输Streamable HTTP 单端点传输
端点架构两个独立端点:GET 流订阅 + POST 消息发送单个统一 URL 处理所有双向流量
通信模式仅支持从服务端到客户端的单向事件推送支持完整的双向请求/流混合能力
连接可靠性会话频繁丢失,跨端点状态管理复杂自动恢复会话,针对高并发远程连接优化
官方规范状态兼容旧版的实现,不建议用于新部署当前官方 MCP 网络远程集成标准

统一全局响应规范

所有 MCP 工具在执行成功和运行时失败时,均使用相同的顶层 JSON 封装结构。每个工具的业务负载都嵌套在根字段 res 下的 info 子对象中。

核心结构定义
{
  "res": {
    "success": boolean,
    "info": object
  }
}
  • success:全局操作状态标志
    • true:工具逻辑已执行且未发生异常;info 包含工具专属的返回数据
    • false:操作失败(工作区逃逸拦截、文件缺失、IO 错误、输入架构无效、权限被拒等)
  • info 字段的双重行为:
    1. 成功模式(success: true):各工具独有的自定义结构化业务负载
    2. 失败模式(success: false):固定的标准化错误对象,包含机器可读的错误代码和人类可读的说明
      "info": {
        "code": "ERROR_CODE_IDENTIFIER",
        "message": "Detailed human-readable failure description"
      }
      
完整响应示例
1. 成功响应示例(fs_list_directory)
{
  "res": {
    "success": true,
    "info": {
      "paths": [
        "/tmp/tests/test_util.py",
        "/tmp/tests/__init__.py",
        "/tmp/tests/img/cochem_castle.jpg"
      ]
    }
  }
}
2. 失败响应示例(工作区路径逃逸限制)
{
  "res": {
    "success": false,
    "info": {
      "code": "WORKSPACE_ESCAPE_FORBIDDEN",
      "message": "Access restricted: Path `/tmp/test2` is outside allowed workspace `/tmp/tests`"
    }
  }
}

所有工具都会强制隔离工作区根目录,并完全遵循下方列出的标准化输入/输出架构定义。

完整 MCP 工具参考

所有工具输入架构均启用 additionalProperties: false 严格验证,以拒绝无法识别的参数并防止恶意路径注入。

1. 目录操作工具

fs_list_directory

描述:递归或浅层扫描目标目录,返回经过筛选的绝对文件系统路径列表,并提供文件类型和扩展名筛选选项。 参数:

  • source_dir(string,必填):要扫描的根目录路径
  • recursive(boolean,必填):启用对所有子目录的完整递归遍历
  • only_files(boolean,必填):将输出筛选为仅返回常规文件,不包含目录
  • file_extension(string,可选,默认值=""):将结果筛选为与指定后缀扩展名匹配的文件 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "paths": ["/absolute/path/file1.txt", "/absolute/path/file2.py"]
    }
  }
}
fs_copy_directory

描述:递归复制整个目录树,并可配置对已存在目标目录的覆盖行为。 参数:

  • source_dir(string,必填):源目录树路径
  • copy_dest_dir(string,必填):目标输出目录路径
  • overwrite(boolean,可选,默认值=false):清除并覆盖现有目标目录内容 成功响应负载:
{
  "res": {
    "success": true,
    "info": {}
  }
}
fs_move_directory

描述:将整个目录树原子地移动到新的目标路径。如果目标已存在,则立即失败;只有明确启用覆盖时才会覆盖,以避免意外数据丢失。 参数:

  • source_dir(string,必填):源目录路径
  • dest_dir(string,必填):目标目录路径
  • overwrite(boolean,可选,默认值=false):允许覆盖冲突的目标目录 成功响应负载:带有成功标志的空 info 对象封装。

2. 单文件基本操作工具

fs_create_file

描述:创建新的文本文件,自动生成缺失的父目录,并支持配置文本编码和初始文件内容。 参数:

  • file_path(string,必填):目标绝对文件路径
  • content(string,可选,默认值=""):写入新文件的初始文本内容
  • charset(string,可选,默认值="utf-8"):文本编码枚举值(完整字符集列表如下) 支持的字符集枚举值: utf-8、utf-16、latin-1、iso-8859-1、cp1252、Windows-1252、gbk、gb2312、shift_jis、euc_jp、euc_kr 成功响应负载:带有成功标志的空 info 对象封装。
fs_delete_file

描述:仅永久删除单个常规文件;拒绝目录路径输入,以阻止大规模递归删除风险。 参数:

  • file_path(string,必填):目标常规文件的绝对路径 成功响应负载:带有成功标志的空 info 对象封装。
fs_copy_file

描述:复制单个文件并保留原始文件系统元数据,并可配置对冲突目标文件的覆盖行为。 参数:

  • source_file_path(string,必填):源文件绝对路径
  • dest_file_path(string,必填):目标输出文件绝对路径
  • overwrite(boolean,可选,默认值=false):覆盖已存在的目标文件 成功响应负载:带有成功标志的空 info 对象封装。
fs_move_file

描述:将单个文件原子性地移动到新的绝对路径,并可配置目标文件冲突时的覆盖行为。 参数:

  • source_file_path(string,必填):源文件绝对路径
  • dest_file_path(string,必填):目标文件绝对路径
  • overwrite(boolean,可选,默认=false):允许覆盖冲突的目标文件 成功响应负载:带有成功标志的空 info 对象包装器。
fs_get_file_info

描述:获取文件或目录的完整元数据,可选计算 SHA-256 加密摘要以验证完整性。 参数:

  • file_path(string,必填):目标文件系统条目的绝对路径
  • calc_digest(boolean,可选,默认=false):计算文件内容的 SHA-256 哈希值 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "absolute_path": "C:\\Users\\zhigu\\Documents\\My Games\\fsext-mcp-server\\pyproject.toml",
      "is_readable": true,
      "is_writable": true,
      "size": 1672,
      "is_regular_file": true,
      "is_directory": false,
      "is_symbolic_link": false,
      "creation_millis": 1782288135574.7114,
      "last_modified_millis": 1782279393020.1187,
      "last_access_millis": 1782644004556.3462,
      "sha256_digest": "59614cf5f8ecff38de37637f1d5b6f607d885bd277815786f5ce4bb2ee5b73a6"
    }
  }
}
fs_is_file_exists

描述:轻量检查任意文件系统条目(文件或目录)是否存在,无需加载完整元数据。 参数:

  • file_path(string,必填):要验证的目标绝对路径 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "exists": true
    }
  }
}

3. 文件读写工具

fs_read_full_text

描述:使用用户指定的文本编码读取目标文件的完整文本内容。 参数:

  • file_path(string,必填):目标文本文件的绝对路径
  • charset(string,可选,默认="utf-8"):文本编码枚举值 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "content": "complete-text-file-content-here"
    }
  }
}
fs_read_text_range

描述:采用分段流式读取方式读取文本,针对大文件进行了优化;跳过开头的指定行数并限制读取的总行数,以避免内存过载。 参数:

  • file_path(string,必填):目标文本文件的绝对路径
  • lines_to_skip(integer,必填,最小值=0):读取时要跳过的初始行数
  • max_lines_to_read(integer,必填,最小值=0):从文件中提取的最大总行数
  • line_separator(string,可选,默认="\n"):换行分隔符
  • charset(string,可选,默认="utf-8"):文本编码枚举值 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "lines_count": 5,
      "content": "segmented-text-content-block"
    }
  }
}
fs_read_binary_chunk

描述:分块流式读取二进制文件;返回 Base64 编码的字节负载,以便通过网络 JSON-RPC 安全传输,并检测流结束标记。 参数:

  • file_path(string,必填):目标二进制文件的绝对路径
  • bytes_to_skip(integer,必填,最小值=0):读取分块前要跳过的前导字节数
  • max_bytes_to_read(integer,必填,最小值=0):单个分块要读取的最大字节数 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "data_base64": "base64-encoded-binary-byte-data",
      "raw_bytes_length": 5,
      "end_of_stream": true
    }
  }
}
fs_write_text

描述:将 UTF 或多编码文本内容写入目标文件,支持完整覆盖或仅追加写入模式。 参数:

  • file_path(string,必填):目标输出文件的绝对路径
  • text(string,必填,最小长度=1):要持久化的原始文本内容
  • append(boolean,可选,默认=false):追加模式标志(false = 覆盖整个文件)
  • charset(string,可选,默认="utf-8"):文本编码枚举值 成功响应负载:带有成功标志的空 info 对象包装器。
fs_write_binary

描述:解码 Base64 编码的二进制负载,并将原始字节写入目标文件,支持追加模式以分多块上传二进制数据。 参数:

  • file_path(string,必填):目标输出文件的绝对路径
  • base64_data(string,必填,最小长度=1):Base64 编码的原始二进制字节负载
  • append(boolean,可选,默认=false):将二进制数据追加到文件末尾(false = 覆盖) 成功响应负载:带有成功标志的空 info 对象包装器。

4. 内容搜索与原地替换工具

fs_search_files_by_content

描述:递归扫描目录树,并返回所有包含匹配目标文本模式的文件的绝对路径;支持正则表达式匹配、忽略大小写和按文件扩展名筛选。 参数:

  • dir_path(string,必需):递归内容扫描的根目录
  • recursive(boolean,必需):启用完整的子目录递归扫描
  • search_term(string,必需):纯文本关键字或正则表达式模式
  • is_regex(boolean,可选,默认=false):为 true 时,将 search_term 视为正则表达式模式
  • ignore_case(boolean,可选,默认=true):忽略大小写进行模式匹配
  • file_extension(string,可选,默认=""):按扩展名后缀筛选扫描的文件
  • charset(string,可选,默认="utf-8"):解析文件时使用的文本编码枚举值
fs_search_in_files_by_content

描述:批量匹配多个目录中的内容,返回结构化的匹配结果,并可配置匹配内容前后的上下文行数以及全局结果数量上限。 参数:

  • dir_path(string,必需):扫描根目录的绝对路径
  • recursive(boolean,必需):启用对所有子目录的递归遍历
  • search_term(string,必需):搜索关键字或正则表达式模式
  • limit(integer,必需):返回的匹配条目总数上限
  • is_regex(boolean,可选,默认=false):启用正则表达式匹配
  • ignore_case(boolean,可选,默认=true):禁用区分大小写的匹配
  • lines_before(integer,可选,默认=0):每个匹配行之前包含的上下文行数
  • lines_after(integer,可选,默认=0):每个匹配行之后包含的上下文行数
  • file_extension(string,可选,默认=""):按扩展名后缀筛选扫描的文件
  • charset(string,可选,默认="utf-8"):解析文件时使用的文本编码枚举值 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "results": [
        {
          "file_path": "/absolute/path/source.py",
          "start_line": 1,
          "end_line": 1,
          "text": "full-matched-line-content-with-context"
        }
      ]
    }
  }
}
fs_search_in_file_by_content

描述:精准搜索单个文件的内容,返回结构化的匹配片段,并可配置前后上下文行数,适用于代码和文档检查工作流。 参数:

  • file_path(string,必需):目标单个文件的绝对路径
  • search_term(string,必需):搜索关键字或正则表达式模式
  • is_regex(boolean,可选,默认=false):启用正则表达式匹配逻辑
  • ignore_case(boolean,可选,默认=true):启用或禁用忽略大小写匹配
  • lines_before(integer,可选,默认=0):每个匹配项之前包含的上下文行数
  • lines_after(integer,可选,默认=0):每个匹配项之后包含的上下文行数
  • charset(string,可选,默认="utf-8"):解析文件时使用的文本编码枚举值 成功响应负载:结构化的行匹配对象数组,格式与多文件搜索输出相同。
fs_file_replace

描述:在单个目标文件中执行全局原位文本替换;写入后返回匹配并替换的文本片段总数。 参数:

  • file_path(string,必需):目标可编辑文件的绝对路径
  • search_term(string,必需):要查找并替换的文本子串
  • replacement(string,必需):替换用的新文本内容
  • line_separator(string,可选,默认="\n"):解析文件时使用的换行符分隔符 成功响应负载:
{
  "res": {
    "success": true,
    "info": {
      "count": 1
    }
  }
}

5. 图像处理工具

fs_image_resize

描述:将源图像调整为指定的宽度和高度,原生支持保持宽高比,以及通过画布填充达到精确的目标分辨率。 参数:

  • source_path(字符串,必填):源输入图像的绝对路径
  • dest_path(字符串,必填):调整大小后的输出图像绝对路径
  • width(整数,必填,exclusiveMinimum=0):目标像素宽度
  • height(整数,必填,exclusiveMinimum=0):目标像素高度
  • keep_aspect_ratio(布尔值,可选,默认=true):缩放时锁定原始图像宽高比
  • pad_to_target(布尔值,可选,默认=true):锁定宽高比时,添加透明填充以达到精确的目标宽度和高度 成功响应载荷:带有成功标志的空 info 对象包装器。
fs_image_crop

描述:从源图像中提取矩形像素区域,并导出为独立的输出图像文件。 参数:

  • source_path(字符串,必填):源输入图像的绝对路径
  • dest_path(字符串,必填):裁剪后输出图像的绝对路径
  • x(整数,必填,minimum=0):裁剪区域原点的左侧像素坐标
  • y(整数,必填,minimum=0):裁剪区域原点的顶部像素坐标
  • width(整数,必填,exclusiveMinimum=0):裁剪矩形区域的像素宽度
  • height(整数,必填,exclusiveMinimum=0):裁剪矩形区域的像素高度 成功响应载荷:带有成功标志的空 info 对象包装器。
fs_image_rotate

描述:按任意浮点角度值顺时针旋转源图像;自动扩展输出画布尺寸,完整保留图像内容,避免边缘被裁切。 参数:

  • source_path(字符串,必填):源输入图像的绝对路径
  • dest_path(字符串,必填):旋转后输出图像的绝对路径
  • degrees(数字,必填):顺时针旋转角度 成功响应载荷:带有成功标志的空 info 对象包装器。

6. OCR 文本提取工具

fs_ocr_extract_text

描述:通过本地 Tesseract OCR 二进制程序,从光栅图像文件中提取可读文本。不存在 WASM JavaScript 回退实现;空的 tesseract_bin_path 参数不会初始化其他基于 Web 的 OCR 引擎。 参数:

  • image_path(字符串,必填):用于文本识别的输入图像绝对路径
  • tesseract_bin_path(字符串,可选,默认=""):本地 Tesseract 可执行二进制文件的绝对路径;值为空时仅通过系统 PATH 查找
  • tessdata_path(字符串,可选,默认=""):包含 Tesseract 语言训练数据文件的目录绝对路径
  • lang(字符串,可选,默认="eng"):与可用 tessdata 训练文件匹配的语言代码前缀 成功响应载荷:
{
  "res": {
    "success": true,
    "info": {
      "content": "full-ocr-extracted-text-from-input-image"
    }
  }
}

项目构建与开发脚本

面向源代码仓库贡献者的标准化 npm 等效 uv 开发脚本:

# Clean compiled build artifacts and temporary output directories
uv run -m scripts.clean

# Compile source code and type validation
uv run -m scripts.build

# Watch source files for incremental development rebuilds
uv run -m scripts.dev

# Full rebuild pipeline: clean artifacts + full source compilation
uv run -m scripts.rebuild

# Launch remote SSE transport server instance
uv run -m scripts.server

# FastMCP interactive development mode
uv run -m scripts.fastmcp

# MCP Inspector debug connection launcher
uv run -m scripts.inspect

# Execute full test suite with compiled test artifacts
uv run -m scripts.test

核心运行时依赖

  • fastmcp:官方 Python MCP 服务运行时框架
  • Pillow:用于调整大小、裁剪和旋转流程的跨平台图像处理后端
  • tesseract:本地 Tesseract OCR 二进制程序的原生 Python 绑定
  • chardet:多编码文本文件检测
  • iconv-lite equivalent backends:跨平台文本编码转换工具
  • cors:用于 HTTP/SSE 远程传输服务的 CORS 中间件
  • minimist equivalent CLI parser:用于启动标志的命令行参数解析
  • pydantic:用于所有 MCP 工具输入架构的严格类型验证
  • uvicorn / starlette:用于远程传输部署的 ASGI HTTP 服务运行时

许可证

本项目基于 Apache License 2.0 开源。有关完整的法律许可条款和条件,请参阅项目根目录中的 LICENSE 文件。

第三方组件许可证

本项目集成了多个开源依赖库,包括 chardet、Pillow、python-magic 和 Tesseract 绑定。这些第三方库均保留各自原有的开源许可协议和版权声明。

重要说明:此发行版中不包含任何 FFmpeg 二进制文件。如果在外部启用了媒体处理扩展,最终用户必须另行遵守 FFmpeg 的官方许可条款。

代码仓库与问题跟踪

评论

支持 Markdown

第一次接触 MCP?

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

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