iFlow Search

Registre officiel Recherche et web

MCP server for iFlow Search web search, image search, and URL fetch tools.

Installation

Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).

NPM package @iflow-ai/search-mcp
Claude Code
claude mcp add iflow-search -e 'IFLOW_API_KEY=<your iflow_api_key>' -e 'IFLOW_MCP_CLIENT=<IFLOW_MCP_CLIENT>' -e 'IFLOW_MCP_CLIENT_VERSION=<IFLOW_MCP_CLIENT_VERSION>' -e 'IFLOW_BASE_URL=<IFLOW_BASE_URL>' -- npx -y @iflow-ai/search-mcp@0.1.0
Configuration JSON (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "iflow-search": {
            "command": "npx",
            "args": [
                "-y",
                "@iflow-ai/search-mcp@0.1.0"
            ],
            "env": {
                "IFLOW_API_KEY": "<your iflow_api_key>",
                "IFLOW_MCP_CLIENT": "<IFLOW_MCP_CLIENT>",
                "IFLOW_MCP_CLIENT_VERSION": "<IFLOW_MCP_CLIENT_VERSION>",
                "IFLOW_BASE_URL": "<IFLOW_BASE_URL>"
            }
        }
    }
}

Variables d'environnement

  • IFLOW_API_KEY obligatoire secret Bearer token for the iFlow Search API. Obtain one at https://platform.iflow.cn.
  • IFLOW_MCP_CLIENT Optional MCP client slug forwarded to iFlow as the IFlow-MCP-Client header. Matches /^[a-z0-9._-]{1,64}$/.
  • IFLOW_MCP_CLIENT_VERSION Optional MCP client version forwarded to iFlow as the IFlow-MCP-Client-Version header. Only honored when IFLOW_MCP_CLIENT is also set.
  • IFLOW_BASE_URL Optional override for the iFlow Search API base URL. Defaults to https://platform.iflow.cn.

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. iflow-search-js
  2. Package / usage matrix
  3. Current status
  4. Workspace development
  5. Basic usage — core SDK
  6. Basic usage — LangChain
  7. Basic usage — LangGraph
  8. Attribution headers
  9. Security / key handling
  10. Roadmap
  11. Maintenance and roadmap
  12. License

iflow-search-js

JavaScript / TypeScript integrations for iFlow Search (心流搜索) — a search API that provides web search, image search, and web page fetching with AI-friendly structured output.

This monorepo contains:

  • A framework-agnostic core SDK
  • A LangChain JS tool adapter (also usable from LangGraph)
  • A LangGraph agent example
  • An MCP stdio server for Hermes / Claude Code / Claude Desktop / other MCP clients

Package / usage matrix

PathPackageStatusPublish targetDepends onWhen to use
packages/search-core@iflow-ai/search-coreimplementednpm— (zero runtime deps)You are building a framework adapter, calling iFlow directly from a backend, or you don't use LangChain.
packages/search-langchain@iflow-ai/search-langchainimplementednpm@iflow-ai/search-core, @langchain/core, zodYou are building a LangChain JS agent or a LangGraph agent — both reuse the same tool factories.
examples/langgraph-agent@iflow-examples/langgraph-agentimplementednot published (workspace example)@iflow-ai/search-langchain, @langchain/langgraphReference for wiring createReactAgent with iFlow Search tools. Copy the pattern, don't depend on it.
packages/search-mcp@iflow-ai/search-mcpimplementednpm@iflow-ai/search-core, MCP SDKYou want to expose iFlow Search to MCP clients (Hermes Agent, Claude Code, Claude Desktop, etc.). Stdio transport.
plugins/iflow-search(Claude Code Plugin manifest)implementedAnthropic Plugin Directory (pending)@iflow-ai/search-mcp (npm)You are a Claude Code user and want one-click /plugin install of iFlow Search. Metadata-only; reuses the npm package.
Why there is no @iflow-ai/search-langgraph

LangGraph consumes LangChain tools directly. A separate search-langgraph package would be a thin re-export with no added value — use @iflow-ai/search-langchain for both. See examples/langgraph-agent for a working createReactAgent wiring.

Current status

  • ✅ @iflow-ai/search-core — implemented, framework-agnostic client
  • ✅ @iflow-ai/search-langchain — implemented, three tools (iflow_web_search, iflow_image_search, iflow_web_fetch)
  • ✅ examples/langgraph-agent — implemented, ReAct agent end-to-end smoke validated against real iFlow API
  • ❌ no separate @iflow-ai/search-langgraph package (intentional — see above)
  • ✅ @iflow-ai/search-mcp — implemented, stdio MCP server with three tools mirroring the LangChain adapter; optional MCP-host attribution via IFLOW_MCP_CLIENT / IFLOW_MCP_CLIENT_VERSION
  • ✅ plugins/iflow-search — Claude Code Plugin manifest (metadata-only, runs npx -y @iflow-ai/search-mcp); awaiting submission to the Anthropic Plugin Directory. See plugins/iflow-search/README.md.

Workspace development

pnpm install
pnpm -r run typecheck
pnpm -r run build
pnpm -r run test

The workspace pins @langchain/core to ^1.1.44 via pnpm-workspace.yaml overrides: to keep LangGraph's runtime and LangChain's tool types on a single major. Removing this override re-introduces ToolMessage cross-version serialization bugs in LangGraph agent loops; rerun the LangGraph agent tests before you touch it.

