Skip to main content
Glama
suanova
by suanova

stock-mcp

An MCP server that exposes DSA's 问股 (Agent Chat / ask-stock) capability as a cross-client tool.

What it does

Claude Desktop / Code / Cursor
         |
         |  Streamable HTTP (MCP)
         v
    stock-mcp  (this server)
         |
         |  HTTP (REST)
         v
  DSA FastAPI API
         |
    /api/v1/agent/chat
    /api/v1/agent/skills
  • ask_stock — send a natural-language stock question, get the Agent Chat answer back.

  • list_agent_skills — list available strategy skills for ask_stock.

Related MCP server: OpenFinClaw CLI

Prerequisites

  • Python 3.11+

  • DSA API server running and reachable (e.g. python main.py --serve-only inside the daily_stock_analysis repo, default http://127.0.0.1:8000).

Install

cd stock-mcp
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

Or install from requirements.txt:

pip install -r requirements-dev.txt

Run

# With defaults (DSA on 127.0.0.1:8000, no auth)
python -m stock_mcp

# Or via the installed console script
dsa-mcp-server

# With env overrides
DSA_API_BASE_URL=http://127.0.0.1:8000 DSA_API_AUTH_ENABLED=true DSA_API_PASSWORD=xxx python -m stock_mcp

Environment variables

stock-mcp reads .env from the working directory automatically, or you can export variables directly.

Variable

Default

Description

DSA_API_BASE_URL

http://127.0.0.1:8000

DSA FastAPI base URL

DSA_MCP_HOST

127.0.0.1

MCP HTTP bind host

DSA_MCP_PORT

8765

MCP HTTP bind port

DSA_MCP_PATH

/mcp

MCP endpoint path

DSA_API_AUTH_ENABLED

false

Whether DSA requires admin auth

DSA_API_PASSWORD

(empty)

DSA admin password (required when auth enabled)

DSA_API_TIMEOUT

30

Timeout for short calls (skills, login)

DSA_API_REQUEST_TIMEOUT

600

Timeout for ask_stock (agent chat)

DSA_MCP_ALLOWED_HOSTS

(empty)

Comma-separated extra Host header values allowed by DNS rebinding protection. Localhost entries are always included.

DSA_MCP_LOG_FILE

(empty)

If set, also write logs to this file path. Parent directories are created automatically.

DSA_MCP_LOG_MAX_BYTES

10485760

Rotate the log file when it reaches this size in bytes. 0 disables rotation.

DSA_MCP_LOG_BACKUP_COUNT

3

Number of rotated log files to keep.

Logging to a file

By default logs go to stderr only. To also persist them to a file with rotation:

export DSA_MCP_LOG_FILE=/var/log/stock-mcp/server.log
export DSA_MCP_LOG_LEVEL=INFO
python -m stock_mcp

Logs are then written to both stderr and DSA_MCP_LOG_FILE. Set DSA_MCP_LOG_MAX_BYTES=0 for a single ever-growing file.

Client configuration

Claude Desktop

Add to your claude_desktop_config.json (macOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "dsa-ask-stock": {
      "url": "http://127.0.0.1:8765/mcp",
      "env": {
        "DSA_API_BASE_URL": "http://127.0.0.1:8000",
        "DSA_API_AUTH_ENABLED": "false"
      }
    }
  }
}

Claude Code

claude mcp add dsa-ask-stock http://127.0.0.1:8765/mcp

Cursor

In Settings → MCP, add a Streamable HTTP server pointing to http://127.0.0.1:8765/mcp.

Auth notes

If DSA is running with ADMIN_AUTH_ENABLED=true:

export DSA_API_AUTH_ENABLED=true
export DSA_API_PASSWORD="your-dsa-admin-password"
python -m stock_mcp

The server logs in once at startup via POST /api/v1/auth/login and reuses the session cookie across tool calls.

Backend limitation

If DSA's AGENT_BACKEND is set to codex_app_server, ask_stock returns a clear error: Codex requires the streaming Chat interface (/chat/stream), which is not exposed over MCP in this tool. Switch AGENT_BACKEND to litellm (or auto) for MCP compatibility, or use the DSA web Chat page directly.

Security

The server binds to 127.0.0.1 by default. When binding to a public interface (0.0.0.0), the MCP SDK enforces DNS rebinding protection — only Host header values in the allowed list are accepted (see DSA_MCP_ALLOWED_HOSTS). Keep the allowed list as narrow as your use case requires.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • 7-factor stock scoring MCP server. US/HK/CN, 74 stocks. Free + Premium (USDC/Base). x402 ready.

  • MCP server for AI dialogue using various LLM models via AceDataCloud

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/suanova/stock-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server