1
1
# server.py
2
+ import logging
3
+ import os
4
+ import sys
5
+ from datetime import datetime
2
6
from mcp .server .fastmcp import FastMCP
3
7
import requests
4
8
9
+ # Configure logging
10
+ log_dir = "logs"
11
+ if not os .path .exists (log_dir ):
12
+ os .makedirs (log_dir )
13
+
14
+ log_file = os .path .join (log_dir , f"server_{ datetime .now ().strftime ('%Y%m%d' )} .log" )
15
+
16
+ # Create formatters
17
+ formatter = logging .Formatter ('%(asctime)s - %(levelname)s - %(message)s' )
18
+
19
+ # Create handlers
20
+ file_handler = logging .FileHandler (log_file )
21
+ file_handler .setFormatter (formatter )
22
+
23
+ # Configure root logger
24
+ logging .basicConfig (
25
+ level = logging .INFO ,
26
+ format = '%(asctime)s - %(levelname)s - %(message)s' ,
27
+ handlers = [file_handler ]
28
+ )
29
+
30
+ # Get logger
31
+ logger = logging .getLogger (__name__ )
32
+
33
+ # Test log message
34
+ logger .info ("=== Logging system initialized ===" )
35
+
5
36
# Create an MCP server
6
37
mcp = FastMCP ("Demo" )
7
38
10
41
@mcp .tool ()
11
42
def add (a : int , b : int ) -> int :
12
43
"""Add two numbers"""
13
- return a + b
44
+ logger .info (f"Function 'add' called with parameters: a={ a } , b={ b } " )
45
+ result = a + b
46
+ logger .info (f"Function 'add' returned: { result } " )
47
+ return result
14
48
15
49
16
50
# Add a dynamic greeting resource
17
51
@mcp .resource ("greeting://{name}" )
18
52
def get_greeting (name : str ) -> str :
19
53
"""Get a personalized greeting"""
20
- return f"Hello, { name } !"
54
+ logger .info (f"Function 'get_greeting' called with parameter: name={ name } " )
55
+ result = f"Hello, { name } !"
56
+ logger .info (f"Function 'get_greeting' returned: { result } " )
57
+ return result
21
58
22
59
@mcp .tool ()
23
- def request_wxread_gongzhonghao_articles (book_id : str ,token : str ) -> str :
60
+ def request_wxread_gongzhonghao_articles (book_id : str , token : str ) -> str :
24
61
"""请求微信阅读公众号文章
25
62
真实请求头参考:
26
63
@@ -38,6 +75,8 @@ def request_wxread_gongzhonghao_articles(book_id: str,token: str) -> str:
38
75
Accept-Encoding: gzip
39
76
40
77
"""
78
+ logger .info (f"Function 'request_wxread_gongzhonghao_articles' called with parameters: book_id={ book_id } , token={ '*' * len (token ) if token else 'None' } " )
79
+
41
80
host = "https://i.weread.qq.com"
42
81
43
82
headers = {
@@ -68,11 +107,18 @@ def request_wxread_gongzhonghao_articles(book_id: str,token: str) -> str:
68
107
params = params
69
108
)
70
109
response .raise_for_status ()
71
- return response .text
110
+ result = response .text
111
+ logger .info (f"Function 'request_wxread_gongzhonghao_articles' returned successfully with response length: { len (result )} ; content: { result [:100 ]} " )
112
+ return result
72
113
except requests .exceptions .RequestException as e :
73
- return f"Error fetching articles: { str (e )} "
114
+ error_msg = f"Error fetching articles: { str (e )} "
115
+ logger .error (error_msg )
116
+ return error_msg
74
117
75
118
76
119
def get_wxread_token ():
77
120
"""获取微信阅读token"""
78
- return "fcMfiJf6"
121
+ logger .info ("Function 'get_wxread_token' called" )
122
+ token = "fcMfiJf6"
123
+ logger .info (f"Function 'get_wxread_token' returned token: { '*' * len (token )} " )
124
+ return token
0 commit comments