https://github.com/briangershon/bluesky-daily-mcp
An MCP Server to help you surface the most interesting or novel conversations from your Bluesky follows daily.
https://github.com/briangershon/bluesky-daily-mcp
bluesky mcp-server typescript
Last synced: 21 days ago
JSON representation
An MCP Server to help you surface the most interesting or novel conversations from your Bluesky follows daily.
- Host: GitHub
- URL: https://github.com/briangershon/bluesky-daily-mcp
- Owner: briangershon
- License: mit
- Created: 2025-03-16T18:05:14.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2025-04-08T04:19:58.000Z (21 days ago)
- Last Synced: 2025-04-08T04:24:15.945Z (21 days ago)
- Topics: bluesky, mcp-server, typescript
- Language: TypeScript
- Homepage:
- Size: 47.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bluesky-daily-mcp
An MCP Server to help you surface the most interesting topics from your Bluesky follows daily.
## Features
- a tool to retrieve all posts from your follows for a given day
- sample prompts for analyzing posts
- caches the posts for a given dayPosts are retrieved via [`bsky-tldr`](https://www.npmjs.com/package/bsky-tldr) npm package which normalizes them into this format for easy consumption by LLM:
```json
[
{
"uri": "at://did:plc:kft6lu4trxowqmter2b6vg6z/app.bsky.feed.post/3lh4unyelgs2i",
"content": "There are some missing details in this report claiming to have leaked the system prompt - most notably they don't clarify if they got the system prompt for DeepSeek v3 or DeepSeek R1 (I'm interred in R1) lab.wallarm.com/jailbreaking...",
"createdAt": "2025-02-01T15:53:09.612Z",
"isRepost": false,
"links": ["https://lab.wallarm.com/jailbreaking-generative-ai/"]
}
]
```
## Limitations
- This retrieves all posts from your follows for a given day. This will become large and subsequently you'll lose posts that are truncated by the MCP Client or the LLM's context window. Will need additional strategies to handle this.
## Installation
Install this MCP Server with your MCP Client, such as Claude Desktop.
Here are the steps:
👉 1. **Configure.** For Claude Desktop, you can install this MCP Server by adding the following to your `~/Library/Application\ Support/Claude/claude_desktop_config.json` (on MacOS):
**Option A: Run from NPM package**
NOTE: `PATH` pointing to the absolute path to the `/bin` folder where `npx` is running is only needed if you use `NVM` to manage your Node.js versions. Without that, you may see a mysterious "Header not set" error. Find path via `which npx` command.
```json
{
"mcpServers": [
"bluesky-daily-mcp": {
"command": "npx",
"args": ["-y", "bluesky-daily-mcp"],
"env": {
"PATH": "/absolute/path/to/npx/bin:/usr/bin:/bin",
"BLUESKY_HANDLE": "",
"BLUESKY_APP_PASSWORD": "",
"TIMEZONE_OFFSET": "-8",
"REQUEST_TIMEOUT_MS": "120000"
}
}
]
}
```**Option B: Clone repo and run it from source**
Build the MCP Server first in the cloned repo:
```bash
npm install
npm run build
```NOTE: the `/absolute/path` is needed to `node` if you use `NVM` to manage your Node.js versions. Without that, you may see a mysterious "Header not set" error. Find path via `which node` command.
```json
{
"mcpServers": [
"bluesky-daily-mcp": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/this/dist/index.js"],
"env": {
"BLUESKY_HANDLE": "",
"BLUESKY_APP_PASSWORD": "",
"TIMEZONE_OFFSET": "-8",
"REQUEST_TIMEOUT_MS": "120000"
}
}
]
}
```What are these env variables?
- `BLUESKY_HANDLE` is your Bluesky handle without the @ sign, e.g. `your_handle.bsky.social` or `customdomain.com`.
- `BLUESKY_APP_PASSWORD` is a Bluesky app password, which you can generate from the [Bluesky App Passwords Settings page](https://bsky.app/settings/app-passwords).
- `TIMEZONE_OFFSET` is the timezone offset from UTC in hours. For example, `-8` for PST, `+8` for CST. This helps define what a "day" is for you, so it's not hard-coded to UTC.
- `REQUEST_TIMEOUT_MS` is the max timeout for the request that retrieves the posts to run. Without this, you have a default of ~60 seconds (60000 ms). Recommend setting this to 2 minutes (120000 ms).👉 2. **Restart Claude Desktop to load up new MCP Server.**
## Try it out
- Fire up Claude Desktop and start a new conversation
- Type in "Retrieve Bluesky posts from yesterday" or "Retrieve Bluesky posts from April 2nd" (or whatever date you want)
## Help for Contributors
### Running locally for development
Setup your local `.env` file with:
```bash
BLUESKY_HANDLE=
BLUESKY_APP_PASSWORD=
TIMEZONE_OFFSET=
```Debug with MCP Inspector:
````bash
npm install
npm run build && npx @modelcontextprotocol/inspector -e BLUESKY_HANDLE=XXX -e BLUESKY_APP_PASSWORD=XXX -e TIMEZONE_OFFSET=XXX node dist/index.js
```Debug by viewing logs
```bash
tail -n 20 -F ~/Library/Logs/Claude/mcp-server-bluesky-daily-mcp.log
````### Run tests or coverage reports
```bash
npm test
npm run coverage
```### Manually retrieve posts
If you want to make sure the post retrieval code is running ok with your .env, run:
```bash
npm run retrieve-posts
```## Steps for publishing package to NPM
After merging latest code to main branch:
1. Locally, `git checkout main && git pull`
2. `npm version patch` # or minor, or major
3. `git push --follow-tags`
4. A GitHub release is automatically written and published