## devvit-mcp

A companion MCP server for writing applications on Reddit's developer platform.

## Installation

Add the following to your `mcp.json` for the editor or LLM of choice.

```json
{
  "mcpServers": {
    "devvit-mcp": {
      "command": "npx",
      "args": ["-y", "@devvit/mcp"]
    }
  }
}
```

## Opting Out Of Telemetry

```json
{
  "mcpServers": {
    "devvit-mcp": {
      "command": "npx",
      "args": ["-y", "@devvit/mcp"],
      "env": {
        "DEVVIT_DISABLE_METRICS": "true"
      }
    }
  }
}
```

## Developing on the MCP Server

```sh
git clone git@github.com:reddit/devvit-mcp.git

cd devvit-mcp

nvm use

npm install

npm run dev
```

If you want to test your MCP server inside of other projects. Pass in the entire path to your node runtime and the location of `/dist/index.js` on your machine.

- Node path: `which node`
- Dist: `pwd` from the root of your `devvit-mcp` + `/dist/index.js`

```ts
{
  "mcpServers": {
    "devvit-mcp": {
      "command": "/Users/marcus.wood/.nvm/versions/node/v22.13.0/bin/node",
      "args": ["/Users/marcus.wood/open-source/devvit-mcp/dist/index.js"]
    }
  }
}
```

## MCP Gotchas

- Never put a `console.log` in the hot path of your app if you're trying to debug. You'll see weird error messages like `Unexpected token 'a', " at Anthrop"... is not valid JSON`. We've shimmed `logger` to automatically handle this conversion for you.
- Only log console.error in your MCP when running through MCP.

### Debugging

- Using `npm run dev`, going to tools, listing them out, and triggering is the best experience.
- To test this live with logs, use [Claude desktop](https://modelcontextprotocol.io/quickstart/user) and connecting the MCP there. They have log files that report errors on your machine. You can view them by opening in VSCode or running `tail` commands.

- If you see something like this:

```
Error: Server does not support logging (required for notifications/message)
    at Server.assertNotificationCapability
```

You need to add the capability to your `new MCPServer`. [Use this permalink](https://github.com/modelcontextprotocol/typescript-sdk/blob/1909bbcc671b00431579ea15c7713082406b1005/src/server/index.ts#L146) to know what key you should add.

## Versioning

This package uses automated versioning managed by CI/CD. The version in `package.json` is a placeholder and will be automatically updated during the release process. Check git tags for the actual released versions.

## Credits

Huge thanks to Arabold for open sourcing [docs-mcp-server](https://github.com/arabold/docs-mcp-server). Portions of this code is heavily inspired by this library. Please use it if you need other docs servers!
