Consolidated DAAS MCP server + CLI - hosts the alerts, cron, composite, daas, dashboard, leader, pdf, and research tool groups (~187 tools) behind one stdio FastMCP server and one Click CLI. Both consume fd_daas_mcp/registry.py so the server and CLI surfaces cannot drift.
Project description
fd-daas-mcp
A single MCP server + CLI for skill-driven data access across financial,
economic, and statistical sources. Browse thousands of indicators, build entity
& indicator collections, run research workflows, and share dashboards - all
behind one stdio server with 181 tools across 8 groups (187 with the
optional pdf extra).
fd-daas-mcp is the engine behind the DAAS
skill-driven data-fetch workflow. Point any MCP client (Claude Code, etc.) at
it and the tools show up as <group>_<tool> calls - e.g. daas_list_sources,
alerts_create_alert_rule, research_create.
Install
pip install fd-daas-mcp
Optional extras (all lazy-loaded - a missing extra degrades to a per-feature error, never a startup crash):
pip install "fd-daas-mcp[pdf]" # local PDF/text vector search (sqlite-vec)
pip install "fd-daas-mcp[crew]" # CrewAI router for the leader group
pip install "fd-daas-mcp[akshare]" # live A-share OHLCV/fundamentals
pip install "fd-daas-mcp[position]" # CSS/xpath/json-path rule extraction
pip install "fd-daas-mcp[repl]" # REPL history/autocomplete
pip install "fd-daas-mcp[dev]" # pytest + mkdocs for contributors
60-second quickstart
# 1. Install
pip install fd-daas-mcp
# 2. Point your MCP client at it. For Claude Code, add to your .mcp.json:
// .mcp.json
{
"mcpServers": {
"fd-daas-mcp": {
"command": "fd-daas-mcp-server",
"args": []
}
}
}
# 3. Provision the database (creates daas.db + full schema + starter sources.
# DAAS_DATABASE_URL is optional - defaults to ./daas.db or ~/.fd-daas-mcp/):
fd-daas-mcp init
fd-daas-mcp doctor # read-only health check (path, schema, row counts)
# 4. Or use the CLI directly:
fd-daas-mcp --help # see every group + tool
fd-daas-mcp daas list_sources # invoke a tool: <group> <tool> [key=value ...]
fd-daas-mcp # drop into the REPL (needs [repl] extra)
On server startup the schema auto-creates and you'll see the registration report:
registry: 181 tools across 8 sources (failed=0, skipped_optional=1)
(181 tools with the default install; 187 with the pdf extra installed. The
pdf group is optional and skipped when sqlite-vec is absent.)
Tool groups
| Group | Surface prefix | What it does |
|---|---|---|
daas |
daas_* |
Datasource/function/column catalog, entities, indicators, collections, rules, pipelines |
alerts |
alerts_* |
Rule-based alerting over indicator series (Feishu/Discord/Slack/Telegram/DingTalk/WeCom/Twitter) |
cron |
cron_* |
Scheduled task execution + history |
composite |
composite_* |
Compose + chain tools across upstream MCPs |
dashboard |
dashboard_* |
Standalone-HTML dashboard registry + query |
leader |
leader_* |
CrewAI DataCrew router, specialist agents, workflows, snapshots |
pdf |
pdf_* |
Local PDF/text semantic vector search (optional - needs sqlite-vec) |
research |
research_* |
Persisted research bundles + generated markdown reports |
The CLI tree mirrors this: fd-daas-mcp <group> <tool>. Both server and CLI
are generated from the same registry.build(), so they cannot drift.
Skills
The skills/ directory (in the repo, not the wheel) contains 15 Claude Code
skills that turn the raw tools into guided workflows - data fetch, research
orchestration, dashboard building, rule authoring, and more. To use them:
git clone https://github.com/FindDataOfficial/fd-daas-mcp.git
# Then point Claude Code at skills/ in the clone (or symlink into ~/.claude/skills/).
See CONTRIBUTING.md and the docs site for details.
Architecture
src/fd_daas_mcp/ # the installable package
server.py # FastMCP app - registers every tool as <group>_<tool>
cli.py # Click CLI - auto-generated from registry.build()
registry.py # AST-harvests tools from each mcp/<group>/ (per-group sys.modules isolation)
selfcheck.py # offline invariants (run_invariants())
models.py # vendored SQLAlchemy schema (Base + ORM for every domain)
mcp/ # tool-group source (shipped as package data)
alerts/ cron/ composite/ daas/ dashboard/ leader/ pdf/ research/
The registry loads each group's server.py and harvests @app.tool-decorated
functions (inline groups) or the *_tools.py modules they import (non-inline
groups), with per-group sys.modules isolation so leaf modules like
database.py don't collide across groups. The cron group is loaded with
suppress=True to neutralize APScheduler's import-time thread while keeping
its idempotent DDL.
Development
git clone https://github.com/FindDataOfficial/fd-daas-mcp.git
cd fd-daas-mcp
uv sync --extra dev # editable install + dev deps (pytest, mkdocs, twine)
uv run pytest # offline test suite
uv run python -m fd_daas_mcp.selfcheck
See CONTRIBUTING.md for the full guide.
License
MIT - © FindDataOfficial.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fd_daas_mcp-0.1.1.tar.gz.
File metadata
- Download URL: fd_daas_mcp-0.1.1.tar.gz
- Upload date:
- Size: 325.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f390a5a570b5f6cfa652e27c73eb59e8c822d1c034e6ad34e4784bbe6dc41ef
|
|
| MD5 |
be3ab889c2d2b3d250c58293f3e844ef
|
|
| BLAKE2b-256 |
989eb187e58a4556769c50ff963215b4ec90559a67843a4e1ad883fc7a17db52
|
File details
Details for the file fd_daas_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fd_daas_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 361.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5b679b47c7445fa96e6c6992364d24d7ffcb4a4dc4104d2a41a64d509c2ddb2
|
|
| MD5 |
6b6ca07895299616a6530f8ffd3ec951
|
|
| BLAKE2b-256 |
fef2b86df6c654a81c0e8b7e15cf970e0758e5909afdfa5e61a78d3c4a37ab34
|