get_alpha
Get an alpha
Return an alpha's expression, settings, in-sample stats and submission checks.
alpha_id必填
io.github.tukorama由 GitHub 帳號 tukorama 發布v0.2.1更新於 Nov 12, 2026
Simulate and backtest alphas on WorldQuant BRAIN, browse data fields and operators. Unofficial.
發布方自己的服務:BrainDog
非官方的 WorldQuant BRAIN 伺服器,讓助理瀏覽資料欄位與算子、回測 FASTEXPR alpha 並檢視結果。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
mcp-server-worldquantbrain is a Model Context Protocol (MCP) server for the
WorldQuant BRAIN API, with the same tools packaged for
LangGraph and LangChain. It lets an agent look up data fields, backtest Fast Expression (FASTEXPR)
alphas and read the results. Unofficial, and not affiliated with WorldQuant.
Driving BRAIN from an agent goes wrong in a few predictable ways, and each one shaped this package.
PENDING
with an id, and get_simulation_status picks it up again. Nothing is resubmitted.submit_alpha does not exist unless you turn it on, and when it is
on it runs BRAIN's checks and the self-correlation test first and refuses on any failure.Store your login once. Credentials go to ~/.config/mcp-server-worldquantbrain/credentials.json, readable
only by you.
Then add the server to your client.
Now ask for something like "Find a value signal in the fundamental datasets for USA TOP3000 and backtest it."
Prefer to pass credentials directly? Add "env": {"WQB_EMAIL": "...", "WQB_PASSWORD": "..."}.
The langgraph extra gives you plain LangChain tools in the same process, with no MCP server to
run. It also has a prebuilt agent.
The tools work from sync and async graphs. With WQB_ALLOW_SUBMIT=true the agent stops for human
approval before submit_alpha. Invoke it with a thread_id in the config, and resume with
Command(resume=...). get_brain_tools() leaves submit_alpha out, because a custom graph has no
approval step; pass include_submit=True once yours does.
To keep BRAIN in a separate process, connect over MCP instead. This route needs langchain[mcp],
which LangChain still marks as beta.
The subprocess inherits only HOME, PATH and a few others, so anything else, including WQB_*
variables, has to go in env. Over this route a submission confirmation arrives as a LangGraph
interrupt, so give the agent a checkpointer if you enable submission. A deployable example is in
examples/langgraph_app.
draw_mermaid(agent) from mcp_server_worldquantbrain.integrations.langgraph returns the graph as
a Mermaid flowchart, for the prebuilt agent or a graph of your own. Tools
are grouped by area and colored by what they can change. This is the prebuilt agent with
WQB_ALLOW_SUBMIT=true:
Resources: brain://operators, brain://simulation-options, brain://alphas/{alpha_id}, and
reference pages under brain://docs/ (fastexpr-cheatsheet, settings-guide,
submission-criteria).
Prompts: design_alpha runs a short research loop. review_alpha assesses an existing alpha.
All settings are environment variables. A .env file in the working directory also works, except
for settings that decide where credentials go or that enable submission (WQB_BASE_URL, the file
and directory paths, the WQB_SUBMIT_* and WQB_ALLOW_SUBMIT settings, and the bearer token).
These have to be set in the real environment.
On Windows the two directories are %APPDATA%\mcp-server-worldquantbrain and
%LOCALAPPDATA%\mcp-server-worldquantbrain, and files are protected by your user profile rather than POSIX
permissions.
To serve over HTTP:
The server refuses a non-local address without a token. /health stays open for probes.
Long calls. Claude Desktop has been reported to cancel stdio tool calls after about a minute, so
for that client each call is limited to 45 seconds of waiting and the agent resumes with
get_simulation_status. Claude Code and LangGraph wait as long as you let them. Set
WQB_SIMULATION_TIMEOUT to match whatever your client allows.
Concurrency. BRAIN limits simultaneous simulations per account and does not publish the number.
The default of 2 is deliberately cautious. Raise it if your account allows more. The setting only
counts blocking calls while they wait, and one batch group of up to 10 uses one slot. wait=False
calls, simulations still running after a timeout, and other processes on the same account are not
counted, and can hit BRAIN's own limit, which comes back as a rate-limit error with a suggested
wait.
The ledger. Whitespace in an expression does not matter; every setting does. Pass force=True
to run an identical simulation again. Failed simulations can be run again.
Writes are not retried. A POST that may have reached BRAIN is never repeated automatically, so a
network failure cannot spend quota twice or submit twice. Reads retry with backoff and honour
Retry-After.
Biometric login. authenticate returns a URL, the user finishes the check in a browser, and
complete_authentication ends the login. The pending check is saved for 30 minutes, so it survives
a restart. On a terminal, mcp-server-worldquantbrain auth does the same with a prompt.
What is cached. Operators and simulation options for a week, categories and dataset pages for a day. Alphas, simulations, checks, correlations and data fields are always fetched fresh.
What is never logged. Passwords, cookies, authorization headers and session tokens are masked, and email addresses are shortened, in logs and error messages.
WQB_LIVE=1 uv run pytest -m live to check it against your account.update_alpha, submit_alpha and production correlation results
have only been tested against responses documented by other BRAIN clients, so treat them as less
proven. If a biometric completion fails, log in once on the BRAIN website and call authenticate
with force=true.submit_alpha
refuses. Set WQB_SUBMIT_CORRELATION_GATE=0 on accounts where that endpoint is unavailable.credentials.json is plaintext protected by file permissions. Use WQB_EMAIL and WQB_PASSWORD
from your own secret store if that is not enough.No code in this repository was copied from those projects.
To point a client at a checkout, use uvx --from /path/to/mcp-server-worldquantbrain mcp-server-worldquantbrain,
or uv add --editable ../mcp-server-worldquantbrain from your LangGraph project. See
CONTRIBUTING.md
and RELEASING.md.
來源:README.md,提交 70e3d25
Get an alpha
Return an alpha's expression, settings, in-sample stats and submission checks.
alpha_id必填List my alphas
Search the user's alphas. Use next_offset to page; BRAIN stops at offset 10,000.
tagnamecolordelaylimitorderhiddenoffsetregionstatuscategoryfavorite另有 8 個Get alpha PnL
Summarize an alpha's PnL by year, with optional recent daily cumulative values.
last_nalpha_id必填include_dailyList alpha recordsets
List the recordset names available for an alpha, for use with get_alpha_recordset.
alpha_id必填Get an alpha recordset
Return one recordset as named rows. Prefer get_alpha_pnl for PnL.
name必填alpha_id必填max_rowsUpdate alpha properties
Change an alpha's name, description, tags, color, category, favorite or hidden flag.
nametagscolorhiddenalpha_id必填categoryfavoritedescriptionRun submission checks
Run BRAIN's pre-submission checks. verdict is PASS, WARNING, FAIL or PENDING.
alpha_id必填wait_secondsGet self-correlation
Return the alpha's highest correlation with the user's submitted alphas (limit 0.7).
alpha_id必填wait_secondsGet production correlation
Return the alpha's correlation with the production pool. Some account tiers get a 403.
alpha_id必填wait_secondsLog in to BRAIN
Log in with the configured credentials, reusing a saved session when it is still valid. Tools log in on their own, so this is only needed to start or restart a biometric check. When state is biometric_required, have the user open biometric_url, then call complete_authentication.
forceFinish a biometric login
Finish a login after the user completed the biometric check at biometric_url.
無需輸入參數。
Check the BRAIN session
Report whether a BRAIN session is active and when it expires. Never sends the password.
無需輸入參數。
List datasets
List datasets available for a market. Cached for a day.
delaylimitorderthemeoffsetregionsearchcategoryuniverseinstrument_typeGet a dataset
Return one dataset with its full description, for example dataset_id 'pv1'.
dataset_id必填List data fields
Find the data fields usable in expressions. BRAIN stops paging at 10,000 rows, so when truncated_by_api is true narrow with dataset_id or search.
typedelaylimitorderoffsetregionsearchcategoryuniversedataset_idinstrument_typeGet a data field
Return one data field with its full description, for example field_id 'close'.
field_id必填List data categories
Return the data category tree. Cached for a day.
無需輸入參數。
List operators
List the FASTEXPR operators this account can use. Cached for a week.
searchverbosecategorySimulate an alpha
Backtest one FASTEXPR expression and return its alpha with stats and checks. A simulation usually takes 1 to 10 minutes. If it outlasts the timeout the result has status PENDING and a simulation_id: call get_simulation_status to resume, never simulate again. Identical expression and settings return the earlier result (from_ledger) without spending quota. ERROR or FAIL results carry BRAIN's message, usually a syntax or field problem.
waitdecaydelayforceregionuniversemax_tradeexpression必填truncationtest_periodnan_handlingunit_handling另有 4 個Simulate several alphas
Backtest up to 30 expressions, sent to BRAIN in groups of at most 10. All expressions must share one delay; different regions are sent as separate groups. Multi-simulation needs a Consultant account. Expressions already in the ledger are returned without spending quota. not_started lists anything that could not be sent; resubmit those later.
waitforcealphas必填timeout_secondsGet simulation status
Check or resume a simulation. A finished one includes its alpha; a batch lists children.
wait_secondssimulation_id必填List valid simulation settings
List the regions, universes, delays and neutralizations this account may simulate. by_context maps parent settings such as 'EQUITY:USA' to the values valid for them. Cached for a week.
無需輸入參數。
Get my profile
Return the user's BRAIN profile. Personal fields are withheld by default.
include_piiGet my activity
Return simulation or submission counts: yesterday, month to date, year to date, total.
kind必填List my messages
Return platform messages, newest first, as plain text capped at 2,000 characters each.
typelimitoffset已滿足適用檢查項的 90%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

