Searches posts on a Discourse forum.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add discourse --env DISCOURSE_API_URL='<DISCOURSE_API_URL>' --env DISCOURSE_API_KEY='<DISCOURSE_API_KEY>' --env DISCOURSE_API_USERNAME='<DISCOURSE_API_USERNAME>' -- docker run -i --rm -e 'DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}' -e 'DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}' -e 'DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}' ashdev/discourse-mcp-server~/.codex/config.toml
[mcp_servers.discourse]
command = "docker"
args = ["run", "-i", "--rm", "-e", "DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}", "-e", "DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}", "-e", "DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}", "ashdev/discourse-mcp-server"]
env = { DISCOURSE_API_URL = "<DISCOURSE_API_URL>", DISCOURSE_API_KEY = "<DISCOURSE_API_KEY>", DISCOURSE_API_USERNAME = "<DISCOURSE_API_USERNAME>" }
# codex mcp add discourse --env DISCOURSE_API_URL='<DISCOURSE_API_URL>' --env DISCOURSE_API_KEY='<DISCOURSE_API_KEY>' --env DISCOURSE_API_USERNAME='<DISCOURSE_API_USERNAME>' -- docker run -i --rm -e 'DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}' -e 'DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}' -e 'DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}' ashdev/discourse-mcp-server~/.cursor/mcp.json
{
"mcpServers": {
"discourse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}",
"-e",
"DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}",
"-e",
"DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}",
"ashdev/discourse-mcp-server"
],
"env": {
"DISCOURSE_API_URL": "<DISCOURSE_API_URL>",
"DISCOURSE_API_KEY": "<DISCOURSE_API_KEY>",
"DISCOURSE_API_USERNAME": "<DISCOURSE_API_USERNAME>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"discourse": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}",
"-e",
"DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}",
"-e",
"DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}",
"ashdev/discourse-mcp-server"
],
"env": {
"DISCOURSE_API_URL": "<DISCOURSE_API_URL>",
"DISCOURSE_API_KEY": "<DISCOURSE_API_KEY>",
"DISCOURSE_API_USERNAME": "<DISCOURSE_API_USERNAME>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"discourse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}",
"-e",
"DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}",
"-e",
"DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}",
"ashdev/discourse-mcp-server"
],
"env": {
"DISCOURSE_API_URL": "<DISCOURSE_API_URL>",
"DISCOURSE_API_KEY": "<DISCOURSE_API_KEY>",
"DISCOURSE_API_USERNAME": "<DISCOURSE_API_USERNAME>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"discourse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}",
"-e",
"DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}",
"-e",
"DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}",
"ashdev/discourse-mcp-server"
],
"env": {
"DISCOURSE_API_URL": "<DISCOURSE_API_URL>",
"DISCOURSE_API_KEY": "<DISCOURSE_API_KEY>",
"DISCOURSE_API_USERNAME": "<DISCOURSE_API_USERNAME>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"discourse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DISCOURSE_API_URL={{config.DISCOURSE_API_URL}}",
"-e",
"DISCOURSE_API_KEY={{config.DISCOURSE_API_KEY}}",
"-e",
"DISCOURSE_API_USERNAME={{config.DISCOURSE_API_USERNAME}}",
"ashdev/discourse-mcp-server"
],
"env": {
"DISCOURSE_API_URL": "<DISCOURSE_API_URL>",
"DISCOURSE_API_KEY": "<DISCOURSE_API_KEY>",
"DISCOURSE_API_USERNAME": "<DISCOURSE_API_USERNAME>"
}
}
}
}Environment variables
DISCOURSE_API_URLDISCOURSE_API_KEYDISCOURSE_API_USERNAME
Replace the placeholders with your own credentials and keep them out of version control.