A side-by-side look at the Fmeca and Discourse MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Fmeca for communication work as a local process; choose Discourse MCP for communication as a local process. You can also run both side by side in one mcpServers block.
session.open, append, state.get.discourse_select_site, discourse_search, discourse_filter_topics.Rows where the two servers differ are marked.
| Spec | F Fmeca | |
|---|---|---|
| Category | Communication | Communication |
| Quality signal | 56/100 · Good | 86/100 · Excellent |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | API key required |
| Pricing | Free | Free |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Verified |
| GitHub stars | 0 | 77 |
| Directory activity | 0 views 0 installs 0 upvotes | 4 views 0 installs 0 upvotes |
| Tools | 12 | 16 |
| Full listing | View Fmeca | View Discourse MCP |
session.openStart or resume a session; optionally selects the matrix strategy and records analysis metadata (`title`, `level`, `aspect`, `scope_paths`, `parent`), all fixed for the session's life.appendAdd a failure mode (`add_failure_mode`), add a mitigation (`add_mitigation`), or re-score an existing failure mode (`rescore`). `set_mitigation_status` moves a mitigation through planned, implemented, verified or abandoned (verified needs evidence other than a note). `set_failure_mode_disposition`…state.getRead-only projection of the session: every failure mode with its computed criticality, residual, and standing.risk.nextThe highest-criticality unmitigated failure mode — what to address next.readiness.assessThe readiness gate: is every High/Medium residual reduced and every blocker cleared?report.exportThe full FMECA table for the session.scoring.catalogThe fixed observation vocabulary for a strategy — the ids the caller draws from.analyzeStateless one-shot: hand over an entire analysis, get back the entire computed report. No session, no persistence.session.listEvery analysis in the state dir (the project's `.fmeca/` when there is one), with its metadata, standing counts (excluded failure modes are counted separately), `ready`, `ready_verified` and resolution counts. Filters: `level`, `aspect`, `parent`. A log that fails to replay is listed with its error.vetAdvisory: asks Jev (via OpenRouter, needs `OPENROUTER_API_KEY`) whether observations, mitigations, coverage and readiness hold up, and returns probabilities beside the deterministic gate. Never writes or changes a score; without a key it reports `vet_unavailable`.actions.suggestRead-only. Reads a session (or an inline analysis) under a [risk policy](docs/policies.md) and suggests actions: per-failure-mode risk bands, evidence confidence, dispositions, tagged actions and a sign-off verdict. Never changes the analysis or the log.policy.listRead-only. The built-in policy presets and the project's `.fmeca/policies/` files, each with its name, hash and class. A project file that does not load is listed with its `error`.discourse_select_siteValidate and select a Discourse site. Returns JSON with site URL and title.discourse_searchSearch site content. Returns JSON object with results array of matching topics (id, slug, title) and meta (total, has_more).discourse_filter_topicsDiscover topics through a filtered, top, or hot view. Filtered uses Discourse TopicsFilter syntax; top uses Discourse's authoritative top score and defaults to weekly; hot is defined exactly as daily top (not sentiment, controversy, or real-time velocity). Returns a uniform rich topic projection and truthful pagination metadata.discourse_read_topicRead topic metadata and posts. Large post limits can require multiple upstream requests. For moderation queues, prefer reviewable list/detail evidence instead of fanning this tool out across flagged topics.discourse_read_postRead a specific post. Returns JSON with id, topic_id, post_number, username, created_at, and raw content.discourse_read_topic_postsRead exact, earliest, latest, around-post, or username-filtered topic evidence. Selection is bounded to 50 posts and reports the visible stream size without claiming the entire topic was loaded.discourse_search_postsSearch post-level evidence with Discourse query syntax. Unlike discourse_search, this preserves matched posts, highlighted blurbs, authors, topics, categories, and truthful bounded continuation. This is keyword search, not Discourse AI semantic search.discourse_get_userGet user info. Returns JSON with id, username, name, trust_level, created_at, bio, admin, and moderator.discourse_list_user_postsGet paginated list of user posts/replies. Returns JSON object with posts array (id, topic_id, post_number, slug, title, created_at, excerpt, category_id) and meta (page, limit, has_more).discourse_list_usersList users via admin API. Requires admin API key. Returns ~100 users per page (Discourse's fixed page size). Returns JSON with users array and pagination meta.discourse_get_chat_messagesGet messages from a chat channel. Returns JSON object with channel_id, messages array (id, username, created_at, message, edited, thread_id, in_reply_to_id), and meta.discourse_get_draftRetrieve a specific draft by key. Returns JSON with draft_key, sequence, and parsed data (title, reply, categoryId, tags, action).Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"fmeca": {
"command": "npx",
"args": [
"-y",
"@matthew-cochran/fmeca"
]
}
}
}
{
"mcpServers": {
"discourse-discourse-mcp": {
"command": "npx",
"args": [
"-y",
"@discourse/mcp@latest"
]
}
}
}