dog.brain官方發布者
BrainDog 是一個託管記錄庫,集中保存專案、決策與金錢,接入的 AI 代理在開工前讀取、結束後寫入。

由 GitHub 帳號 z4215699 發布
面向受治理自主代理平台的遠端 MCP 伺服器,在審批與稽核約束下為助理提供知識庫、記憶、能力呼叫與代理委派工具。
由 GitHub 帳號 matt-warchol 發布
遠端 MCP 伺服器,為助理提供免費的 B2B 客戶管理手冊,涵蓋客戶留存、續約、成長與客戶規劃。

由 GitHub 帳號 Nomannazir 發布
為本機或公開 git 程式碼庫建立索引,讓助理能檢索程式碼、追溯 git 歷史、分析變更影響並找出過時文件,結果都附上檔案路徑與行號引用。

由 GitHub 帳號 zhang-liz 發布
為 AI 助理提供職場人脈記憶,資料以圖的形式存放在 FalkorDB,可查詢聯絡人、依主題找人並記錄你見過的人。
uvx mcp-server-worldquantbrain authclaude mcp add brain -- uvx mcp-server-worldquantbrain{ "mcpServers": { "brain": { "command": "uvx", "args": ["mcp-server-worldquantbrain"] } }}uv add "mcp-server-worldquantbrain[langgraph]"from mcp_server_worldquantbrain.integrations.langgraph import create_brain_agent, get_brain_tools
agent = create_brain_agent("anthropic:claude-sonnet-5")result = await agent.ainvoke({"messages": [("user", "Backtest rank(-returns) and summarize it")]})
# Or take the tools and build your own graph:tools = get_brain_tools()from langchain.agents import create_agentfrom langchain.mcp import MCPAdapter
config = { "mcpServers": { "brain": { "command": "uvx", "args": ["mcp-server-worldquantbrain"], "timeout": 1_200_000, # milliseconds; simulations block } }}
async with MCPAdapter(config) as adapter: agent = create_agent("anthropic:claude-sonnet-5", await adapter.list_tools())---config: flowchart: nodeSpacing: 24 rankSpacing: 12 padding: 8---flowchart TB subgraph agent["Agent graph"] direction LR n0([start]) n1["model"] n2["tools"] n3{{"human approval<br/>before submit_alpha"}}:::approval n4([end]) n3 -.-> n4 n3 -.->|"rejected"| n1 n3 -.->|"approved"| n2 n0 --> n1 n1 --> n3 n2 -.-> n1 end subgraph tools["Tools"] direction TB subgraph tools_row0[" "] direction LR subgraph tools_auth["Login"] direction LR tools_auth_read["auth_status"]:::read tools_auth_write["authenticate<br/>complete_authentication"]:::write end subgraph tools_simulations["Simulate"] direction LR tools_simulations_read["get_simulation_status<br/>get_simulation_options"]:::read tools_simulations_write["simulate_alpha<br/>simulate_alphas_batch"]:::write end subgraph tools_submit["Submit"] direction LR tools_submit_irreversible["submit_alpha"]:::irreversible end tools_auth ~~~ tools_simulations ~~~ tools_submit end subgraph tools_row1[" "] direction LR subgraph tools_alphas["Alphas"] direction LR tools_alphas_read["get_alpha<br/>list_alphas<br/>get_alpha_pnl<br/>list_alpha_recordsets<br/>get_alpha_recordset<br/>check_alpha_submission<br/>get_alpha_self_correlation<br/>get_alpha_prod_correlation"]:::read tools_alphas_write["update_alpha"]:::write end subgraph tools_data["Data"] direction LR tools_data_read["list_datasets<br/>get_dataset<br/>list_datafields<br/>get_datafield<br/>list_data_categories<br/>list_operators"]:::read end subgraph tools_users["Account"] direction LR tools_users_read["get_user_profile<br/>get_user_activity<br/>list_messages"]:::read end tools_alphas ~~~ tools_data ~~~ tools_users end tools_row0 ~~~ tools_row1 end agent -- tool calls --> tools subgraph legend["Legend"] direction TB legend_read["read-only"]:::read legend_write["changes account state"]:::write legend_irreversible["irreversible"]:::irreversible end brain["BRAIN API"]:::external tools -- HTTPS --> brain tools ~~~ legend classDef default fill:#64748b,fill-opacity:0.06,stroke:#64748b classDef read fill:#64748b,fill-opacity:0.14,stroke:#64748b classDef write fill:#d97706,fill-opacity:0.16,stroke:#d97706 classDef irreversible,approval fill:#dc2626,fill-opacity:0.16,stroke:#dc2626,stroke-width:2px classDef external fill-opacity:0,stroke-dasharray:5 4 classDef box fill:#64748b,fill-opacity:0.05,stroke:#64748b,stroke-opacity:0.45 classDef row fill:none,stroke:none class agent,tools,tools_auth,tools_simulations,tools_submit,tools_alphas,tools_data,tools_users,legend box class tools_row0,tools_row1 rowWQB_HTTP_BEARER_TOKEN=change-me mcp-server-worldquantbrain serve --transport streamable-http --host 0.0.0.0