doobidoo/mcp-memory-service - Open Source PR Review Scorecard

Open-source persistent memory for AI agent pipelines (LangGraph, CrewAI, AutoGen) and Claude. REST API + knowledge graph + autonomous consolidation.

C-Rank Grade: A (Welcoming) - 67/100

External PR Merge Rate: 57%

Response Time: 4h

First Timer Success: 55%

Frequently Asked Questions

Is doobidoo/mcp-memory-service welcoming to first-time open-source contributors?

doobidoo/mcp-memory-service has a recorded first-timer success rate of 54.5%. Repositories ranked A typically provide actionable feedback during code reviews and actively nurture new community contributors.

How fast can I expect code review feedback on my pull request?

Maintainers in doobidoo/mcp-memory-service respond to incoming external pull requests in approximately 3.6 hours on average. Keeping PRs focused on single tasks and ensuring tests pass helps maintainers review faster.

What does the 66.9 C-Rank™ score (A Tier) represent?

The C-Rank™ system evaluates GitHub projects on a 0–100 scale using real data: PR merge rates, review turnaround time, active maintainer presence, and first-time contributor success. A score of 66.9 places doobidoo/mcp-memory-service in the A tier.

What is the external contributor pull request merge rate for doobidoo/mcp-memory-service?

The external contributor pull request merge rate for doobidoo/mcp-memory-service is 57.3%, based on public PR activity from non-core contributors.

Are there Good First Issues available in doobidoo/mcp-memory-service?

doobidoo/mcp-memory-service currently has 3 active issue(s) tagged with beginner-friendly labels like "good first issue", "beginner", or "up-for-grabs".

doobidoo
doobidoo/mcp-memory-serviceA•Welcoming2.0k
GitHub
Back to Explorer
doobidoo

doobidoo/mcp-memory-service

2,004
Active (30d)A•Welcoming(67/100)Python

Open-source persistent memory for AI agent pipelines (LangGraph, CrewAI, AutoGen) and Claude. REST API + knowledge graph + autonomous consolidation.

GitHub
Compare••
Jump to:

AI Maintainer Review Guidelines

Review Persona

Active Open-Source Maintainer

Warmth Score
7.8/10
Patience Score
8.2/10
Nitpick Rate
20%

Active maintainer team in doobidoo/mcp-memory-service welcoming community pull requests and bug fixes.

Top PR Submission Do's

  • •Ensure code complies with repository style conventions
  • •Keep PRs focused and well-documented

