Metadata-Version: 2.4
Name: mfs-server
Version: 0.4.0
Summary: MFS server — Multi-source File-like Search (heavy side: connectors, ingest, retrieval, storage)
Project-URL: Homepage, https://github.com/zilliztech/mfs
Project-URL: Repository, https://github.com/zilliztech/mfs
Project-URL: Issues, https://github.com/zilliztech/mfs/issues
Author-email: Cheney Zhang <chen.zhang@zilliz.com>
License-Expression: Apache-2.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: aiomysql>=0.3.2
Requires-Dist: aiosqlite>=0.20
Requires-Dist: chonkie>=0.4
Requires-Dist: fastapi>=0.110
Requires-Dist: httpx>=0.27
Requires-Dist: huggingface-hub>=0.20
Requires-Dist: markitdown[all]>=0.0.1
Requires-Dist: milvus-lite>=3.0
Requires-Dist: numpy>=1.24
Requires-Dist: onnxruntime>=1.17
Requires-Dist: openai>=1.40
Requires-Dist: pathspec>=1.1.1
Requires-Dist: pydantic-settings>=2.2
Requires-Dist: pydantic>=2.6
Requires-Dist: pymilvus>=2.5
Requires-Dist: pymongo>=4.13
Requires-Dist: python-multipart>=0.0.9
Requires-Dist: questionary>=2
Requires-Dist: rich>=13
Requires-Dist: tiktoken>=0.7
Requires-Dist: tokenizers>=0.15
Requires-Dist: tomli>=2.0; python_version < '3.11'
Requires-Dist: uvicorn[standard]>=0.27
Provides-Extra: all-connectors
Requires-Dist: aioboto3>=13.0; extra == 'all-connectors'
Requires-Dist: aiohttp>=3.9; extra == 'all-connectors'
Requires-Dist: asyncpg>=0.29; extra == 'all-connectors'
Requires-Dist: atlassian-python-api>=3.41; extra == 'all-connectors'
Requires-Dist: beautifulsoup4>=4.12; extra == 'all-connectors'
Requires-Dist: google-api-python-client>=2.120; extra == 'all-connectors'
Requires-Dist: google-auth>=2.29; extra == 'all-connectors'
Requires-Dist: google-cloud-bigquery>=3.20; extra == 'all-connectors'
Requires-Dist: hubspot-api-client>=11.0; extra == 'all-connectors'
Requires-Dist: lark-oapi>=1.2; extra == 'all-connectors'
Requires-Dist: notion-client>=2.2; extra == 'all-connectors'
Requires-Dist: slack-sdk>=3.27; extra == 'all-connectors'
Requires-Dist: snowflake-connector-python>=3.10; extra == 'all-connectors'
Provides-Extra: all-providers
Requires-Dist: anthropic>=0.40; extra == 'all-providers'
Requires-Dist: google-genai>=0.3; extra == 'all-providers'
Requires-Dist: ollama>=0.4; extra == 'all-providers'
Requires-Dist: voyageai>=0.3; extra == 'all-providers'
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.40; extra == 'anthropic'
Provides-Extra: bigquery
Requires-Dist: google-cloud-bigquery>=3.20; extra == 'bigquery'
Provides-Extra: dev
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Provides-Extra: embedding-onnx
Provides-Extra: feishu
Requires-Dist: lark-oapi>=1.2; extra == 'feishu'
Provides-Extra: gemini
Requires-Dist: google-genai>=0.3; extra == 'gemini'
Provides-Extra: github
Requires-Dist: httpx>=0.27; extra == 'github'
Provides-Extra: google
Requires-Dist: google-api-python-client>=2.120; extra == 'google'
Requires-Dist: google-auth>=2.29; extra == 'google'
Provides-Extra: hubspot
Requires-Dist: hubspot-api-client>=11.0; extra == 'hubspot'
Provides-Extra: jira
Requires-Dist: atlassian-python-api>=3.41; extra == 'jira'
Provides-Extra: local
Requires-Dist: einops>=0.8; extra == 'local'
Requires-Dist: sentence-transformers>=3.0; extra == 'local'
Provides-Extra: notion
Requires-Dist: notion-client>=2.2; extra == 'notion'
Provides-Extra: ollama
Requires-Dist: ollama>=0.4; extra == 'ollama'
Provides-Extra: pg
Requires-Dist: asyncpg>=0.29; extra == 'pg'
Provides-Extra: s3
Requires-Dist: aioboto3>=13.0; extra == 's3'
Provides-Extra: slack
Requires-Dist: slack-sdk>=3.27; extra == 'slack'
Provides-Extra: snowflake
Requires-Dist: snowflake-connector-python>=3.10; extra == 'snowflake'
Provides-Extra: voyage
Requires-Dist: voyageai>=0.3; extra == 'voyage'
Provides-Extra: web
Requires-Dist: aiohttp>=3.9; extra == 'web'
Requires-Dist: beautifulsoup4>=4.12; extra == 'web'
Description-Content-Type: text/markdown

# mfs-server

The server side of **MFS — Multi-source File-like Search**: a context engine
that turns code, docs, messages, databases, and object stores into one
file-like, searchable namespace for AI agents and developers.

`mfs-server` is the heavy half of MFS. It owns the connectors, the ingest
pipeline, the vector index, and the storage — and exposes everything over an
HTTP `/v1` control plane. The thin [`mfs` CLI](https://crates.io/crates/mfs-cli)
and the generated SDKs are just clients of this server.

- **Project & docs:** https://zilliztech.github.io/mfs/
- **Source:** https://github.com/zilliztech/mfs

## Install

```bash
pip install mfs-server                     # core + local ONNX embeddings, Milvus Lite, SQLite
pip install "mfs-server[all-connectors]"   # add every connector's SDK
pip install "mfs-server[pg,s3,slack]"      # or just the connectors you need
```

`pipx install mfs-server` works too if you want it isolated. The defaults run
fully offline: local ONNX (BGE) embeddings, Milvus Lite, and SQLite, with no
cloud account or API key.

## Run

```bash
mfs-server setup     # optional: write $MFS_HOME/server.toml (defaults to ~/.mfs)
mfs-server run       # all-in-one: API + inline task processing on 127.0.0.1:13619
```

For a horizontally scaled deployment, split the roles:

```bash
mfs-server api                    # HTTP control plane only
mfs-server worker --concurrency auto   # queue worker(s)
```

Point the `mfs` CLI (or an SDK) at the server and you're ready to
`mfs add` a source and `mfs search` it. See the
[Quickstart](https://zilliztech.github.io/mfs/getting-started/) for the full
first run.

## Optional native acceleration

A few hot paths — the gitignore directory walk, parallel content hashing,
linear grep, and `tail` — have an optional PyO3 extension (`mfs-server-rs`). The
server falls back to a pure-Python implementation when it isn't installed, so it
is never required; it only makes large inputs faster. See
[Deployment](https://zilliztech.github.io/mfs/deployment/) for how to build it
in.

## License

Apache-2.0.
