AI Agent Pipeline using LangChain, LangGraph, and LangSmith for document processing and question answering with weather integration
This is not an MCP server, it is a LangGraph application without MCP protocol implementation. The source code shows a Python CLI application that uses LangChain, LangGraph, and vector services internally, but there is NO evidence of MCP server registration, transport binding, or protocol compliance. Tools are defined as LangGraph nodes within the application, not exposed as MCP tools. The project has 18 tool-like functions but they are application components, not MCP protocol-compliant tool definitions. No MCP server interface, no tool schema registration via MCP, no protocol transport. Tool descriptions exist but are brief (10-50 chars), schemas are minimal or inferred from LangChain/LangGraph node signatures rather than formal JSON Schema declarations, and there is no MCP-compliant error handling or response structure. This repository should not be scored as an MCP server; it is a LangGraph application that could potentially be wrapped as an MCP server but currently is not.
Add documents to the vector database with full error handling
Node to classify user intent (weather, document, or general)
Safely extract text from PDF with comprehensive error handling
Node to fetch weather data for a given city
Format weather data into a human-readable string
Generate embeddings for a list of texts with error handling
Node to generate final response using LLM based on intent and retrieved context
NOT AN MCP SERVER: This is a LangGraph application, not an MCP protocol-compliant server. No MCP server registration, transport binding, or tool schema exported via MCP protocol. Tools are internal LangGraph nodes, not MCP tools.
Tool schemas are minimal or inferred. No formal JSON Schema with property-level type definitions visible. get_collection_info and reset_collection have empty input schemas (no parameters declared), but schema definition is not visible in source code.
Descriptions are brief (40-50 chars average) and lack context. Missing details on WHEN to use each tool, prerequisites, and side effects. Example: 'generate_response' does not explain it modifies state or returns structured output.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Get collection metadata with error handling
Fetch weather data for a given city
Check service health with detailed diagnostics
Process multiple PDFs with fault tolerance
Full PDF processing pipeline with error recovery
Process a user query through the LangGraph pipeline with intent classification, data retrieval, and response generation
Reset the collection with proper cleanup
Node to retrieve relevant documents from vector database using similarity search
Perform similarity search with comprehensive error handling
Split text into chunks with enhanced metadata handling
Validate PDF file path and extension
Destructive operations (reset_collection, delete operations) lack confirmation/dry-run patterns. No indication that these are irreversible or require user confirmation.
Error handling not documented. No guidance on retryability, error codes, or recovery paths. Descriptions do not indicate what the LLM should do if a call fails.
Parameter descriptions lack constraints. No enums for multi-value fields, no min/max for numeric inputs, no format guidance for strings. Example: 'n_results' has no stated bounds (what is maximum?).
No output schema documented. LLMs cannot predict what fields or structure these tools return. Responses are unspecified.
Tool composition issues: generate_response takes weather_data and retrieved_docs as parameters, but earlier tools only emit intent. No clear data flow or chaining guidance.
No security documentation. Credentials handling, permission checks, audit trails, and secret injection patterns not mentioned. OpenAI/LangSmith API keys assumed in environment without guidance.
Generic naming patterns used: 'process_query', 'process_pdf', 'process_multiple_pdfs' all use 'process' (generic verb). Should be more specific (e.g., 'execute_intent_pipeline', 'parse_pdf_to_chunks', 'batch_parse_pdfs').