Top PR Friction Pitfalls (Don'ts)

  • •Do not submit unlinked PRs without context
  • •Do not break existing automated test suites
Response Velocity
3 hours
Standard maintainer review cycle

Average Response Latency

Tracks hours until a maintainer leaves a review, comment, or PR response.

Merge Efficiency
57.3%
Moderate PR acceptance rate

External Acceptance Rate

Percentage of community pull requests successfully merged into main.

First-Timer Success
54.5%
Strong first-timer PR acceptance rate

First PR Conversion

Rate at which developers submitting their first repository PR succeed.

Active Maintainers
20 core
Highly collaborative maintainer core
Diagnostic Health HUD
57.3%
Merge Gauge
54.5%
1st-Timer
Community Vibe67/100

Embed C-Rank Badge

Show contributors that your repository actively reviews and merges external pull requests.

GetMerged C-Rank badge for doobidoo/mcp-memory-service
[![GetMerged C-Rank](https://getmerged.abhishekco.de/api/badge/doobidoo/mcp-memory-service)](https://getmerged.abhishekco.de/doobidoo/mcp-memory-service?utm_source=github&utm_medium=badge)

Active Good First Issues (5)

View on GitHub

What happens Every pull path in HybridMemoryStorage writes a memory fetched from the secondary with a bare self.primary.store(cf_memory): the drift path, the hash-diff pull, the update path and the full scan (storage/hybrid.py, the primary.store( calls around lines 950, 1315, 1391 and 1495 on main). Two arguments are missing: skip_semantic_dedup=True: the memory already exists, it was deduplicated when it was first written. Running semantic dedup again on the receiving device rejects it whenever that device happens to hold something similar, and the device then never gets that hash. The log shows Failed to sync memory <hash>: Duplicate content detected (semantically similar to <other hash>), and the next sync tries and fails again. store=: the memory lands in the default store whatever store it came from, so multi-store partitions (#1395) do not survive a sync. How I ran into it Startup sync on a hybrid VM on 2026-10-11 logged three such rejections in its first 1,000 memories, among

📅 Opened Oct 11, 2026💬 3 comments
Quality: 90/100Contribute

What happens _sync_memories_from_cloudflare (storage/hybrid.py) has two branches. When the secondary holds fewer or equal memories than the primary, it diffs hashes and pulls exactly the missing ones (#1255). When the secondary holds more, it falls through to the full scan, which pages Cloudflare newest-first in batches of up to 500 and stops after HYBRID_MAX_EMPTY_BATCHES (default 20) batches without a new memory. With ~8,760 memories that is up to ~18-35 batches. If the missing memories are old, the scan gives up before it reaches them. They are never pulled, by the startup sync or by a forced pull, no matter how often either runs. How I ran into it A VM running hybrid against the same D1 as my Mac was missing 142 memories that D1 had live, 136 of them created 2025-07-25 (an import that kept its timestamps). Local=8606, Cloudflare=8747, so the scan branch ran. /api/sync/force on the VM pulled 13. The 136 old ones sat behind thousands of memories the VM already had. Setting MCP_HYBRID

📅 Opened Oct 11, 2026💬 3 comments
Quality: 90/100Contribute

#1304 landed in #1470, #1471, #1474, #1476 and #1480. The client side is documented well: docs/mastery/configuration-guide.md, docs/guides/STORAGE_BACKENDS.md and docs/mastery/troubleshooting.md cover every MCP_HYBRID_SECONDARY_* variable, the auth styles and the model check. The other half of the topology is missing. Gaps on main: No hub-side setup. Nothing says how to run the hub: which storage backend it should use, that it must not run hybrid itself (the hub is terminal), which API key scope the clients need (read for GET /api/health/model, write for store and delete), and whether MCP_HYBRID_SYNC_OWNER still matters on a client whose secondary is http. Multi-client semantics. With three clients on one hub: does a delete on client A reach client B, how does a client that was offline for a day catch up, and what happens when two clients store the same content? The docs say "background sync" and stop there. Re-embedding the hub. Troubleshooting says a model change needs a hub re-embe

📅 Opened Oct 8, 2026💬 4 comments
Quality: 100/100Contribute

Since #1472 the Analytics graph has two controls that both filter on connection counts: Min Connections and Min Degree. They count different things, and nothing in the UI says so. Neither control has a tooltip, and nothing in docs/ or the wiki covers them. What each control actually does Min Connections (graphMinConnectionsSelect) runs on the server. Changing it reloads /analytics/graph-visualization?min_connections=N. The SQL in storage/mixins/retrieve.py (get_graph_visualization_data) counts each memory's distinct target memories across the whole database, has_entity edges excluded, and keeps the ones with >= N. It then takes the top limit by that count. This decides which nodes get loaded at all. Min Degree (graphDegreeSlider) runs in the browser, in _filterGraphData() in app.js. It counts distinct neighbours in the graph as drawn: only edges between loaded nodes, only visible relationship types, and a mutual A<->B pair counts once. It hides nodes below the value and makes no reques

📅 Opened Oct 7, 2026💬 1 comment
Quality: 90/100Contribute

Two small gaps in MemoryConsolidator._store_associations_in_graph_table (consolidation/consolidator.py, L1005-1110): 1. The similarity guard never runs. infer_relationship_type accepts similarity= and suppresses typed labels when it is below min_typed_similarity (guard 1 from #541). The consolidator calls it without that argument, so similarity is None and the guard is always skipped. The value is right there: association.similarity_score is passed to store_association a few lines further down. 2. The confidence is thrown away. The inferred confidence decides the label and whether a contradicts pair gets superseded (confidence >= 0.75), but it is never written to the edge. graph_storage.store_association already persists the metadata dict as JSON, so nothing downstream can tell a 0.51 supports edge from a 0.9 one, and nobody can measure later how well the scores are calibrated. What to change Pass similarity=association.similarity_score to infer_relationship_type. Add "relationship_co

📅 Opened Oct 5, 2026💬 2 comments
Quality: 90/100Contribute
Looking for more Python beginner tasks?Explore Python GFI

Contributor Community Vibe Feedback

Rate what actually matters after opening a pull request here.

Have you contributed to this repo?

Rate your first-hand PR experience (review speed, maintainer responsiveness, and onboarding ease) to help other contributors.

3 ratings required
Maintainer helpfulness
Review speed
Beginner friendliness

Contributor Compatibility & Review Speed Analysis for doobidoo/mcp-memory-service

When evaluating whether to contribute to doobidoo/mcp-memory-service, response velocity and maintainer engagement are crucial. GetMerged continuously tracks pull request trajectories, first-comment latency, and code review rounds to help developers avoid submitting pull requests to backlogged repositories.

Currently, maintainers of doobidoo/mcp-memory-service acknowledge new external contributions in approximately 3 hours. Out of all submitted pull requests from non-core authors in the last 180-day window, 57.3% were successfully merged into the primary branch.

Frequently Asked Questions - Contributing to doobidoo/mcp-memory-service

01

Is doobidoo/mcp-memory-service welcoming to first-time open-source contributors?

doobidoo/mcp-memory-service has a recorded first-timer success rate of 54.5%. Repositories ranked Welcoming typically provide actionable feedback during code reviews and actively nurture new community contributors.

02

How fast can I expect code review feedback on my pull request?

The initial maintainer response time averages ~3 hours. Keeping PRs scoped to single concerns and ensuring CI checks succeed will optimize review turnaround.

03

What does the 66.9 C-Rank™ score represent?

The C-Rank™ index scores repositories on a 0 to 100 scale using an objective formula: external PR merge rates, initial response speed, active maintainer count, and first-time contributor retention. A score of 66.9 places doobidoo/mcp-memory-service in the Welcoming tier.

04

What is the external contributor pull request merge rate for doobidoo/mcp-memory-service?

The external pull request merge rate is 57.3%. GetMerged isolates non-core community contributions so external developers get an accurate benchmark of PR acceptance probability.

05

Are there beginner Good First Issues open in doobidoo/mcp-memory-service?

Yes, doobidoo/mcp-memory-service currently has 3 active issue(s) tagged with beginner-friendly labels. You can inspect these directly from the repository issues tab.

GetMerged C-Rank™ Indexing Standard

All metrics displayed for doobidoo/mcp-memory-service are automatically retrieved via the public GitHub API and recalculated daily. Insider pull requests submitted by repository owners or organization members are excluded from merge rate calculations to preserve objective external contributor statistics.