Parse Stack Next MCP sunucusu
Commit 11 Kas 2026Parse Server için ORM, vektör arama ve yapay zeka ajanları için MCP dağıtım yetenekleri sunan bir Ruby SDK.
Ayrıca bilinen adı neurosynq/parse-stack-next
- Yıldızlar
- 1
- Araçlar
- —
- İndirmeler, 30 gün
- —
- En son sürüm
- —
- Son commit
- 11 Kas 2026
- Lisans
- MIT
Parse Stack Next MCP nedir?
Parse Stack Next bir MCP sunucusudur. Parse Server için ORM, vektör arama ve yapay zeka ajanları için MCP dağıtım yetenekleri sunan bir Ruby SDK.
Özet, projenin README dosyasından oluşturuldu
Parse Stack Next MCP sunucusu hakkında
Parse Server ile yapay zeka odaklı uygulamalar geliştiren geliştiriciler, verileri bir nesne-ilişkisel eşleyici (ORM) ve gelişmiş arama yetenekleri aracılığıyla yönetmek için bu Ruby SDK'yı kullanabilirler. Bu SDK; düşük seviyeli bir API istemcisi, bir sorgu motoru ve bir Cloud Code Webhooks rack uygulamasını entegre eden kapsamlı bir istemci olarak çalışır. Araç, yerel veya uzak dağıtım için tasarlanmıştır ve geliştiricilerin belirli veri alt kümelerini kontrollü ajan alanları aracılığıyla yapay zeka ajanlarına açmasına olanak tanır.
Bu SDK, Voyage gibi sağlayıcıları kullanarak vektör arama ve semantik arama için yerleşik destek sunmasıyla öne çıkar. Bellek kullanımını azaltmak için isteğe bağlı kuantizasyon içeren Atlas tanımları gibi vektör indeksi tanımlarını yönetmek için özelleşmiş araçlar içerir. Yapay zeka asistanlarını dağıtanlar için sunucu, kullanıcı kapsamlı (user-scoped) veya ana analitik (master-analytics) uç noktaları gibi farklı dağıtım modellerini destekler. Ayrıca, bağlamsallaştırılmış chunk gömmeleri (embeddings) ve yeniden sıralama (reranking) içeren hibrit arama gibi karmaşık görevleri yöneterek, yapay zeka ajanlarının verilerle güvenli ve kapsamlı arayüzler üzerinden etkileşime girmesini sağlar.
Neler yapabilirsiniz
- 1Yapay zeka ajanı veri erişimini kısıtlayınVeri gizliliğini sağlamak için bir model içinde yapay zeka asistanının görebileceği veya sorgulayabileceği belirli alanları sınırlayın.
- 2Vektör indeksi belleğini optimize edinSkaler veya ikili kuantizasyon kullanarak vektör özelliklerinin bellek ayak izini azaltın.
- 3Kapsamlı MCP uç noktaları dağıtınKimlik ve kiracı (tenant) sınırlarını zorunlu kılan özel bir dağıtım modeli aracılığıyla oturum açmış uygulama kullanıcılarına hizmet verin.
Projenin README dosyasından alınmıştır. Her kullanım durumu, oradaki bir alıntı ile kontrol edilir.
Yapılandırma
ALLOW_INSECURE_BINDATLAS_URILLM_ENDPOINTLLM_MODELMONGO_BINDMONGO_HOST_PORTMONGO_ROOT_PASSWORDPARSE_API_KEYPARSE_APP_IDPARSE_HOST_PORTPARSE_MASTER_KEYPARSE_MCP_ENABLEDPARSE_STACK_LOGGINGPARSE_TEST_API_KEYPARSE_TEST_APP_IDPARSE_TEST_LIVE_QUERY_URLPARSE_TEST_MASTER_KEYPARSE_TEST_MONGO_URIPARSE_TEST_REDIS_URLPARSE_TEST_SERVER_URLPARSE_TEST_USE_DOCKERPSNEXT_PREFIXREDIS_HOST_PORT
| Ad | Açıklama | Sunucu |
|---|---|---|
| ALLOW_INSECURE_BIND | — | |
| ATLAS_URI | — | |
| LLM_ENDPOINT | — | |
| LLM_MODEL | — | |
| MONGO_BIND | — | |
| MONGO_HOST_PORT | — | |
| MONGO_ROOT_PASSWORD | — | |
| PARSE_API_KEY | — | |
| PARSE_APP_ID | — | |
| PARSE_HOST_PORT | — | |
| PARSE_MASTER_KEY | — | |
| PARSE_MCP_ENABLED | — | |
| PARSE_STACK_LOGGING | — | |
| PARSE_TEST_API_KEY | — | |
| PARSE_TEST_APP_ID | — | |
| PARSE_TEST_LIVE_QUERY_URL | — | |
| PARSE_TEST_MASTER_KEY | — | |
| PARSE_TEST_MONGO_URI | — | |
| PARSE_TEST_REDIS_URL | — | |
| PARSE_TEST_SERVER_URL | — | |
| PARSE_TEST_USE_DOCKER | — | |
| PSNEXT_PREFIX | — | |
| REDIS_HOST_PORT | — |
Otomatik kontroller
Çalıştırıldı 15 Kas 2026Tam rapor →Henüz doğrulanmadı. Bir sunucunun 80 puana, ciddi bir bulgu olmamasına ve kontrol edebilmemiz için yeterli veriye ihtiyacı vardır. Kontroller nasıl çalışır · Daha fazla puan için nelerin düzeltileceği
- Kaynak deposu bağlantılı ve erişilebilirneurosynq/parse-stack-next is public and reachablegithub.com/neurosynq/parse-stack-next ↗Geçti
- Paket, bu depoyu kaynağı olarak gösteriyorKontrol edilmedi
- Derleme kökeni (Sigstore onayı)Kontrol edilmedi
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit or release 2026-11-11github.com/neurosynq/parse-stack-next ↗Geçti
- OpenSSF ScorecardKontrol edilmedi
- Paket adı popüler bir pakete yakın değilKontrol edilmedi
- Pakette veya bağımlılıklarında kritik uyarı yokKontrol edilmedi
- Modele yönelik gizli talimat yok0 tool descriptions and the README read; no override phrases, credential paths or hidden charactersGeçti
- Yıkıcı araçlar etiketlenmişKontrol edilmedi
- Uzak uç nokta MCP el sıkışmasına yanıt veriyorKontrol edilmedi

