{"id":"featureform-enrichmcp","name":"enrichmcp","homepage":"https://featureform.com","repo_url":"https://github.com/featureform/enrichmcp","category":"ai-ml","subcategories":[],"tags":["mcp","ai-agents","pydantic","orm","python","tooling","data-model","semantic-layer","validation","pagination","sse-http"],"what_it_does":"EnrichMCP is a Python framework for building MCP (Model Context Protocol) servers that expose a semantic, type-safe data layer. It generates typed/discoverable tools from data models (e.g., SQLAlchemy models) or user-defined Pydantic schemas, supports relationships, validation, pagination, caching/context, and can serve over multiple transports (stdio by default, plus streamable HTTP).","use_cases":["Expose database-backed or API-backed domain data as MCP tools for AI agents","Provide schema discovery and navigable relationships between entities (ORM-like semantics for agents)","Build CRUD and query endpoints with Pydantic-validated inputs/outputs","Add agent-facing pagination, parameter metadata/hints, and request-scoped caching","Add server-side LLM sampling via MCP sampling"],"not_for":["Direct turnkey access to a hosted service (it is a framework/library, not a managed API)","Use cases that require strict REST/OpenAPI client generation without implementing an MCP client/transport setup","Scenarios where transport security, auth enforcement, and resource-level authorization are fully absent (you must implement/ensure these in your app)"],"best_when":"You want AI agents to reliably explore and query your structured data model with strong typing/validation and relationship navigation, and you’re comfortable running an MCP server in your own environment.","avoid_when":"You need a fully managed, turnkey SaaS with guaranteed auth/rate limiting features out-of-the-box, or you cannot run/host the MCP server code.","alternatives":["Use MCP directly with a custom server implementation (without EnrichMCP’s semantic/ORM layer)","Build a traditional API + OpenAPI schema and rely on tool/function calling with your own validation layer","Use an agent framework that provides tool schemas from OpenAPI/GraphQL introspection"],"af_score":60.5,"security_score":52.8,"reliability_score":38.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:26:19.240131+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":false,"sdk_languages":["Python"],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Application-level authorization via MCP client context (e.g., ctx.get('authenticated_user_id'))"],"oauth":false,"scopes":false,"notes":"Auth is described as part of the 'control layer' via context provided by the MCP client; README examples show authorization checks in resolvers, but no standardized auth scheme (API keys/OAuth scopes) is specified in the provided materials."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing/hosted service details are provided; costs would be driven by your infrastructure and any downstream LLM usage if using server-side sampling."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":60.5,"security_score":52.8,"reliability_score":38.8,"mcp_server_quality":78.0,"documentation_accuracy":80.0,"error_message_quality":0.0,"error_message_notes":null,"auth_complexity":60.0,"rate_limit_clarity":20.0,"tls_enforcement":55.0,"auth_strength":45.0,"scope_granularity":35.0,"dependency_hygiene":70.0,"secret_handling":65.0,"security_notes":"README emphasizes passing authentication/authorization-related context from the MCP client and performing permission checks in resolvers, but does not document a built-in auth mechanism, scopes, or a standardized rate-limit strategy. TLS enforcement for the 'streamable-http' transport is not described explicitly. Secrets management guidance is not included in the provided materials; ensure env/vault usage and avoid logging sensitive values. Dependency list is relatively small and modern (pydantic, fastmcp, typing-extensions), but no vulnerability/CVE status is provided in the data here.","uptime_documented":0.0,"version_stability":55.0,"breaking_changes_history":50.0,"error_recovery":50.0,"idempotency_support":"false","idempotency_notes":"CRUD/idempotency semantics are not clearly specified in the provided README; idempotency would depend on how your resolvers and backend are implemented.","pagination_style":"cursorless-page-number-with-page_size","retry_guidance_documented":false,"known_agent_gotchas":["If using streamable HTTP transport, ensure your MCP client/agent supports the selected transport and streaming behavior.","Authorization is not automatic in the framework materials shown; resolvers should enforce permissions using context provided by the MCP client.","When enabling server-side LLM sampling, ensure you understand client-side billing/LLM selection behavior and constrain tool usage via MCP sampling options if supported."]}}