Bluesky股票情感分析MCP服务

一款运行在Cloudflare Workers上的MCP服务,通过Bluesky搜索近期股票相关帖子,并利用Workers AI进行情感分析,为MCP客户端返回包含多空比例与置信度的情绪摘要,适用于股票情绪监测与市场舆情分析。

  • by Tar-ive
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Tar-ive/mcp-bluesky-stock-sentiment

使用说明

MCP Bluesky Stock Sentiment

An MCP server on Cloudflare Workers that pulls recent stock-related posts from Bluesky, scores their sentiment with Workers AI, and returns a concise summary to any MCP-compatible client.

🏅 3rd place at World Wild Web MCP Server Hack Night — built with Cloudflare and Fiberplane. (announcement)

How it works

  1. An MCP client (e.g. Claude Desktop) calls the analyze_stock_posts tool over HTTP at /mcp.
  2. The Worker (Hono + mcp-lite) searches Bluesky's public API for recent posts.
  3. Posts are filtered down to stock-related content with keyword/regex heuristics.
  4. Each post is classified by Workers AI (@cf/huggingface/distilbert-sst-2-int8).
  5. The tool returns totals, percentages, average confidence, and per-post details.

The Mermaid source for the diagram lives in docs/architecture.md.

Quickstart

Prerequisites: Node 18+, a Cloudflare account, and Wrangler auth (npx wrangler login).

npm install
npm run dev          # http://localhost:8787
npm run deploy       # deploy to Cloudflare Workers
npm run cf-typegen   # optional: regenerate Worker binding types

Workers AI is already bound in wrangler.jsonc (ai.binding = "AI").

Connecting a client

Environment MCP endpoint
Local http://localhost:8787/mcp
Production https://<your-subdomain>.workers.dev/mcp

The server registers as bluesky-stock-sentiment. Example prompt:

Use the analyze_stock_posts tool to get recent stock posts from Bluesky and analyze their sentiment.

Tool reference

analyze_stock_posts

Input Type Default Description
count number (1–10) 2 Number of recent stock posts to analyze

Returns a text summary: positive/negative counts and percentages, average confidence, and for each post the label, confidence, author, likes, reposts, timestamp, and URI.

HTTP endpoints

Method Path Description
GET / Service metadata (name, version, description, tools)
ALL /mcp MCP over HTTP (mcp-lite)

Customizing

What Where Notes
Sentiment model src/lib/sentiment.ts Swap for any Workers AI text-classification model
Stock keywords src/lib/stock-filter.ts Tune what counts as a "stock post"
Bluesky search src/lib/bluesky-api.ts Public unauthenticated search with de-duplication
Firehose (reference) src/lib/firehose.ts Real-time WebSocket collector; not wired into the Worker

Project layout

src/
├── index.ts          # Hono app, MCP server wiring, routes
├── mcp/tools.ts      # analyze_stock_posts registration + handler
└── lib/              # sentiment, stock filter, Bluesky search, firehose
docs/
├── architecture.md   # Mermaid architecture diagram
└── images/           # README screenshots

Notes

  • Bluesky's public search API may rate-limit or change; results vary over time.
  • Sentiment output is a toy signal, not financial advice.

Built at

License

Provided as-is; add a license if you plan to distribute.