Parse Stack Next
A full-featured Ruby client SDK for Parse Server. parse-stack-next is a Ruby client SDK, REST client, and Active Model ORM for Parse Server, combining a low-level API client, a query engine, an object-relational mapper (ORM), and a Cloud Code Webhooks rack application in a single gem.
What's new in 5.8
- 5.8.0: MCP deployments can expose less than their users can read.
Parse::Agent.new(fields: { Customer => %i[display_name timezone] })narrows a class'sagent_fieldsfor one agent, so a user-facing assistant and an analytics endpoint in one process expose different subsets of the same model. It applies to queries, includes, aggregation, search, schema output, exports, andsemantic_searchtext, andquery_class/count_objects/export_datanow refuse filtering or sorting on a hidden field. See CHANGELOG.md - 5.8.0: Supported deployment patterns.
MCPRackApp.user_scopedserves signed-in application users (no master-key fallback, server-pinned identity and tenant), andMCPRackApp.master_analyticsserves a shared read-only analytics endpoint that requires an operatorprincipal_resolver. Cancellations and approval replies are now bound to the session's owner, revocation intervals are documented, and orphaned subscriptions are reaped. See CHANGELOG.md - 5.8.0: Retrieval profiles for
semantic_search. Profiles you register on the server (for examplefast,balanced,precise; none ship by default) compose hybrid search and reranking with budgets, spend accounting, and observable fallback; each call emits a sanitizedparse.retrieval.searchevent, andParse::Retrieval::Benchmarkmeasures profiles on labeled cases. See CHANGELOG.md - 5.8.0: Vector index definitions from the model, with optional quantization.
Parse::VectorSearch::IndexDefinitiongenerates the Atlas definition from your declarations (filters and tenant field included) with preview and diff, andquantization: :scalar/:binaryon a:vectorproperty shrinks index memory without changing stored data. Contextualized embedding batches now adapt to provider size limits. See CHANGELOG.md - 5.8.0: Two silent mismatches fixed; check whether you need to act. Queries now send a property's declared
field:name exactly as declared (property :account_id, :string, field: :account_idqueriesaccount_id, no longeraccountId), so queries that matched nothing against underscore or mixed-case columns now return rows. Vector search, index auto-discovery, and drift checks now use the stored column of a multi-word:vectorproperty: an Atlas vector index whose path is the Ruby name (body_embedding) must be recreated on the stored column (bodyEmbedding). Drift detection reports the mismatch. See CHANGELOG.md
See CHANGELOG.md for the full 5.8 entry.
What's new in 5.7
- 5.7.6:
semantic_searchrespectsagent_fieldsfor chunk content. A class that embedded a field hidden by itsagent_fieldsallowlist returned that field's text as chunk content. Chunk text now comes only from embedded fields the agent may read; a hidden text source is refused with:field_deniedbefore the search runs. See CHANGELOG.md - 5.7.5: MongoDB 9.0 support. The test stack runs MongoDB 9 by default (
MONGO_VERSION=8selects the previous major), and use themongodriver 2.26 or newer for 9.0's overload handling. MongoDB 9.0 changes hownullcomparisons treat dotted paths through arrays; see the behavior notes in CHANGELOG.md - 5.7.5:
voyage-code-4and contextualized chunk embeddings. The Voyage provider acceptsvoyage-code-4,voyage-context-4, andvoyage-context-3.Voyage#embed_chunksembeds whole chunked documents so each chunk's vector carries its document's context. See CHANGELOG.md - 5.7.5: Voyage reranker and MCP 2025-11-25.
Parse::Retrieval::Reranker::Voyageaddsrerank-3andrerank-3-litereranking, including through the Atlas endpoint. The MCP server negotiates protocol2025-11-25and addscompletion/complete(class and field names scoped to the agent) andlogging/setLevel. Mongo-direct reads re-run queries MongoDB 9.0 kills mid-flight. See CHANGELOG.md - 5.7.0: Reserved, app-scoped cache keyspace.
Parse::Cache::Keyspacelays out response, identity, and role-cache keys on a shared backend (parse-stack:v1:<app_scope>[:<namespace>]:<family>[:T:<tenant>]:<rest>) and owns the glob patterns that clear them again, so key generation and eviction can no longer drift apart.app_scopeis a digest of the application id and server URL, so two apps sharing one Redis no longer collide. Enable withcache_keyspace: trueonParse.setup; left unset, behavior is unchanged. See CHANGELOG.md - 5.7.0:
clear_cache!stops falling back toFLUSHDB. Withcache_keyspace: true,Parse::Client#clear_cache!performs a scoped SCAN inside the client's own keys instead of flushing the whole database, which previously could destroy co-tenant data and dropfirst_or_create!create-locks on a shared Redis.flush_db!remains the explicit opt-in for a full flush. See CHANGELOG.md - 5.7.0: Response-cache auth separation enforced by construction.
Parse::Cache::Keyspace#cache_keynow requires anauth:discriminator for the response-cache family and refuses to build a key without one, so a master-key body and a session-token body can no longer land under the same key by accident. A non-GET write now invalidates every auth variant of a resource in one scoped pattern instead of only the variants the process has already seen. See CHANGELOG.md - 5.7.0: Shared identity and role planes.
Parse::Cache::ScopedView#identityand#roles, reached throughclient.sdk_cache, returnParse::Cache::SubCacheplanes for the client's authorization context, so every worker resolves a session token or role closure against one shared backend instead of its own in-process cache. Each plane invalidates by per-subject generation counter and plane-wide epoch rather than needing to enumerate entries it cannot name. See CHANGELOG.md - 5.7.0: Authorization becomes a client-owned module, not an Atlas Search internal.
Parse::Authorizationnow owns session-token resolution and role-closure expansion.client.authorizationreturns aParse::Authorization::Context, one perParse::Client, so two clients addressing two Parse applications no longer share one identity cache and one role cache, and a mongo-direct query with no$searchanywhere in it no longer resolves identity through the Atlas Search namespace.Parse::AtlasSearch.session_cache=,.role_cache=, andParse::AtlasSearch::Sessionremain as deprecated aliases for the default client's context, slated for removal in 6.0. See CHANGELOG.md - 5.7.0: Mongo-direct reads stay bound to the authorizing client.
Parse::MongoDB.verify_client!rejects a direct read when its authorization client belongs to a different Parse application than the process-global MongoDB connection. Direct-query entry points acceptclient:and carry it through authorization and collection binding. See CHANGELOG.md - 5.7.0: Effective access decisions for users and roles.
Parse::Access.check,Parse::Access::Decision, and thecan_read?/can_write?/can_delete?helpers combine object ACLs with class-level permissions and inherited roles. Unknown evidence fails closed, and the eventual Parse Server request remains authoritative. See CHANGELOG.md - 5.7.0: Cache invalidation no longer depends on application discipline.
Parse::Cache::Invalidationregisters webhook triggers on_Role,_User, and_Session(after_save/after_delete/after_logout) that keep the identity and role planes honest for writes from any client, not only the app's own logout and role-mutation code paths. Installs alongside the keyspace; disable withcache_invalidation_hooks: false. See CHANGELOG.md - 5.7.0: Optional read of Parse Server's own role cache.
Parse::Cache::UpstreamRolescan read the<appId>:role:<userId>closure Parse Server already wrote for itself. Role resolution does not consume it: the SDK still computes its own closure, and the only built-in integration iscompare_upstream_roles, which emits aparse.cache.role_compareevent so the two can be reconciled before anything depends on the upstream value. Callroles_fordirectly to use it. Strictly read-only, degrades to a miss on any anomaly, andParse::Cache::Redis#verify_upstream_isolation!reports whether the two Redis endpoints share one database. See CHANGELOG.md
See CHANGELOG.md for the full 5.7 entry, including behavior notes and a complete setup example.
What's new in 5.6
- 5.6.0: Voyage embeddings reach the Atlas endpoint, video, and streamed media. The Voyage provider now targets MongoDB's Atlas Embedding and Reranking API as well as Voyage's own; an Atlas-prefixed key routes automatically, or pass
endpoint: :atlas/:voyageexplicitly. Addsvoyage-3.5,voyage-3.5-lite,voyage-code-2, andvoyage-multimodal-3.5, plusembed_video.Parse::Embeddings::MediaFilestreams local image and video uploads into the request body in fixed-size chunks instead of buffering them, bounding peak memory regardless of file size. See CHANGELOG.md - 5.6.0 (Breaking): Voyage's default model moves to
voyage-3.5.voyage-3is retired from the Atlas endpoint, so the old default failed at construction for an Atlas key with no model named. Code relying on the previous default should pinmodel: "voyage-3"to keep existing embeddings valid, or re-embed againstvoyage-3.5. See CHANGELOG.md - 5.6.0: Vector search no longer underfills.
$vectorSearchapplied itslimitbefore the SDK's ACL match,protectedFieldsredaction, and pointer filtering, so a scoped caller who could read 2 of the top 10 documents got 2 results even when hundreds of readable matches existed further down the ranking. The search now requests a wider internal candidate window, applies every enforcement layer, and only then trims to the requested count; acandidate_limit:option tunes the window, and aparse.vector_search.searchnotification reports attrition. Hybrid search's own candidate-window and fusion-depth bugs are fixed the same way. See CHANGELOG.md - 5.6.0:
:vectorproperties are checked against the provider actually registered. A property's declaredmodel:was recorded but never enforced, so swapping the registered provider's model could silently mix incomparable vectors into one index with no error.Parse::Embeddings::BindingAuditnow checksmodel:anddimensions:before any request, on both the managed-write and query-embedding paths, and fails closed if the provider cannot report either.Parse::Embeddings::BindingAudit.audit_all!checks every declared binding at once for a boot-time or CI gate. See CHANGELOG.md - 5.6.0: Corrected the model dimension table. The entire Voyage v4 family defaults to 1024;
voyage-4-large's 2048 andvoyage-4-lite's 512 were recorded as native widths when they are Matryoshka options reached only by requesting them, which made both models raiseParse::Embeddings::InvalidResponseErroron every call. Any width on a model's Matryoshka ladder is now accepted. See CHANGELOG.md
See CHANGELOG.md for the full 5.6 entry.
What's new in 5.5
- 5.5.0 — Multimodal bytes-fetch with magic-byte MIME verification —
embed_image ..., source: :byteshas the SDK download an image itself through theParse::File.safe_open_urlSSRF primitive, verify the content by magic-byte sniff (theContent-Typeheader is never consulted — a.jpgURL serving HTML is refused), cross-check the URL extension, enforce aParse::Embeddings.allowed_image_typesallowlist, strip EXIF/XMP metadata by default (JPEG APP1, PNGeXIf, WebPEXIF/XMPchunks; opt out withexif_strip: false), and forward the verified bytes to Voyage/Cohere as a base64 data URI. No provider-side URL fetch occurs, so thetrust_provider_url_fetchsentinel is not required — the host allowlist still applies. See CHANGELOG.md - 5.5.0 — Embedding-model migration tooling —
Class.reembed!(only_stale: true)bulk re-embeds rows through the current provider/model (resumable; skips rows already current), driven by the new auto-declared<into>_metaprovenance sibling ({provider, model, dimensions, modality, embedded_at}, stamped on every recompute).Parse::Embeddings::BatchEmbedderadds batch-level requests-per-minute pacing and exponential backoff for bulk jobs;Parse::Embeddings::Cache.enable!adds an opt-in query-embed cache keyed by(provider, model, input_type, input-hash)so repeated identical queries skip the provider round-trip. See CHANGELOG.md - 5.5.0 — Vector index drift detection — on first auto-discovered use of an Atlas vectorSearch index, the SDK verifies the deployed index's
numDimensions/similarityagainst the:vectorproperty declaration and confirms a registeredagent_tenant_scopefield is covered as atype: "filter"path. Policy viaParse::VectorSearch.index_drift_policy(:warndefault /:raise/:ignore).Parse::Schema::SearchIndexMigratornow auto-includes the tenant-scope field invectorSearchdeclarations, so newly created indexes support tenant-scoped pre-filtering out of the box. See CHANGELOG.md - 5.5.0 — Retrieval spend-cap and filter hardening — the per-tenant embedding spend cap now covers every query-embed path (
find_similar(text:),hybrid_search(text:),Parse::Retrieval.retrieve), not just thesemantic_searchagent tool; tenant identity resolves through the ambientParse.with_cache_tenantscope. Caller-supplied retrieval filters now translate Parse pointer values to storage form ({ owner: user }→{ "_p_owner" => "_User$id" }), so pointer filters match rows instead of silently matching nothing. See CHANGELOG.md
What's new in 5.4
- 5.4.0 — Hybrid search + reranking for RAG —
Class.hybrid_search(text:, lexical:, vector:, k:, fusion:)fuses a lexical Atlas Search branch with a$vectorSearchbranch using reciprocal-rank fusion (RRF): lexical search nails exact tokens (codes, proper nouns), vector search nails paraphrase, and fusing the two beats either alone. Each branch enforces ACL/CLP independently before fusion (no separate hydration fetch to secure); results carry#hybrid_score/#hybrid_ranks.Parse::VectorSearch::Hybrid.rank_fusion_supported?detects Atlas 8.0+ native$rankFusionby a cached behavioural probe (native execution is opt-in; client-side RRF is the always-enforced default).Parse::Retrieval::Rerankeradds cross-encoder reranking (Reranker::Cohereover/v2/rerank, plus a deterministicReranker::Fixture), wired intoParse::Retrieval.retrieve(hybrid:, rerank:).Parse::Embeddings::SpendCapadds an opt-in per-tenant embedding token cap (hard-refuse) at thesemantic_searchagent-tool boundary. See CHANGELOG.md anddocs/atlas_vector_search_guide.md - 5.4.0 — Vector backfill, visibility, and webhook redaction —
Class.embed_pending!backfills embeddings for records whose managed:vectorfield is null (objectId-cursor pagination);Parse::Object#compute_embedding!forces an in-place recompute without a save;vector_visibility :owner_only | :publiccontrols whether a class's vectors appear inas_jsonby default; and webhook trigger payloads now strip declared:vectorcolumns by default (a:publicclass keeps them). See CHANGELOG.md - 5.4.0 — TOTP multi-factor auth works end to end — the
Parse::UserMFA lifecycle is now fully functional and exercised against a real MFA-enabled Parse Server.setup_mfa!(secret:, token:)enrolls TOTP and returns recovery codes;Parse::User.login_with_mfa(user, pass, code)completes a second-factor login;mfa_enabled?/mfa_statusreport enrollment after an ordinary fetch — the SDK strips the raw TOTP secret and recovery codes that Parse Server returns inauthDatabut preserves a leak-safe{status: "enabled"}projection so the status reads correctly without exposing the secret;disable_mfa!(current_token:)turns MFA off after re-validating the current code (a wrong code raisesParse::MFA::VerificationError), anddisable_mfa_master_key!(authorized_by:)is the operator override. Each MFA write also no longer raises an internal argument error before reaching the server. Interactively,rake client:consolenow prompts for a TOTP / recovery code (or readsPARSE_LOGIN_MFA) when logging into an enrolled account. See CHANGELOG.md - 5.4.0 — Request email-address verification —
Parse::User.request_email_verification(email)and the instanceParse::User#request_email_verificationask Parse Server to (re)send the verification email for a registered, not-yet-verified user, mirroringrequest_password_reset(per-email rate limiting, Boolean return). Requires a server email adapter withverifyUserEmailsenabled. See CHANGELOG.md - 5.4.0 — Audience hash queries persist correctly —
Parse::Audience#queryis now stored as a JSON string on the wire to match Parse Server's_Audience.querycolumn type, so saving an audience with aHashquery no longer fails the server schema check. The public API is unchanged — assign aHash, read aHashback. See CHANGELOG.md - 5.4.0 — Faster AtlasSearch role-cache expiry —
Parse::AtlasSearchrole_cache_ttlnow defaults to 30 seconds (was 120) so a role grant or revoke is reflected in$searchACL decisions sooner, at the cost of slightly more frequent role lookups. See CHANGELOG.md
What's new in 5.3
- 5.3.0 — Run webhook handlers (and clients) as the calling user — Parse Server embeds the caller's live session token in every trigger webhook fired by a logged-in user. A handler can now opt in to acting on the server as that user — full ACL/CLP/
protectedFieldsenforcement, no master key.payload.session_tokenexposes the captured token (nilfor master-key requests; still scrubbed frompayload.user/payload.object/as_json/logs);payload.user_agentreturns a client-modeParse::Agent, andpayload.user_clienta non-masterParse::Clientwith the token bound so even raw REST calls authorize as the user. The same user-scoped client is available client-side viaParse::User#session_clientand theParse::Client#become(token)primitive, withParse::Client#with_session { … }for block scoping. Backed by a newParse::Client.new(session_token:)option. See Acting as the calling user - 5.3.0 — Pluralized class-name aliases — referencing the plural form of a model constant now resolves to that class, so
Posts.where(:author.eq => user).countworks for a classPost. The alias is created lazily on first reference and is the same class object, so every class method (query/where,count,find,all, scopes) works through it andPosts.parse_classstill returns"Post". Because it is the same class it adds noParse::Object.descendantsentry and never registers a separate Parse schema class. Classes whose name already ends insare skipped by the automatic path; non-Parse plurals and typos fall through to a normalNameError. On by default — opt out withParse.pluralized_aliases = false(orPARSE_PLURALIZED_ALIASES=false). For a custom plural, ans-ending class, or a namespaced model, callpluralized_alias!in the class body. See Pluralized class-name aliases - 5.3.0 — afterSave create reports changed fields; force_ssl-consistent file equality — a trigger handler that keys off dirty tracking now sees every field on an
afterSavecreate, symmetric withafterSaveupdates: the built object marks each populated data property changed (fromnil) whilecreatedAt/updatedAt/ACL/objectIdstay clean and object readability,new?, andexisted?are unchanged — so a handler that builds a payload from*_changed?/changesworks uniformly across create and update. Separately,Parse::File#==now compares both files through the canonicalurlreader, so two files at the same location compare equal regardless ofParse::File.force_ssl(anda == bmatchesb == a), and a re-signed URL for the same object no longer reads as a change. See Cloud Code Triggers