iFlow Search

السجل الرسمي البحث والويب

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

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «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
إعداد 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>"
            }
        }
    }
}

متغيرات البيئة

  • IFLOW_API_KEY إلزامي سري 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.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  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.

الأسئلة الشائعة

ما هو iFlow Search؟

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

كيف أثبّت iFlow Search؟

يعمل على جهازك. في 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. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج iFlow Search إلى مفتاح API؟

نعم. يتطلب IFLOW_API_KEY، وتضبطها في إعداداته.

هل iFlow Search مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص MIT.

من يصون iFlow Search؟

ينشره zhengyanglsun. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.