Basic usage — core SDK

import { createIFlowSearchClient } from "@iflow-ai/search-core";

const client = createIFlowSearchClient({
  apiKey: process.env.IFLOW_API_KEY!,
  source: "core",
  integrationName: "my-app",
  integrationVersion: "1.0.0",
});

const result = await client.webSearch({ query: "flash attention", count: 5 });
if (!result.ok) {
  console.error(result.error.code, result.error.message);
} else {
  for (const r of result.data.results) console.log(r.title, r.url);
}

See packages/search-core/README.md for the full API surface.

Basic usage — LangChain

import { createIFlowSearchTools } from "@iflow-ai/search-langchain";

const tools = createIFlowSearchTools({
  apiKey: process.env.IFLOW_API_KEY!,
});

// Hand `tools` to any LangChain JS agent that supports `bindTools`.

See packages/search-langchain/README.md for tool-by-tool docs.

Basic usage — LangGraph

LangGraph does not need a separate iFlow package. Pass the same @iflow-ai/search-langchain tools into createReactAgent:

import { createReactAgent, ToolNode } from "@langchain/langgraph/prebuilt";
import { createIFlowSearchTools } from "@iflow-ai/search-langchain";

const tools = createIFlowSearchTools({ apiKey: process.env.IFLOW_API_KEY! });
const agent = createReactAgent({ llm, tools: new ToolNode(tools) });

The working end-to-end example lives at examples/langgraph-agent — bring your own tool-calling LLM (DeepSeek, OpenAI, Anthropic, …).

Attribution headers

Every request to iFlow goes through @iflow-ai/search-core and carries:

IFlow-Source:              <runtime>
IFlow-Integration:         <package-name>
IFlow-Integration-Version: <package-version>
User-Agent:                <package-name>/<package-version>

Currently emitted values:

IntegrationIFlow-SourceIFlow-Integration
@iflow-ai/search-langchain (also from LangGraph)langchain@iflow-ai/search-langchain
@iflow-ai/search-mcpmcp@iflow-ai/search-mcp

@iflow-ai/search-mcp additionally emits IFlow-MCP-Client and IFlow-MCP-Client-Version when the MCP host declares itself via IFLOW_MCP_CLIENT / IFLOW_MCP_CLIENT_VERSION environment variables (e.g. hermes, claude-code, claude-desktop). Absence of these headers is meaningful — there is no unknown placeholder, so hosts that opt out remain indistinguishable from hosts that have not adopted the convention.

LangGraph traffic shows up as IFlow-Source: langchain because it consumes the same LangChain adapter — there is no separate langgraph source ID for this reason.

Security / key handling

  • Never commit real API keys. Use environment variables (IFLOW_API_KEY, plus your LLM provider key for agent examples).
  • Don't write keys into .env files that get committed, into package.json, or into test fixtures.
  • The unit tests in this repo use fake keys and a mocked fetch — they never touch the real iFlow API.
  • Real-API smoke tests are opt-in. The committed smoke scripts (e.g. packages/search-langchain/scripts/smoke-direct.mjs) read IFLOW_API_KEY from the environment at runtime and never persist it.

Roadmap

  • P0 ✅ @iflow-ai/search-core — framework-agnostic SDK
  • P1 ✅ @iflow-ai/search-langchain — LangChain JS tool adapter
  • P2 ✅ examples/langgraph-agent — LangGraph ReAct agent example
  • P3 ✅ @iflow-ai/search-mcp — MCP server for Hermes / Claude Desktop / other MCP clients
  • P4 🟡 docs and examples polish — broader recipes, additional LLM providers
  • P5 optional — refactor the OpenClaw community iFlow plugin to reuse @iflow-ai/search-core

Maintenance and roadmap

Long-form docs for maintainers and contributors live under docs/:

  • docs/package-strategy.md — which npm packages we publish, which we explicitly will not, and the decision rubric for new ones.
  • docs/integration-roadmap.md — how each framework (LangChain, LangGraph, OpenClaw, Hermes, Claude Code, iFlow CLI, Open WebUI, Coze, CrewAI) reaches iFlow Search, with phased execution order.
  • docs/release-policy.md — versioning, next vs latest, the per-release checklist, and the manual publish commands.
  • docs/mcp-design.md — design for the planned @iflow-ai/search-mcp server (P3): package decision, transport scope, tool schema, attribution headers, MCP client config example, and test strategy.

License

MIT — see LICENSE.

Questions fréquentes

Qu'est-ce que iFlow Search ?

MCP server for iFlow Search web search, image search, and URL fetch tools.

Comment installer iFlow Search ?

Il s'exécute sur votre machine. Dans Claude Code : claude mcp add iflow-search -e 'IFLOW_API_KEY=<your iflow_api_key>' -e 'IFLOW_MCP_CLIENT=<IFLOW_MCP_CLIENT>' -e 'IFLOW_MCP_CLIENT_VERSION=<IFLOW_MCP_CLIENT_VERSION>' -e 'IFLOW_BASE_URL=<IFLOW_BASE_URL>' -- npx -y @iflow-ai/search-mcp@0.1.0. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.

Faut-il une clé API pour iFlow Search ?

Oui. Il attend IFLOW_API_KEY, à renseigner dans sa configuration.

iFlow Search est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient iFlow Search ?

Il est publié par zhengyanglsun. AI.tn le référence sans le maintenir ni le recommander.

Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.