Educational repository containing LangChain, LangGraph, and MCP server tutorials with tool examples
This repository is a tutorial collection covering LangChain, LangGraph, and MCP frameworks, not a cohesive MCP server. The codebase contains fragments of multiple implementations (Python LangGraph tools, C# SSE/STDIO MCP servers) but no complete, production-grade MCP server. Tool definitions exist across three language ecosystems with inconsistent quality. Many tools lack descriptions or have generic ones. Nine tools total, but critical metadata is absent or incomplete. Python tools (add, subtract, multiply) have proper docstrings but are trivial. C# tools show MCP attribute binding but lack detailed parameter descriptions. Duplicate tool names (AddTwoNumbers, SayHello) indicate incomplete design. No evidence of output schemas, error handling, pagination, or authentication patterns. This appears to be educational material, not a deployable MCP server.
Adds the Two Number
Adds the Two Number
Fetches a collection of jokes from the specified category. Valid categories include 'Programming', 'Misc', and 'Christmas'. If no amount is specified, 10 jokes are returned by default.
Returns the GitHub repository URL constructed from the specified username and repository name.
Greets the User
Add two integers.
Multiply two integers.
Greets the User
Duplicate tool names (AddTwoNumbers appears twice, SayHello/sayhello appear twice). This violates the single-responsibility principle and confuses LLM tool selection.
Inconsistent naming conventions across language boundaries. Python tools use lowercase (add, subtract), C# tools use PascalCase (AddTwoNumbers, GetRepository). MCP clients expect consistent kebab-case or snake_case per spec.
Tool names lack action verbs or are generic. 'sayhello' and 'SayHello' do not clearly convey an action (prefer 'greet_user' or 'echo_greeting'). 'AddTwoNumbers' is verbose; 'add' is clear but vague in a mixed toolkit.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 47 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 33 | - | v1 |
Subtract two integers.
No output schemas documented. Tools like GetRepository and GetJoke have no documented return type structure. LLMs cannot predict output shape and must infer from examples or invent expectations.
Trivial tool descriptions. 'Greets the User' (sayhello, SayHello) is under 20 characters and provides no context for LLM selection. 'Adds the Two Number' is grammatically incorrect and unclear.
No parameter descriptions in multiple tools. GetJoke's 'amountofjokes' parameter lacks format constraints (is 10 a default cap? Is there a min/max?). No LLM guidance on valid ranges.
No error handling or recovery guidance. GetJoke catches exceptions and returns 'Error', an opaque string. LLMs receive no signal about retry eligibility, categorization, or remediation steps.
No pagination or result limits. GetJoke accepts arbitrary 'amountofjokes' with no server-side cap. A malicious or confused LLM could request 1M jokes, exhausting context and API quota.
Codebase is not a unified MCP server. It contains three separate implementations: Python LangGraph (tools.py), C# SSE server (MCPTutorial.SSEServer), C# STDIO server (MCPTutorial.Server). No evidence of a single, deployable MCP server entrypoint.
C# tools use custom MCP attributes ([McpServerTool], [McpTool]) without visible schema registration logic. Tool definitions are inferred from method signatures and attributes rather than explicit registration.